Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I would like to join an open source project since I think I am good enough at programming to progress onto reading others code and to modify it. But the problem is, how would I choose an open source project to work on?

I know many languages and chief ones that I am good are python, C++ (not really very good at C, the lack of object orientation is difficult for me) and Java. For C++, I am proficient with Qt. I would like to start with something that isn't huge, and hasn't reached a phase where the bugs are so complicated it would take me a month to understand what affects the bug. Any suggestions?

At the current time, I don't use any libraries in either of the mentioned libraries that I would need to modify (AFAIK).

share|improve this question

migrated from stackoverflow.com Mar 13 '11 at 17:45

This question came from our site for professional and enthusiast programmers.

1  
I would recommend to contribute to a project that you are actually using in one or more of your projects. And, try improving the areas that you think the API/project lack. Be ready for rejections. –  Nishant Mar 13 '11 at 17:02
2  
You might get more help at programmers.stackexchange.com –  DOK Mar 13 '11 at 17:06
    
Most projects need good documentation. If you can write well, I'm sure that your favorite project can point to areas where your efforts would be appreciated. –  user1249 Mar 13 '11 at 17:08
    
DOK: can I make a post there to link to this post or is that not allowed? –  Dhaivat Pandya Mar 13 '11 at 17:08
1  
erm isn't 'lack of object orientation in C' a bit of an exaggeration? Ok it's support for it is not quite as nice as in other languages, but if you know OOP and you know C you can do plenty of OOP in C. –  stijn Mar 13 '11 at 21:07
show 3 more comments

2 Answers

up vote 12 down vote accepted
  • pick one that you will use personaly

and/or

  • pick one that would excite you so much you would talk about it to your grand ma

and/or

  • pick one that really needs you

If you have all three, it will be an amazing experience!

share|improve this answer
2  
My question is, how would I find a project like this? –  Dhaivat Pandya Mar 23 '11 at 19:02
    
@Dhaivat: I suggest you to browser for a while in categories you like and that matches the above criteria –  user2567 Mar 24 '11 at 6:31
    
Thanks a lot, I ended up picking Apache, lets see how it goes (I got one simple patch in :) –  Dhaivat Pandya Mar 27 '11 at 19:11
    
@Dhaivat Pandya: my grand ma would have been very exited by that one! –  user2567 Mar 28 '11 at 5:24
add comment

Because a project is open sourced doesn't necessarily mean that you can contribute to it or that direct contributions are accepted. You should join an open source project that your personally interested in and one that has topical guides on how you can contribute to the project.

For your first project, you should definitely pick one that has a very accessible community, i.e. even the most inexperienced or humble contributions are welcomed, and one that documents how the development process is organized and executed, one that can fully address many of the questions you probably have at this point about what it means to take a ride on the track of open, collaborative community development:

  • How are contributors organized and what are their roles?
  • How is the development process planned?
  • Are there different kinds of releases that the project publishes?
  • What kind of changes are allowed in a certain release?
  • How, when and where can I propose or submit certain code changes?

Until you familiarize yourself with the overall design and how different components communicate with or affect other parts of the system, you should generally avoid tackling those bits. Each project has certain areas that are easy to get involved in, such as improving the documentation and the translations and then there are also certain portions of the project's code that may fall directly into your area of expertise, say cryptography, where you can immediately provide improvements.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.