Ask HN: How to get started contributing to open source?
By my own estimation, I'm at an intermediate level of my preferred language (happens to be python, but not central to what I'm asking): I'm capable of understanding most of what I read, and of writing what I want, but I know there's a lot of learning still to be done (not that it ever ends...)
I think that contributing to open source projects would help me learn a great deal about being a better programmer - and especially about programming as part of a larger project.
Another reason for doing this is just to contribute, to give something to the community. But I'm not at the level of making my own useful things for people yet, so I'd like to help out on existing things.
So, how do I start? Is there any central 'help wanted' noticeboard, or do I have to go to every project I might be interested in and check out what they need doing? And if the latter, what are some good ones that might need some help? (For me that's python projects - but feel free to add others as replies for other readers' usage)
Any advice appreciated. Thanks.
8 comments
[ 3.4 ms ] story [ 20.2 ms ] threadSome project leaders prefer that all code be accompanied by a unit test.
Bottom line is, try to make it easy for the people who might review your contribution.
Good luck!
http://stackoverflow.com/questions/117561/what-are-good-open...
http://pythonsource.com/
The closest thing I can think of is Source Forge's help wanted section.
To get started, first choose a project that you use and like. Think as a user, what would you do to make it better. What features do you miss?
If you can't find any, go to their bugzilla and search for possible easy fixes to get started... Don't contact their developers before you have some code/patches in hand (lots of people talk about helping, but few do).
A quick story:
A long while ago I liked to dabble on video editing using Linux (That was installed on the only box I had with the horsepower required). The choices where not many, the one I decided on was (and still is) overly complicated, with very little info on how to use it. I started learning the hard way, It was hard, foreign to non video people and had plenty of bugs but no show stoppers..
Then for my own selfish needs, I started writing a manual for the thing, the catch was that I had the good idea of putting it on a wiki, so others would also contribute.. Because it was something actually useful, pretty soon people started dropping by, saying thx and a few even contributing articles.. Few months later, someone asked to translate it to slovenian, then someone else to italian, then rusian,spanish and so on.. After a while we had quite a nice manual that in turn help to make the program popular, which in turn got more developers involved, who then fixed the bugs that I initially encountered and could not fix because I suck at C programming.
I never meant to do anything of this.. I just had personal needs and did something about it. the catch is to share your work with others not expecting to be paid in any way what-so-ever.. (other than to enjoy other contributors work)
The only reason why RTFM fails is because documentation is outdated or non-existent.
With intermediate level this is lowest bar to achieve, and you will learn a lot just documenting the stuff as you will be forced to understand internals.
Look for projects that are in the middle stages of maturity. A project that is too mature will require technically difficult work; one too young will require lots of discussion on design and specification.
Work on easy tasks first, such as minor bugs or gaps in documentation. These tasks tend to finish faster, and they'll encourage you to go on to tougher stuff.
Get familiar with the tracker (e.g. Trac, Bugzilla) and repository (e.g. SVN, Git, Mercurial). In particular, know how to create and submit a patch. Most projects rely on these tools for collaboration, so you should cater to their workflow processes.
Good luck!