

Why you should contribute to Open Source? - hgarg
http://shal.in/post/285909694/why-you-should-contribute-to-open-source

======
gkoberger
The biggest problem with contributing to [edit: established] Open Source
projects is the barrier to entry. As someone who gets paid to work on a
popular open source project full time, I can tell you it's often way harder
than it's worth to get involved.

You need to download and get the code running on your computer, and configure
everything to run correctly. You need to learn the ins and outs of how
everything works. You need to install and learn about the code the project
depends on (and, most projects will have numerous vendor libraries). You need
to get acquainted with the main developers on IRC, so you don't step on any
toes. You have to learn how they do bug ticketing, and you need to find bugs
you can do. And your first code review? Trust me, it'll be painful. It's not
easy to get started.

If I left my job today, would I continue to contribute? Sure. But only because
I already have a foot in the door, and know my way around.

All that being said, I truly believe universities should require students
contribute to at least one open source project- it's a great learning
experience, and the projects and their users benefit from the volunteer labor.

~~~
simonw
GitHub has massively reduced the amount of work needed to start contributing
to a project - click "fork", make your changes, send a pull request. That
said, actually learning how to use git in the first place is quite a bit of
work.

~~~
zumda
While I agree that Github has made it _easier_ , it is still not easy. First
they will reject because of some subtle formatting error. Then they will
reject because you didn't document it enough (or wrong). Then they will reject
because your tests aren't done the way they do it. Then they refuse it because
you merged and didn't rebase.

There are hundreds of reasons why they won't pull your changes. This doesn't
apply to small, single dev programs. They are usually, at least in my
experience, pretty happy that someone wrote a patch, but the big ones are
really, really bad.

~~~
pilif
I'm happy if the upstream project is concerned with the quality of commits
going into their software. That makes sure that the software will work great
and it'll be easier to fix a bug in the future (if the history is reasonably
clean)

Basically, if upstream doesn't accept your patch, you have two options:

Either you really want to see your patch upstream. In that case you invest the
time it takes knowing that your contribution will be measured by the same
scale that everyone else's contribution has been measured with. You also know
that your contribution will be usable and part of a stable project. And you'll
be confident that it probably won't be your mistake taking hundreds of sites
down that are using the project you contributed to and are now hitting a bug
you introduced.

On the other hand, you can feel that it's not worth the hassle. That's totally
fine. You'll just have to manage your patch on your own from now on (in the
end maybe creating an even bigger hassle in the long run).

Git gave you a very nice toolset for merging patches to an externally updated
project, so that should be way easier than it was in the SVN days.

What Github did was to actually make it possible to decide either way.

Before Git and Github, your options were to either have it integrated upstream
or to be stuck with whatever version you were patching (due to severely
lacking merge support)

------
vog
I think the author is missing an important point: You should also contribute
to Open Source projects because _you are using them_.

This is the most natural motivation for contribution. You care about the
project not just because it's cool and Free Software and you want to exercise.
You mainly care because you're using it everyday - be it your favorite game or
an important library (like jQuery, Qt) you use at work.

It is often most sensible to fix the bug where it appears, instead of working
around it in your application. And with Free Software (aka Open Source) you
can simply do that, without having to ask anyone for permission.

Getting this bugfix/improvement into the official version is a separate step.
But it is worth the effort, because the alternative is to maintain your
patches separately from new versions of the library. Or, worse, to maintain
workarounds for bugs in the library that might or might not be fixed in future
versions.

------
nadam
"Open Source projects offer you a chance to work on something that you want
rather than something that others want you to work on."

As far as I am concerned starting my own project is more what I want rather
than fixing bugs in other people's complicated code which code might also be
philosophically very alien to me. To take compromises there is my day job. To
work on cool things I start my own project/startup.

~~~
aaronblohowiak
This lecture was given to _students_ to start to understand how real software
development works and get an edge on their classmates while applying their
technical skills.

------
oceanician
I think in some ideal world I'd like to see all companies that benefit from
oss donate some employee time back to the community.

Ultimately it's mainly the business community that benefits, rather than the
coder who are typically paid just around the cost of living.

So, why can't more businesses allocate time to contribute back?

------
lovskogen
For me, as a designer, contributing to Open Source is a great exercise. But as
gkoberger states, it's hard to get 'a foot in the door'. And getting your GUI
implemented is also a long process.

How could this be made more lucrative?

------
jasonkester
If you have spare dev cycles, I'd say it's in your better interest to build a
software product that will make you money.

You get all the advantages the author talks about, with none of the
disadvantages that the commenters here point out. You get income, and you get
something concrete you can point to when it comes time to interview for your
next job:

"I built and designed somerandomthing.com from scratch. It's built on the
mZungu stack and handles peak loads of 14k requests per second. Check it out
when you get a chance. It pays my rent."

~~~
pmjordan
Agreed. I find it admirable that people can produce code for purely altruistic
purposes. I wish I had the time to do that in between my work that pays the
bills and my work on my own project that will hopefully soon earn some money.

At the same time, I do end up using a lot of open source software as part of
that work, and when I have issues with it, I do submit fixes back to the
project. Sometimes they are accepted (in some form), sometimes they're
ignored. This isn't overly time consuming, and if nobody did it, I'd be
spending a lot more time fixing bugs myself.

Likewise, I occasionally open-source stuff I build that happens to be
reusable. As far as I can tell, none of that code is widely used, but on the
off chance that someone is looking for something exactly like it, it might
save them some time.

~~~
davidw
> purely altruistic purposes

Nah, it's because it's more fun to work on open source code! I don't work on
stuff that's not fun or not interesting in some way, so there's definitely
always an element of self-interest.

------
CraigBuchek
Here's my answer on HOW to contribute to Open Source, if you're not a
programmer:

[http://www.granneman.com/techinfo/linux/contributewithoutcod...](http://www.granneman.com/techinfo/linux/contributewithoutcoding.htm)

------
danio
Nice advice for the original target audience of people with lots of spare time
who have already sorted out where the rent money is coming from. For the other
90%+ of us not so relevant.

~~~
tfh
This could be very helpful for _those who have not already sorted out where to
get rent money_ to get the job they want.

~~~
danio
If people don't have rent money they don't have the time to work on open
source as they are too busy working (i.e. in a short-term job unrelated to
developing software). So the advice only applies to people who are financially
stable but also have spare time such as students.

