I have been involved with the Durgapur Linux User's Group for the last five years. I have been contributing to various open source projects for quite sometime. The reason why I contribute to open source is for the feeling of joy, when you send a patch or a PR to an open source project. It feels great when millions use your few lines of code in their day to day life.
After getting through Google Summer of Code and getting covered by some media portals on my programming achievements, a lot of people contacted me. All of them had the same set of questions.
I will try and answer all of these questions here. But, first let us overview on what is Open Source Software.
Open Source Software is a computer software whose source code is made publicly available for modification and enhancements. It is released under various licenses like BSD, MIT etc. “What is open source?” is a good read.
I strongly believe that reading few lines of code is worth more than reading 500 pages of a book. When you follow code written by great programmers, you automatically tend to pickup some great practices while coding.
Even before I studied the subject Software Engineering in college, I had practical knowledge of version control systems, debuggers, issue trackers, continuous integration tools and this was all because of contributing to open source projects.
There are many advantages to contributing to open source - You can make a great resume that stands out from the crowd. It helps you in building online presence.
But, these merry words won't help you get started..
First and foremost, you must choose a programming language of your choice. Once you are done with selecting a programming language, search for a project that is interesting to you.
Open Hatch is perfect for beginners. The search page of Open Hatch filters out bugs based on
Honestly, finding a bug for a beginner is really a hard. I faced the same problems. But I will be listing down resources on how to find easy bugs and get started with contributing to a large organization.
Getting started with Mozilla is very simple. Mozilla has multiple gateways for their fellow new contributors.
Bugs Ahoy also categorizes the easy bugs based on the programming languages too. These are primarily in Python, Java, Shell, JS, C/C++ and HTML/CSS. One can choose a combination of filters to choose the perfect bug to get started.
If you want to start contributing to KDE, look out for the Junior Jobs tag. Like each organization, KDE contains a section on how to get started with the KDE projects.
OpenStack is also a great project to start out with. The OpenStack project is divided into various components: Swift, Glance, Nova, Horizon, Keystone etc. Each of these components have their own page. If you head over to the OpenStack Wiki Main page, you can see the components listed seperately.
Each Component page contains the link to repository, bug tracker(Launchpad), Documentation etc. OpenStack call their beginner bugs as “Low Hanging Fruits“.
Most of the people on the planet have heard of the name Wikipedia but how many have ever thought of contributing to it? Wikipedia is supported by Wikimedia Foundation. Mediawiki tag their easy bugs with the easy tag. Click!
Annoying little bugs - http://www.mediawiki.org/wiki/Annoying_little_bugs.
‘Gnome-love‘ is the loving tag for the easy bugs who want to get started with GNOME. If you ever visit the GNOME homepage: the “Getting Involved” link is clearly visible in header's menubar. Anyways here is the link you don’t want to search for it.
GNOME maintains a guide for newcomers: https://wiki.gnome.org/NewcomersTutorial.
If you want to know on how to submit your first patch, read this: https://wiki.gnome.org/GnomeLove/SubmittingPatches.
If you want to build the code, then just build it from here: https://wiki.gnome.org/GnomeLove/JhbuildIntroduction.
Apache maintains quite a number of projects. project.apache.org lists a catalog of more than 140 projects in which one can start contributing. The New Comers section is an easy read on how to get started in Apache, http://community.apache.org/newcomers/index.html.
Getting Involved with Apache Software Foundation: http://www.apache.org/foundation/getinvolved.html.
I am an active Python/Django developer for a couple of years. So, I’m adding on how can one start contributing to Python/Django. To start with contributing with Python, just head over to the Developer’s Guide(http://docs.python.org/devguide/). It starts with cloning the repository in your system and then asks you how can you check for the easy fixes.
The developer guide mentions how can you start with making documentation fixes, then move up to fix small bugs. Once you get acquainted you can start taking up easy bugs.
Django is a Python based web-framework used by some really big companies e.g. Disqus, Instagram, Transifex etc. To start contributing to Django, head over to the page Contributing to Django.
This page lists down the links to mailing list, IRC channel, Issue Tracker.
Getting Involved in Django: https://code.djangoproject.com/#Gettinginvolved Like most of the open source projects, Django has easy fixes for the new contributors too.
Django maintains a page to advise new contributors: https://docs.djangoproject.com/en/1.9/internals/contributing/new-contributors/
Open Source contributing doesn't mean contributing to well known communities only. There are huge collections of open source projects available on websites like Github,SourceForge, Google Code, Bitbucket etc. I also believe that just open source contribution does not help. One needs to work on side-projects for ideas to keep your ideas flowing.
I would also like to quote few lines from a nice blog post.
You shouldn’t become an artist so you can be famous, but because there’s art inside of you that will kill you if you don’t let it out. You shouldn’t found a startup to make money, but because it’s your life’s work. And you shouldn’t hack on open source projects because someone told you that your GitHub profile is your new resume, but because you want to code socially.Once you start contributing, you start interacting with people via IRC, mailing lists. I strongly suggest you to go through the etiquette an organization follows. In general roll your eyes through this presentation to get a brief of it. http://www.shakthimaan.com/downloads/glv/presentations/mailing-list-etiquette.pdf.
If you still need help after this, feel free to reach me on twitter or shoot me a mail on sayan DOT chowdhury2012 AT gmail DOT com. I would also like to thank Chandan Kumar who helped me in writing this blog post, he can be reached on chandankumar DOT 093047 AT gmail DOT com.