Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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).


migration rejected from Oct 26 '15 at 11:37

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by MichaelT, Snowman, durron597, Ixrec, Bart van Ingen Schenau Oct 26 '15 at 11:37

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – Ixrec, Bart van Ingen Schenau
If this question can be reworded to fit the rules in the help center, please edit the question.

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
You might get more help at – 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
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
up vote 12 down vote accepted
  • pick one that you will use personaly


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


  • pick one that really needs you

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

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

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.


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