views:

425

answers:

7

I am a budding python developer, and although Im not bad, there are alot better programmers out there.

For a long time I have wanted to improve my programming and 'real world' skills by contributing to an open source project, but most of them just don't seem to cater to those who are new to contributing to opensource projects.

So my question is this: How can a beginner, such as me, contribute to an open source project. I try looking at open tickets and bugs, but I just feel I am jumping in the deep end.

+1  A: 

Find something you use, so you're aware from a user perspective how it all hangs together, and see if there's anything in there you think could be done better, or something missing, then set to work.

Either that or find a project that has addons, and start by writing one of those, rather than hitting the main code.

I wouldn't start with bug lists, as fixing those would probably require you to know the code pretty well to begin with.

Steven Robbins
I kind of disagree. Through fixing bugs, you will learn a great deal about the code. Of course, probably one should start with minor bugs, like UI and what have you.
BobbyShaftoe
It depends on the project, but in general I disagree. In my experience any "quick and easy" bugs will likely already be squashed by people with more experience, leaving only stuff that's a lot of work. The poster has already said the bug list was "in at the deep end"
Steven Robbins
+6  A: 

First, find a project you are interested, probably something you like to use or what have you. Then, read all the documentation on the project's web site regarding contributing; usually this is in a section called "Contribute" or "Developers" and so forth. Next, if there are any mailing lists or forums then join them. Ask questions, there are usually many people willing to help you get started if you seem serious. Definitely ask questions, but of course, try to find the answer on your own. One good place for open source projects is to see if they have an IRC channel. If so, definitely go there and see if there any developers around and ask them questions as well. It could take you a few hours to a few days to get ready to work on a contribution.

Almost all projects will have some simple bugs you can fix, such as UI bugs that the primary developers are too busy with critical issues to deal with. If you find one project where it is hard to find good information or the developers are not willing to help you, find another one. There are plenty who need your help!

BobbyShaftoe
+2  A: 

The common way of getting involved in a project usually has nothing to do with its programming. Most contributions come from long-time users of the project so ideally you want to target something you use every day... To make things easier on yourself, something smaller and simpler is going to be a lot more accessible than something like Firefox.

The next step is getting involved with the bug tracking process at a "triage" level. Still no code involved. You want to make sure that bug reports contain a good amount of information and you should be testing them to make sure you can reproduce them.

Once you've got that far and you're familiar with the problems of the application, check out the dev source and build it. Make a few silly changes (like putting your name in its window title, etc) and build it again. Look at how the application works. Target a simple bug (I'd recommend a non-UI one*) and get hacking.

If you get stuck, now might be a good time to introduce yourself to the development mailing list. Lists are an archaic thing but as long as you remember to hit reply-all, they do work. Tell them which bug you're targeting and that you're doing this as an exercise and would appreciate some pointers. Most projects will be more than happy to help you.

Once you're done and you've tested your newly built code, create a diff patch and submit that under the bug you've targeted. Other devs may comment so it's important to follow the status of the bug.

Rinse and repeat. You're now a valued, code-hacking contributor.


You are right though. It's not the simplest of things to step into. I think the key to succeeding in an open source project is getting involved in its community. If you can show them you really want to give up your time, they'll help you as much as they're able to.


*UI bugs can be some of the hardest bugs to spot for a programmer who hasn't spent that long under the hood of an application. You need to find where the bug occurs and that can involve stepping through multiple UI frameworks and languages string files.

You also run quite a strong risk of introducing new bugs in other languages so testing things can become several times harder. I would stick to something well behind the scenes as you'll need confidence in the real source if you're going to ever get familiar with how it works.

Oli
+1  A: 

Agreeing with @Steve Robbins, but making it simpler:

Step 1. Download an Open Source Project you want to use

Step 2. Think of ways to improve it..

Step 3. When and if you do, submit back to the community.

Loop

Ric Tokyo
+1  A: 

I think is a similar to another question have a look at this question which may help.

John
+2  A: 

Donate money!!, there are projects worth of a donation like tortoiseSVN for me which I use daily, are of a really higher quality and require money to keep up with the development :P

Now, if what you want is to help coding then you can start by defining what role you want to take into that project, most "big" projects have really strong policies about "commits" of code and outside help even if they are "Open" so if you are lucky they will ask you to report bugs and commit patches but even if you do send patches they should pass the "supervision" of that person that is the owner of that module etc etc etc.

You can also check on smaller projects which happen to need more help than those that are big enough to get a myriad of "trustworthy" and experienced developers (read: famous) and contribute to it, don't get me wrong, I dont mean that you "can't" help big projects, im just saying it is usually easier to contribute to those that have lesser help (obviously) that those that don't, take Firefox as an example, im pretty sure they have a horde of developers that are really experienced on the code and already know it and if you want to help them they will review the code pretty well before they can say that it will be useful for the project and while that happens you will get very frustrated, this not only happens to "unknown" developers but also to those already commiting to projects, read this article from Michael Meeks to get an idea.

Now, I dont want you to push you down in your search, if you are truly interested in contributing to an OpenSource project and know Python I have a friend of mine which develops a multimedia application for Linux (Im not sure if it does run on windows yet) and I believe he is "solo" on his mission and he is very open to contributions:

http://christine.sf.net

You can also go to sites like sourceforge which host tons of OpenSource applications and find one that is interesting to you, but, as I mentioned before, be prepared to choose your role before choosing the project since the first thing deppends on the other, once you decide what you want to become into the project than you can choose the project and be more realistic about what project will give you enough freedom to become that taking in mind your experience.

Good luck!

Gustavo Rubio
+3  A: 

Check the SourceForge.net Help Wanted System for a project to join.

Every project states the required skills each with it's designated level, thus you can find a project that meet specifically your needs.

Lawand