GithubHelp home page GithubHelp logo

davalpargal / stencil Goto Github PK

View Code? Open in Web Editor NEW

This project forked from raystack/stencil

0.0 0.0 0.0 1.06 MB

Stencil is a Protobuf schema registry that enables you to create, maintain and consume protobuf messages and APIs dynamically, efficiently, and reliably.

Home Page: https://odpf.gitbook.io/stencil/

License: Apache License 2.0

Java 20.99% Shell 2.08% Go 70.30% Dockerfile 0.16% Makefile 0.22% JavaScript 6.24%

stencil's Introduction

Stencil

test workflow release workflow License Version

Stencil is dynamic schema registry for protobuf. Protobuf is a Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data. The challenge with using generated source code from protobuf is that for every change in proto definition, it requires to recompile dependent services/packages. This approach works for most applications but it's difficult for general purpose applications that needs to operate on arbitrary protobuf schemas. Stencil enables the developers to specifically tackle this problem.

To work with arbitrary proto schema, application need to load proto schema definition at runtime. Protobuf allows you to define a whole proto file using google.protobuf.FileDescriptorProto. A google.protobuf.FileDescriptorSet contains list of FileDescriptorProtos. protoc can generate descriptorset file from proto files. Stencil heavily make use of this feature to update proto schemas in runtime.

Key Features

Discover why users choose Stencil as their main schema registry

  • Version history Stencil stores versioned history of proto descriptor file on specified namespace and name
  • Backward compatibility enforce backward compatability check on upload by default
  • Flexbility ability to skip some of the backward compatability checks while upload
  • Descriptor fetch ability to download proto descriptor files
  • Metadata provides metadata API to retrieve latest version number given a name and namespace
  • Clients in multiple languages Stencil provides clients in GO, JAVA, JS languages to interact with Stencil server and deserialize messages using dynamic schema

Usage

Explore the following resources to get started with Stencil:

  • Documentation provides guidance on using stencil.
  • Server provides details on getting started with stencil server.
  • Clients provides reference to supported stencil clients.

Clients

Contribute

Development of Stencil happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving stencil.

Read our contributing guide to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to stencil.

To help you get your feet wet and get you familiar with our contribution process, we have a list of good first issues that contain bugs which have a relatively limited scope. This is a great place to get started.

Credits

This project exists thanks to all the contributors.

License

Stencil is Apache 2.0 licensed.

stencil's People

Contributors

akarshsatija avatar chakravarthyvp avatar dependabot[bot] avatar h4rikris avatar kushsharma avatar mauliksoneji avatar ramey avatar ravisuhag avatar riteeksrivastav avatar rohilsurana avatar sravankorumilli avatar stewartjingga avatar zakiindra avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.