I am interested in contributing to some open source projects in order to learn git and Python better. A lot of the projects I have looked at are fully mature, and the updates are pretty complex, requiring an understanding of large parts of the project.

How do I find some low hanging fruit or moderately challenging problems to start on?

  • To learn git, just set up any source code you fool around with as a git repository. Use git's commands to record changes, create branches for outlandish experiments, merge them in if they work and just abandon them if they don't. Set up a repository at e.g. github to practice fooling around with a remote repository. Just like learning how to ride a bilke: can't do it without mounting one.
    – vonbrand
    Commented Jan 6, 2016 at 1:45
  • 1
    I'm right now at a very similar situation (improving git and learning Python skills), and I'm currently thinking how to improve an app I intend to use on a more frequent basis for work-related purposes. If you pick something you use, you'll be more motivated to do it.
    – philsf
    Commented Jan 30, 2016 at 7:54
  • I would be happy to welcome you on our aboutcode.org projects and the github.com/nexB/scancode-toolkit toolkit in particular among the many fun Python stuff we do. Commented Dec 19, 2017 at 16:07

3 Answers 3


What are you interested in? Working on e.g. the Linux kernel if your interest lies in user interfaces won't cut it. Preferably something you use day to day, so you have a feel of the problems, and are in some way connected to the user community.

Check the webpages for the packages of interest, take a peek at their developer lists and bugtracking systems. See if they advertise "tasks for newbies" or similar. Pick some simple tasks and work on them. Be careful to use the programming style used in the project, be it by looking at the code or check for official standards. Follow whatever style is in use for commit comments and other documentation.

You might get lucky and find a mentor, but don't count on it. Mentoring is a lot of work, which might not pay off. Besides, computer geeks are a reclusive breed. You'll have to make yourself known by judicious participation in the mailing lists or wiki.

Most of your proposed patches will just be silently ignored, you might get yelled at for others. A thick skin, and keeping cool when the flamewars start, is a must.

Perhaps you could check the "participate" pages for your preferred Linux distribution (or BSD. or whatever system you like), like Fedora's.


As the excellent points by @vonbrand, you should try to improve whatever software you actually use on a frequent basis. Your experience as a user will definitely put you on a good starting position to correctly identify features missing, properly test things, write good bug reports and hopefully motivate you more than fixing some bug in $random_project just for the sake of learning how to build a class in Py.

A minor side effect is that, besides benefitting you as a user, you will benefit people you're more likely to relate to.

If you want the low hanging fruits:

  • Make a list of some projects you find useful on a frequent basis
  • Narrow down based on project activity
  • See if there's one you like that's stalling (e.g., there are few main devs, and they accept pull requests, but haven't been committing new features or fixes themselves for a while).

If you manage to find such a project, I'm sure the devs will be more than happy with the extra hand and value your effort, even if you fix only minor things.

I'd suggest to avoid abandonware at the level of proficiency you seem to be, since that will basically mean you need to fork and maintain it, thus inheriting the whole project to your responsibility. It might be overkill for the time being, and usually available time is the most important currency around.


Although not all open source projects use GitHub, it's popular and prominent enough to mention here.

Specifically, GitHub suggests two standard labels, help wanted and good first issue to Helping new contributors find appropriate issues. Combining these with the ability to search according to language (in this case, Python), makes it pretty easy to find issues that you could [relatively-]easily work on. E.g.: label:"good first issue" language:python.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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