On 10/10/2012 6:45 AM, karan garg wrote:
Hi all,
I have been an open-source enthusiast since 2010 and using Linux as my
operating system for last 2 years. However, now I want to take an active
part in open-source development and contribute to the society under an
expert guidance. I am an RHCE and have a basic understanding of a fair few
things like database, c, c++, ruby, shell scripting, etc. I would really
consider it an honor if you would guide me.
The biggest challenge to contributing to open source is often to
understand the social/cultural aspects. Lots of people have useful
patches and publish them somewhere, but "nothing happens" unless they
figure out how to interface with the relevant community, and present
their innovations in a way that meets that community's needs and standards.
There is also a question of "marketing" your improvements. Bear in mind
that every open source project wants to maintain some sense of
reliability and stability. So your contributions will be evaluated not
only on the merits of what they improve, but also what they might break,
how difficult they might be to maintain going forward, how consistent
your coding style is with the existing conventions, and so forth.
You'll need to explain why your patches are good/helpful. Don't expect
people to read them carefully enough to figure it out for themselves --
give them a clear summary of what you are up to and what are the merits.
Try not to undertake anything too ambitious. If you do have an
ambitious plan, split it into small phases so that people can evaluate
your work without being overwhelmed by it.
In general, expect your contributions to be met with skepticism,
especially the first few times you contribute. If people criticize your
work, try not to take it personally. Often people will say "I think
you're an idiot" when they mean "I think your code makes an idiotic
mistake", so, seriously, if you feel offended, think for a second "what
is this person really trying to tell me?"
Usually there is some way to answer their concerns by revising and
resubmitting your patches. Remember that (almost) every project is
somebody's "baby," which they spent a lot of time an effort creating.
They have every right to be a bit protective -- and of course sometimes
egos do get involved.
In general, most of the barriers you might encounter trying to make a
contribution at the office apply equally -- sometimes more than equally
-- to open source development.
However, if you stick to it, the rewards can be tremendous, both
"spiritually" and in the professional domain, where you will have
bragging rights, forever, if you manage to make a meaningful
contribution. By no means do I wish to discourage you -- in fact, I'd
say the best way to answer your question is to "just go for it."
You'll learn as you go, probably after a few embarrassing mistakes.
Keep a stiff upper-lip, be humble, and don't hurry too much, and you'll
do fine -- there's a reason so many people contribute to open-source: it
really is quite a rewarding endeavor.
-gmt