One night last weekend I couldn’t sleep because I couldn’t stop thinking about open source projects like StructureMap where the maintainers are burnt out from giving all their time and energy. I recently took over the responsibility of merging pull requests and fielding issues for StructureMap so Jeremy can focus on life issues and his work with FubuMVC. Regardless, it remains one of the most highly used IoC containers for C#.
I had a lot of thoughts rushing through my head about how StructureMap is not alone. There’s way too many projects that die simply because the maintainer is spread too thin. If each one of us contributed just a little bit of time to the open source software that we love, we could prevent hundreds of valuable projects from going stale or dying.
I ended up giving up on sleep and wrote a blog post that stayed on the front page of hacker news for a while. It turns out that there’s a lot of people that would love to give back to these projects but are intimidated in one way or another. I’m not a big fan of speculation, so I decided to throw together a quick survey and sent it out to some peers and coworkers.
It’s a bit of a chicken-and-the-egg problem. For people who either infrequently or never contribute to open source, the one of the largest reasons is that they’re scared that their code won’t be good enough. Many of the friends and coworkers that mentioned this issue to me also realized that the best way for them to get to a level of comfort with their own code is probably to actually work on open source projects. But without working on open source projects, their code isn’t getting better.
The largest response for infrequent contributors was that the code base is too large or intimidating to navigate and learn. The most useful projects out there are large and complex, so this probably won’t change. However, people who often contribute to open source projects tend to have an inclination toward soaking in large code bases. It’s a learned skill that is obtained either by changing jobs every month or by working on open source projects.
Of the people who gave frequently (more than a few times a month) one of the overwhelmingly biggest reasons for continuing to contribute was that they just plain enjoy it. For myself, I know I get a sense of satisfaction, maybe even excitement, when a pull request is accepted. One respondant said that they like making things that their friends and coworkers find useful. I can echo that!
The next biggest reason to contribute was that, when something isn’t working, they crack open the code to see what’s going wrong. A lot of times they fix the problem and end up sending a pull request if they fix it. I think this is the biggest advantages to open source software.
In the past I’ve gotten bit by closed source software (I’m looking at you, Microsoft) where there’s something really simple that’s not working, but I can’t change it because I can’t recompile the source code. Other times I really just want to see what’s going wrong but I can’t look at the code because it’s proprietary.
While talking to lots of people about open source, it became abundantly clear that a lot of people simply don’t know where to start. What would happen if we started a meetup group to pair up and work through code together? It could be a convenient place where the inexperienced could learn from the experienced, and where ideas could spread organically.
I’m in the planning stages of starting such a group where I live in Boulder. If you or someone you know lives or works in Boulder, you should definitely get in contact with me. I’m open to suggestions and advice. I’m also looking for people to help out and companies to sponsor.