
Ask HN: Why do you contribute to open source? - IsaacSchlueter
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.<p>Why do you do it?<p>If you don't, then what stops you?<p>Not looking for should/shouldn't arguments here.  Just curious about the general psychology of the decision.<p>What does it feel like?  What kind of effect are you looking for?  What motivates you to continue?
======
seldo
Although 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.

------
huhtenberg
\- 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
This 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
In 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.

------
ctide
90% 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.

------
DevX101
I 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
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?

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.

------
slace
I 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
The 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

------
jlarocco
I 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...

------
DamonOehlman
I 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...

------
indexzero
I support Open Source Software because Open Source Software supports me.

~~~
DamonOehlman
Well said mate, well said. Short and sweet - time for a sticker.

------
daleharvey
Partly 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.

------
jcoglan
As someone who runs a lot of his own open-source projects (see
<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.

------
skilesare
Funny 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.

------
mathrawka
I 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.

------
goatslacker
I 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.

------
sashametro
When 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

------
DasIch
I 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.

------
lutusp
> 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>), 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.

------
joshmanders
I 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.

------
CodeCube
I 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.

------
cdvonstinkpot
I 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.

------
code_pockets
1\. 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.

------
fossbugshuh
Honest 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)...

------
phallstrom
Outside 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.

------
joezhou
Someone 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.

------
stephen_mcd
I 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/>

------
tjholowaychuk
great 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
Awesome 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
Definitely 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.

------
ct
I 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.

------
chx
Read my blog post on the psychology of contribution
<http://drupal4hu.com/node/102>

------
peterwwillis
Because I want a feature included, a bug fixed, or I wrote something cool and
I want to share it.

------
grayrest
I learned software engineering from Mozilla. I earn my living on top of OSS.
Pay it forward.

------
nonUser
Because I get paid for it.

------
fezzl
I don't.

