Or better yet: Why you’re not getting enough contributions for your open-source project. Anyway, the title doesn’t matter, what matters most is why some good open source projects receive fewer contributions than the others.
As a software engineer, I look into the source code of many open source projects to understand:
- how they’re implemented,
- to fix a bug, or
- to add a new feature.
Interestingly enough, I’m usually faced with a combination of the following issues:
Lack of design documents
It doesn’t matter how big a project is; at the end of the day, it is still a software project and has some sort of design philosophy behind it. For a lot of cases, the philosophy remains in their author’s mind forever. Without a design document, a potential contributor needs to spend more time and effort to understand the design decisions behind a library. Sometimes a potential contributor doesn’t have enough time and skips contributing because of lack of knowledge about the project. The bottom line is that a simple document could fix the problem.
Lack of inline documentation
We, as engineers, often forget to document unclear or less clear logic in our code, and the purpose behind them. As the author, your code may absolutely make sense to you, but does it feel the same for someone new to the codebase?
Poor code readability
Readability of codebase matters and open source projects should be written with readability in mind. Potential contributors start troubleshooting bugs by digging into the building blocks of the project. Imagine if the code was not readable!
Unnecessary complexity
Complexity by itself is not bad, but unnecessary complexities are! Take for example the usage of less-known coding patterns that contribute more to the overall complexity of a project. Over-engineering is a well-known problem in this area. It is always good to think of simple solutions when it comes to open-source projects. Keep in mind that simplicity matters!
Lack of mentorship
Contributions usually start by opening an issue. The issue page is a good place to point potential contributors to useful resources or an area of the codebase that needs to be focused on. Try to increase the bus factor of your project by mentoring potential contributors and supporting them during their early days of contribution.