Email or username:

Password:

Forgot your password?
David Wilson

I've been re-reading the book "Social Architecture" by the late Peter Hintjens:

hintjens.gitbooks.io/social-ar

It's a great source of inspiration for how to run a successful Free Software project. It explains the Collective Code Construction Contract (aka C4 - rfc.zeromq.org/spec/42/), a protocol for managing projects like ZeroMQ.

One fairly radical guideline of C4 is that almost all patches should be merged! By reducing contributor friction, you will increase their investment in the project.

3 comments
David Wilson

Another interesting point is that the "public contract", or API surface, of the project should not be broken unless the change is universally considered to be the right thing to do:

rfc.zeromq.org/spec/42/#26-evo

This means that the project *should* be free to ship new releases regularly and users can upgrade without concern for behavior or API breaking changes.

The solution is to use new names for the changed "contracts" without changing the existing contracts. Not easy to do, but possible!

Another interesting point is that the "public contract", or API surface, of the project should not be broken unless the change is universally considered to be the right thing to do:

rfc.zeromq.org/spec/42/#26-evo

This means that the project *should* be free to ship new releases regularly and users can upgrade without concern for behavior or API breaking changes.

Christian Tietze

@daviwil ... but also not that hard to do, either! In terms of programming API, leave old function signatures untouched (or append parameters with default values, or overloads with more parameters), for example. That's more or less standard practice, no?

David Wilson

@ctietze Depends on the language, some tolerate parameter and field additions better than others.

Depending on the type of change, might be better to just make a new function entirely and then change the existing function to just be a wrapper for the new function (or functions, if the behavior is getting chopped into smaller pieces).

Definitely possible to do this, just requires a bit more discipline to not break the existing stuff in unexpected ways!

Go Up