protop is a package manager for protocol buffers with a mission to simplify the development of gRPC (and anything else that uses protocol buffers).

Without protop, there isn't an intuitive way to mantain protobufs, and this often leads to compromises in how we compose projects. With protop, developers can create cleaner projects in collaborative / distributed contexts and keep their protos small, composable, and totally separate from their implementations.

History

The project started with the problem of sharing protobufs between codebases. Inspired by popular mainstream package managers like NPM and Maven as well as prominent tools like Gradle and Git, protop first materialized in mid 2019 as a small proof-of-concept.

Roadmap

We have a rather amibtious roadmap (the only thing missing is a timeline 🤓). Here are some of the next steps for the project in no particular order.

Production Registry

One of the major goals for version 1.0 is to be able to publish packages and retrieve from a dedicated production registry. This would mean that we can provide better solutions for packages such as searching and online documentation.

It won't be any different than a typical package manager from this perspective, with the exception that it will be implemented in gRPC. It also means a more centralized way of retrieving protos that are in the registry simply by version number, a la:

{
"dependencies": {
"awesomelabs/awesome-protos": "1.2.3-alpha"
}
}

Version 1.0 Release

To get to 1.0, we first need to figure out what that means (e.g. does that definitely include the production registry? Do we want broader plugin support first?). It is unclear what the timeline will look like considering the small number of developer on the project at this time (ahem, one), but even creating issues on Github or providing general feedback are both ways of helping us figure out what needs to happen.

Installation Options

This is maybe the most important TODO for now. Currently, installation options are limited to Homebrew and directly from the source. That's not ideal. We know there are other systems and package managers out there, and we want people to be able to use their favorite one to install protop.

External Plugins

What we mean by this are plugins to external tools (like NPM or Gradle) that make protop easier to use in specific contexts. Similar to how the protoc compiler has supporting wrappers for using with NPM, Gradle, Python, etc., we want to provide the same level of ease for developers using protop.

Tutorials

It would be good to have examples in most languages supported by protobufs. We'd also like to demonstrate using protop with popular build tools in those languages. As with the Gradle plugin (which was inspired after the original tutorial was written), these examples could be opportunities to shed light on new features.

Contribute

If you see something that interests you in the roadmap or want to contribute to the existing codebase, protop is always looking for more contributors. The GitHub issues page is another place to find potential work to do. If you still don't see something but want to be involved, feel free to contact us.

View our code of conduct here.

Contact Us

You can reach the protop team at info@protop.io.