Social architecture is the design of an environment such that participants in the environment will behave in a certain way and help achieve the goals of the environment. For example, a cafeteria can be designed in a certain way so that children will interact with a larger variety of children than they would otherwise. This achieves the goal of the cafeteria to be a social communal eating area. Social architecture works in cyberspace, too. In Social Architecture – Building On-line Communities, Pieter Hintjens provides a framework for online communities designed so that the participants will generate profitable and high-quality software.
Pieter Hintjens is a household name in the open-source software community. He was named one of the “50 most influental people in IP” by Managing Intellectual Property Magazine and was a strong advocate against software patents. He is most known for his writings and for the free software his communities developed and released. Two notable ones are the ZeroMQ high performance messaging library and the Xitami web server. Like Hintjens’ software projects, the book is itself open source.
Hintjens’ theories on open source communities are based on the premise that a collective group of people is going to produce better results than a small group of experts. The ZeroMQ software community is his application of this theory and has been developing the ZeroMQ library according to the processes outlined in Social Architecture successfully for many years. The idea that a large, varied collective is smarter than a small group of experts is an interesting theory that has been tested in a few other places, most notably in NPR’s Planet Money podcast where the internet collectively guessed the weight of a cow from a picture to within 6% accuracy.
The book is broken up into six sections each covering different parts of the system Hintjens set up with the ZeroMQ community and how to apply the principles to future communities the reader may start. The first couple sections contain general guidelines for high-performing open-source software communities, a list of tools from Hintjens’ social architecture toolbox, and explanations of each tool. For example, one tool is the mission. Hintjens believed that the best communities will have a strong, clear, ultra-ambitous mission. For example, Reddit’s mission is to be “the front page of the internet.” A mission like that will attract good people and provide a clear goal for them to work towards. These sections has a lot of good information, even for seasoned open-source veterans.
Other sections include a thorough examination of how to license the software. Hintjens recommends GPL or a similar license. The number one thing to make sure is that if someone forks your project and improves it you can get the benefit of the improvements. This prevents a takeover of your project. For example, if your project is licensed under the MIT license someone can fork your project, improve it, keep the improvements closed source, and run you out of business. If the project had been licensed under GPL, it would have been simple to merge any improvements made back into the original project, thus maintaining the dominance of the original project. The book’s licensing sections are lively and well-argued. Hintjens will have you convinced GPL and its derivatives are the best software licenses.
There is one section in the book covering the technical details of the Collective Code Construction Contract (C4) in depth. The C4 is a set of technical and procedural rules for contributors. They help control the chaos of a large open-source project, and you are encouraged to use them when making your own open-source software communities. Having worked on many software projects before, I believe there is no one-size-fits-all way of managing the processes and contributors, but C4 has been very successful for Hintjen’s projects.
Overall, the book was a very worthwhile read. It touches on a lot of interesting subjects and there will be something useful in there for anyone that works with and around open-source. There isn’t going to be much in there for the enterprise closed-source programmer to use in their daily lives, but the book may pinpoint some shortcomings in their software development processes and inspire a yearning to do some open-source work.