Ask HN: Why do you contribute to open source?
My assumption is that most of the users here either contribute substantially to some open source project, or at least use some open source stuff and take some time to send patches/bugs to the project.
Why do you do it?
If you don't, then what stops you?
Not looking for should/shouldn't arguments here. Just curious about the general psychology of the decision.
What does it feel like? What kind of effect are you looking for? What motivates you to continue?
45 comments
[ 6.0 ms ] story [ 106 ms ] thread10% is writing tools to solve problems I have that aren't adequately solved by existing things.
I definitely don't have a problem with contributing changes, it just doesn't come up very often.
I think OS development helps create the craftsmanship side of software development. We all both mentors and students at the same time - genuinely cool stuff.
Making something you're intending to ship to strangers (or to yourself writing future projects with your tools) forces you to write good documentation (if you want anyone to use it), which in turn forces you to hone your API design skills. If you're having trouble writing the docs for something, you probably haven't adequately solved the problem yet.
I'm not claiming to have done a great job at this on all my projects, but it's a learning process and occasionally my projects find a user base, which keeps me busy, provides new challenges when they find bugs, and if your code's any good it boosts your reputation as a nice side effect.
Every 'serious' line of code I have written has gone straight into my public github, even if I think it could be in future be used as a startup.
I think code belongs in the open, we wouldnt be anywhere near where we are in terms of technology if everyone kept a tight hold on their code, I think every line of code that is released as oss is another brick in a pyramid for others to build on, there isnt a limit to how high it can go.
I don't find that this is just an OSS motive to me though as even in closed-source I'll often find myself in disassemblers (in .NET) or JS files, etc trying to work out how something works so I can provide the best feedback I can.
The other motive is the "I know what it's like" feeling being a coordinator on a few projects myself. I know what it's like to have people say "what doesn't it do X" or "why are you doing Y", it's generally because I don't have time, so if I'm on the other side I am more than happy to try and solve that problem myself. Again this is somewhat related to my first point but really it's a bit more than that. Just because I need a product to do XYZ doesn't mean that that is what everyone wants to do, or what the other contributors are in a position to make it do, so if I've got the skills why don't I tackle it myself?
Lastly there's the exposure aspect of it. As much as I'd love to think that everything I do for OSS is altruistic in nature it's not. I like that when I go for a job I can put on my CV that I've contributed to projects so a prospective employer can see my skills as well as just relying on my word. I like that github handle/ twitter handle/ bitbucket handle/ etc get recognised by members of the community and that people can see my as an authority on what I present about, blog about or yammer mindlessly on twitter about.
Don't know if any people looking for employees do that, but I would hire a developer who writes patches, that are nice and I can browse them, to an open source project, instead of asking him to code a binary tree and insert on it on a technical interview or to read his CV.
Hopefully someday all those CVs will be obsolete, and people will only be employed by their open source contributions, I never liked writing CVs anyway :P
Getting to the point of contributing code to an existing project (usually via submitting a pull request or the like) always felt more intimidating than writing my own small libraries, but I eventually started doing this and I have to admit it has a "warmer, fuzzier" feeling associated with it. This is generally regardless of whether the patch is accepted or not. Helping out feels good.
In short, writing opensource software feels "right". That's why I keep doing it. Knowing people are using it (or think it's cool) helps, but it's not the main driver for me...
I could probably write a more elaborate comment explaining how it improves my skillset, coding style and has a positive effect on my career but even so, I wouldn't do it out of any of these reasons as long as it wouldn't be fun.
I do it because people need software, and they don't have the time/resources to acquire it.
2. It feels like changing a flat tire for a stranger.
3. Effects? Get in contact with me if you have a position open and would like me to work with you (after trying out my work). Though this is not my motivation, it is a nice side effect.
4. I enjoy shipping software, so that motivates me to continue building more and more apps.
Of the open source software that I use, I've yet to contribute back. The biggest reason is just a lack of time. On top of digging through the code to fix the bug, most projects have guidelines and a process for submitting patches. Even a little bug can be a big time sink the first time through. I do submit bug reports, if that counts...
I use a handful of FOSS libraries - and I'd readily contribute - but I find that most of the FOSS projects I use are bug free, as is? Perhaps I don't use enough 'cutting edge' libraries (in which case, I'd like to hear how these are discovered)...
I've asked a few developers this question and the reasons for not contributing tended to fall into 3 camps:
1. Not enough time. These folks come home from a long day coding at work and want to spend their free time with family/friends.
2. Not enough interest. They're not opposed to the idea of contributing, but 'just never got around to it'.
3. Not sure where to start. This was particularly true among younger developers. They'd be interested in joining a project to improve their skills and work w/ others, but they weren't sure how to get started. What should they work on? Where is the project headed? If they just start hacking on stuff, will the lead contributor find it useful?
I don't think there's much you can do to change the first reason for not contributing (no time). But I think if Open source projects had better communication tools, possibly the second, and definitely the third reasons could be addressed.
I'm working on a pre-launch startup to make it easier for open source teams to better collaborate and communicate with each other. We want to create a space where developers can have face-to-face meetings, code reviews, and pair with new programmers to get them up to speed.
You can see the prototype at www.codemeet.com. If this sounds like it'd be of interest Isaac, I'd love to talk to you more about how it could be integrated into some of the projects you're working on :)
This is a deal-killer for me. Some of the OSS projects I've wanted to contribute to make getting up to speed rather difficult.
Few offer documentation that makes joining and getting up to speed quickly easy. I know why such documentation does not exist, because we just want to code. But every OSS project (that allows others to actively contribute), should have some kind of welcome-here-is-what-you-need-to-start-package.
Even a simple README committed to the git repo that outlines it would work fine.
*
That is one interesting app you got there.
Just signed up for http://www.codemeet.com/ I'm isaacs on there, and my email is in my profile (and all over the web) if you think it can be helpful for node.js things.
FYI, https://pair.io/ is in the same space. Since it is based on SSHing into a machine, you can work collaboratively in your text editor of choice with your own .dotfiles
http://blog.jupo.org/2011/09/12/open-source-for-you/
Just to be useful to people. I don't have an economic incentive to program, but I enjoy solving intellectual problems and I like feeling that I've contributed something.
One example of a particularly useful program I wrote is TankCalc (http://arachnoid.com/TankCalc), a Java app that profiles storage tanks. It's pretty popular among tank farm managers worldwide, people who need to know exactly what their tanks contain but who don't have the math background that would require.
To be useful -- that's it in a nutshell.
Now these days, more than 10 years later, I have a family to support so most of my OSS contributions are fixing bugs that are show stoppers for me, in existing projects. I have open sourced a few very small things that I use for myself, in hopes that it saves some people from wasting time on doing something that has already been done.
EDIT:
I used to always think that it would help me out in getting a job, but the only way it helped me out was that I had a lot of experience. Having a OSS project on my resume never really helped out it seemed, in the jobs that I got.