Language
The keywords “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
By starting with the RFC 2119 language, the C4 text makes very clear its intention to act as a protocol rather than a randomly written set of recommendations. A protocol is a contract between parties that defines the rights and obligations of each party. These can be peers in a network, or they can be strangers working in the same project.
I think C4 is the first time anyone has attempted to codify a
community’s rulebook as a formal and reusable protocol spec. Previously,
our rules were spread out over several wiki pages, and they were quite
specific to libzmq in many ways. But experience
teaches us that the more formal, accurate, and reusable the rules are,
the easier it is for strangers to collaborate up-front. And less
friction means a more scalable community. At the time of C4, we also had
some disagreement in the libzmq project over
precisely what process we were using. Not everyone felt bound by the
same rules. Let’s just say some people felt they had a special status,
which created friction with the rest of the community. Codification made
things clear.
It’s easy to use C4: just host your project on GitHub, get one other person to join, and open the floor to pull requests. In your README, put a link to C4—that’s it. We’ve done this in quite a few projects and it does seem to work. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access