4 ms·
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?
- grayrest 15y agoI learned software engineering from Mozilla. I earn my living on top of OSS. Pay it forward.
- ctide 15y ago90% of my open source contributions come from running into a bug in an open source project that I'm currently using for something, and just fixing that and sending it back upstream. 10% is writing tools to solve problems I have that aren't adequately solved by existing things.
- indexzero 15y agoI support Open Source Software because Open Source Software supports me.
- DTrejo 15y agoAlso Fame and Glory?
- DamonOehlman 15y agoWell said mate, well said. Short and sweet - time for a sticker.
- dutchbrit 15y agoWell said, same reason here.
- seldo 15y agoAlthough I admire OSS as a concept, generally when I contribute to an open-source project it's "by accident", e.g. I'm trying to fix/have fixed a bug that's affecting me or one of my customers, and it's easier to contribute the patch back to the project than re-patch every subsequent update. It's just, pragmatically, easier to fix the whole project than just for me.
- CodeCube 15y agoI mostly publish my own projects (where applicable/possible) as open source. I don't often submit patches (though I have in the past) because I usually end up using the software as is and it's fine; or I have to modify it in some way that is specific to the problem at hand (and thus, not useful to anyone else). I definitely don't have a problem with contributing changes, it just doesn't come up very often.
- tjholowaychuk 15y agogreat way to learn, share, and collaborate on ideas. I think if you couldn't share interesting things you wouldn't necessarily want to build them at all, or at least not build them as well as you may have if it were open-source
- DamonOehlman 15y agoAwesome attitude. I've personally learned a lot looking through your code (amongst others). 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.
- tjholowaychuk 15y agoDefinitely I agree, lets you be creative with code in a way that actually matters. If no one saw your code being creative & clean wouldn't matter a whole lot, depending on who you work for it might be better job security-wise to produce more obscure code haha.
- goatslacker 15y agoI believe open source software benefits many people and I like helping people. OSS has also helped me become a better developer, I've also made new friends, and gotten jobs because of it so it has definitely been very rewarding and I guess that's why I continue.
- jcoglan 15y agoAs someone who runs a lot of his own open-source projects (see http://jcoglan.com http://jcoglan.com), and occasionally contributes to others when I find bugs, the biggest reason I do it is to learn things. Not just to learn programming, and various problem domains, but to practise writing and speaking about my work, writing good documentation, and (crucially) practising API design. 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.
- daleharvey 15y agoPartly because my job, everything we do is open source 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.
- slace 15y agoI like to solve puzzles; most of my contributions to OSS is in the form of bug fixing, which comes about because I've come across the bug myself, decided that it needs to be fixed so that gives me a chance to solve the puzzle. I see myself as a reasonable coder so I should be able to solve most problems, and the problems I can't solve at least my investigation can provide a top-notch bug report for other maintainers can skip some of the tedious investigation. 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.
- thealistra 15y agoThe job aspect is pretty important. 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
- phallstrom 15y agoOutside of the altruistic and technical reasons, it's a great background check for technical interviewers. It's pretty hard for me to lie about my contributions or quickly make up 2-3 years worth of github history. It also gets around all those pesky NDA's I've signed such that I can't show my paying work to anyone.
- DamonOehlman 15y agoI opensource most of the code I write because I think it's one of the best accountability mechanisms that we have in coding. Just knowing that someone is going to be looking through my code makes me work harder to ensure it's "good". 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...
- DasIch 15y agoI do it for fun. 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.
- joshmanders 15y agoI am really interested in the replies here... I've never really done anything with open source... I started my programming career as someone who couldn't afford to pay someone for things I wanted (Big things done open source now, that weren't available back in 1999-2000 when I started) and ended up starting to sell my code to others. And because of that I never really had the whole open source mindset... Everything I did was for me to make money, didn't want to give the cow away for free when I was trying to sell the milk.
- nonUser 15y agoBecause I get paid for it.
- code_pockets 15y ago1. Why I do it? 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.
- peterwwillis 15y agoBecause I want a feature included, a bug fixed, or I wrote something cool and I want to share it.
- jlarocco 15y agoI release most of the code I write in my free time. There's no specific reason I do it. A while back people were mentioning using GitHub as a resume or a supplement to a resume. I like the idea, but I'm not sure how much it's used as that, or even if my code would say anything good about me. Mostly it's just a convenient way to have the stuff I write available where ever I am. None of it's spectacularly useful, but if it helps somebody out, cool. 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...
- fossbugshuh 15y agoHonest question... If you've contributed to FOSS to fix a bug, could you specify the package and the bug? 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)...
- DevX101 15y agoI think the positive answers to your questions are spot on and consistent with people I've spoken to. But I haven't seen anyone respond in the negative as to why they DON'T contribute so I'll take a stab. 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 :)
- code_pockets 15y ago3. 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? 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.
- 15y ago
- stephen_mcd 15y agoI recently put together a blog post on exactly this topic, namely the self-serving motivations behind contributing: http://blog.jupo.org/2011/09/12/open-source-for-you/ http://blog.jupo.org/2011/09/12/open-source-for-you/
- lutusp 15y ago> Why do you do it? 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 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.
- mathrawka 15y agoI started working on OSS as a way to learn at the age of 18. I learned much more about programming and working with others than I learned in school. Plus, having a program that I work on be in the top #5 for downloads on SF back in the day was a bit of a cool factor. 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.
- skilesare 15y agoFunny this should come up today. I just haven't really known how. But today, I forked something, changed a file and submitted a pull request. It was just one line of code and I full expect it to get rejected but I figured I needed to start somewhere. GitHub made it easier then I imagined it would be.
- ct 15y agoI do it mainly when I find a bug and want future releases to also include my fix so I don't have to patch future versions. So it's kind of selfish in a sense, but overall makes the software better.
- sashametro 15y agoWhen I contribute to FOSS software I know that the odds are very good that other people will actually benefit from the work that I do. Having worked for several startups, I know that the code I was paid to write is more likely than not going to end up in the trash can when the company folds, the project is cancelled or (best case so far) the application is re-written from the ground up by another team. My FOSS code, on the other hand, as humble as it may be, is much more likely to be picked up, used and even improved by others. And there is a satisfaction in knowing that I will always be able to use it whenever I want, something that is not the case with code I have written for my employers
- cdvonstinkpot 15y agoI don't code, but am behind a startup that intends to contract an app that will eventually be FOSS. Simply because once I'm no longer developing it, I hope there'll be a community that forms around the project that can keep developing it to their needs. I only plan to take the project so far, but like the idea of it having a life of its own after it meets my minimum requirements.
- chx 15y agoRead my blog post on the psychology of contribution http://drupal4hu.com/node/102 http://drupal4hu.com/node/102
- huhtenberg 15y ago- FWIW - While I have a handful of my own open source projects (mostly libraries), I gave up on trying to contribute to open source. I tried approaching a number of projects and the level of disinterest and arrogance was frankly jaw-dropping. I was treated like someone who is out to outsmart and put to shame everyone on the "core team". In one case I asked if they had any thoughts on moving from Google Code to GitHub, listing possible benefits and reasons. To this the first reply was that forking was evil, GitHub was broken and that I shouldn't really be troubling very busy people with such stupid questions. Then more people piled on with personal attacks. That was damn odd. All I wanted was to submit a bugfix. With another project I wrote them how to trim down and lighten the code, and no one even bothered to reply. I wasn't condescending, always bearing in mind that it was their project and I was just passing by. Yet another project - made a replacement for an awful app icon - again, like talking to a wall, not a blip from the other end. One notable exception was the Linux Kernel project. They accepted a couple of patches with no fuss whatsoever, and rejected another 2 or 3 with good arguments. (edit) Having thought about it a bit more - the problems appear to lie with multi-person projects. I had good experience submitting fixes and patches to single-maintainer projects. They were all accepted or rejected promptly and with courtesy. But once there's a group, then there are leaders, prima donnas, politics, social hierarchies and you name it. A coding society, not a development project.
- IsaacSchlueter 15y agoThis is very interesting. The problem, of course, is that a single person can't get as much done as a team. At a certain point, many projects need to have more developers involved. What do you think it was that made the Linux Kernel different? I assume there are leaders and social whatevers going on there.
- bryanlarsen 15y agoIn general terms, the key difference between a 'nice' group and a 'mean' group is the degree to whether the hierarchy in the group is obviously correct. In the linux kernel, there is a clear hierarchy that is pretty close to being obviously correct. Linux obviously deserves to be the leader, and position/status is very clearly linked to a persons contributions to the greater good of the project. On single person projects, the hierarchy is also trivially clear, obvious, correct and unassailable. Many group projects fail the "clear hierarchy" test, often because they try to eliminate the hierarchy for some sort of ideals. But humans being human there is always some sort of hierarchy, so establishment of the hierarchy is informal and ongoing. Of course, "informal and ongoing" is a lot better than 'wrong' which is the case with many clear hierarchies. This is why the idealism vis a vis trying to prevent hierarchies exists in the first place. The obvious correctness of the hierarchy is one huge advantage small companies have over large companies and non-profits.
- joezhou 15y agoSomeone probably already mentioned this below, but the ability to improve individually as well as collectively. When you contribute something, it's great to hear from people 3000 miles away telling you there's a better way of doing it.
- fezzl 15y agoI don't.