There Are Three Open Source Communities, Not Just One
It is a common understanding that great Open Source projects succeed in large part because they are successful at building Community. It is especially important in the early stage when it is the community largely responsible for traction, adoption, and often technology advantage. I argue that this thinking is a bit simplistic and for an Open Source project to be really successful it needs to have three different, even though sometimes overlapping communities to be thriving – User Community, Contributor Community, and Vendor Community.
User Community
These are people who use the product. Often they do not have the skill or desire to contribute code but it is those folks who can help with spreading the word about your product and providing valuable feedback and it is them who tend to “convert” to become customers providing financial sustainability for the project. User Community tends to be very diverse with some of its members being very passionate about the project and actively promoting it, speaking at conferences, and helping other users online, others can be more passive, just advocating for the project inside their organization.
Contributor Community
These are people who contribute code to the project itself and build tools supporting the project ecosystem. If there is no independent contributor community but all development is done by a single vendor, when this project depends on that vendor’s goodwill and at risk of the vendor choosing to stop contributing to the Open Source Project for any reason, for example changing the license of the project, restricting new development to features only available in the cloud or simply going bankrupt.
Vendor Community
Finally, there is a community of vendors – Companies and Individuals who are making a living from the project ecosystem. They are typically most motivated to support the project doing hard and boring things, which other communities may not be interested in. Multiple vendors also ensure there is a choice for those looking for commercial solutions, rather than creative effective lock-in if there is a single vendor only.
I think PostgreSQL is a great example of a project that has gotten all three communities right – there is a fantastic user community, promoting PostgreSQL as the most wonderful database on every corner. There are people working at many companies contributing to PostgreSQL and there are many PostgreSQL vendors, ranging from hyper-scale Cloud vendors throwing their support behind PostgreSQL to small independent shops ready to provide localized PostgreSQL solutions in virtually every corner of the earth.