buffrs 0.10.0

Modern protobuf package management
Documentation
## Protocol Buffer Rules

This specification defines rules enforced by Buffrs to prevent package
colisions, and provide uniformity and transparency for package consumers.

Rules with the `00XX` code define the package and filesystem layout, where as
rules with a `01XX` code enforce certain protocol buffer definition rules.

### `0000` – Package Name Prefix / Symmetry

Enforces that the Buffrs Package ID is used as the prefix for all protocol
buffer package declarations.

So given a Buffrs Package with the ID `physics` this enforces that the package
only contains protocol buffer package declarations matching
`physics|physics.*`;

A violation would cause type colisions and ambiguity when trying to resolve a
type.

### `0010` – Sub-Package Declaration

Enforces that subpackages are declared through a sensible folder
structure. Given a Buffrs Package with the ID `physics` the protocol buffer
file that declares `package physics.units;` has to be called
`proto/units.proto`.

Nested subpackages are represented / grouped through folders. So if one wants
to declare `package physics.units.temperature;` the respective file must be
located at `proto/units/temperature.proto`.

### `0020` – Root Package Declaration

Enforces that only one file at a time declares the _root_ package.

Namely: If a Buffrs Package with the ID `physics` is defined, the
`proto/physics.proto` must declare the the same package in the protocol buffer
syntax through `package physics;`.