Successful open source projects are not just about coming up with an idea and developing the software: To gain traction, projects need focus and a supportive community.
Open source has exploded in the past decade, both in terms of the community size and the number of projects developed. Github alone hosts over 100 million repositories and has more than 50 million registered users. It can be daunting to start a new project when you consider the sheer number of open source projects out there already, but the right approach will help those projects gain adopters and contributors.
Don’t go it alone
Adopting a superhero mentality toward software development is doomed to failure. Some developers with great ideas think that maintaining complete control over a project will create monetisation possibilities in the future, but trying to keep total control is more likely to lead to burnout.
When the software gains traction, and users start complaining that bugs aren’t being fixed, the maintainer can get disheartened. After all, the developer is only trying to deliver something useful to the community. How can people not appreciate that?
The thing about open source software (OSS) is that users often feel disconnected from the actual humans who develop it. They begin to rely on the software and see it as something they use, rather than something that someone has created.
Wes McKinney of Ursa Labs says that the relationship between users and open source software is “complicated by the relationship between users and developers which can also grow quite toxic, particularly the more popular a project becomes. We have found kind of anecdotally that the users stop thinking about the people producing the software as people. They just assume the software exists and it is built to their level of satisfaction.”
Trying to build and maintain open source software alone is both frustrating and completely counterintuitive to the benefits of open source.
Build a community
By connecting with like-minded people and contributing to projects that interest them, developers can build a network of confidantes and friends. They also develop experience and knowledge and, hopefully, a passion for solving problems.
Before starting an open source project of your own, it’s important to contribute to other OSS projects, or at least work with someone who has a vision and has developed successful software projects previously.
Establishing an open governance policy, semantic versioning and Long-Term Support can also add structure to a project. The way Node.js accepts collaborators is a good example of encouraging contributions. Guidelines for becoming a collaborator are clearly defined, and collaborators can nominate other developers to join the project as well. This is the spirit of open source:
To be a good citizen of open source, you cannot be the person who asks for a fix without offering to help or contribute to that fix.
Make the commitment to open source
In the video above, I share my journey to becoming an active open source contributor, including some of the challenges I faced as an open source developer and why I appreciate the open source community.
You’ll hear how my first project failed because of a lack of community — a failure that inspired me to reevaluate my approach and define why I wanted to make software. I found that my niche is improving the performance of Node.js. This work inspired me and helped me connect with other people who were also passionate about improving Node.js performance.
Pino, the fastest logger for Node.js, has been hugely successful, with around four million downloads each month. It is proof of the benefits of building an open source community to contribute to projects and maintain them.
After Pino, my next challenge was to create a web framework for Node.js. From the start, I knew I wanted to build with a collaborator and set up a structure for collaboration. Tomas Della Vedova joined me in starting work on Fastify, an ambitious project focused on improving Node.js performance. The collaboration structure and commitment to community we established have been key to creating a vibrant community around Fastify and building it into a widely adopted web framework for Node.js.
Based on a plugin structure, Fastify currently has 153 available plugins developed by the community. Fourteen collaborators work on Fastify, a testament to the importance of community for successful OSS projects.