Sroto: Protocol Buffers Evolved
In my previous post I argued that the existing tools available to us as developers largely either optimize for developer velocity or scale, particularly when build backend applications. I postulate that if we had a framework that derived as much as possible from a schema definition plus associated metadata, that framework could optimize for both. To enable this, we first need to have a better way to write schemas.
Introducing sroto, a library and associated command tool to generate .proto
files (and thus protobuf schema definitions) from jsonnet, a data templating language.
This basic problem with the way we approach schemas is:
- A schema definition is just data.
- Writing data is annoying and we want to write code.
- So we use the application code to write the data.
- Whoops, now we can’t untangle it and therefore scalability is hard.
So let’s break this cycle.