What motivates or drives people to contribute to open source? What prevents people from doing so? What is required to sustain a healthy community?

I think the number one motivation for people to contribute to open source is simply a passion for the subject matter. While reputation, recognition, and ethics play key roles, I think open source development leans more heavily on the “we do this because we like doing it” side, rather than the “we do this for the money/fame/power/glory”. While reputation is certaintly valuable, there’s a balance between reputation/recognition and ego; ESR mentions that the hacker culture distrusts and despises egotism, and that most hackers basically avoid sounding egotistic at every turn. I think it’s great to be humble and not be a stuck-up Linux supremacist, but I can also be proud of my own works and accomplishments.

Most people don’t contribute to open source because they have no idea what open source is. The number of people on Earth that know about open source software must be less than 5%. Using Google Trends to compare “open source” with “cats” shows that cats are at least 10 times more popular than open source. Only 2/3rds of the global population even has access to the internet. Now, of the less than 5% of people who have even heard of open source, a good number probably don’t know how to code. My mom knows what open source is, but she doesn’t know how to code.

From the 1% of people who know what open source is and can code, I think contributing can be daunting because it is hard to learn something new. A person’s experience with open source can also depend greatly on the community they are trying to contribute to. You may be a great programmer and contribute the right way, but if the community is rude, they may make you feel unwelcome. Conversely, you may know little about programming, but if the members of the community are patient and kind, they can make a significant positive impact.

A healthy community needs responsive users. It doesn’t necessarily need active ones; a project can exist without constant updates. It just needs to provide support. New features aren’t always needed; sometimes life-support is sufficient. There are so many Python packages out there made by brilliant researchers for papers, and people use them in their projects, but they never get continued support, so a million PyTorch deprecation warnings show up, and Numpy v1 vs v2 compilation conflicts ruin code. But perhaps that’s just the natural progression of 90% of open source software. It’s inevitable.