A contribution by Martien van Steenbergen, in favour of “Protocols over API”.
Martien van Steenbergen:
“PROTOCOL OVER API—in a scale-free, distributed, decentralized peer-to-peer system, interoperability and exchange of information and meaning independent of technology, programming language and behaviour is key.
Interoperability means consistency across platforms, applications, and programming languages. Forces:
* A protocol determines how an application will be accessed, owned and created by a large group and defined outside software.
* An API is defined by a small group, owned by a small group, and closely tied to the software.
* APIs break over time in ways protocols don’t. Classes of API breakages:
o unintended consequences;
o underestimating the value of backward compatibility; and
o overestimating the coolness factor of new features.
A question that a developer should ask him/herself is how much control can and should be seeded from the application designers to the pool of users?
What we’ve learned from network externalties is that the more this is shared, the more it scales.
Therefore, design an elegant open source and scale-free protocol, create a reference implementation and a corresponding compatibility test suite.
Opting for PROTOCOL OVER API fosters development of a flourishing number of implementations in various programming languages, while guarantueeing interoperability and compatibility. Design for MAXIMAL COHESION, MINIMAL COUPLING.
Bernard Lietaer uses the term ‘utility function’ for monetary systems—gas, water, light, and money— supporting an open, evolvable modular, plugable framework, enabling development of the various functional requirements on demand. I sincerely endorse this approach. Is is the way for a flourishing development of open source platforms like Linux, Apache, MySQL, PHP, Java, WordPress, MediaWiki etc.
Another key success factor is the stewardship of a developer community. A solid yet flexible community process is of utmost importance. Something that must not be underestimated.”