I have been involved in Durgapur Linux User’s Group for around last five years. I have been contributing to various open source projects quite sometime. The primary reason on why I contribute to open source is the feeling, the enjoyment when you send a patch or a PR to a open source project. It makes you happy when millions of people use your few lines of code in day to day life.
- How to get started?
- I know x,y,z languages. which project should i contribute?
- How can i filter out a bug?
So, I thought of writing a blog post in which i’ll try to answer the questions. But, first let us overview on what is Open Source Software.
What is Open Source Software(OSS)?
Open Source Software is a computer software whose source code is made publicly available for modification and enhancements released under various licenses. “What is open source?” is a good read.
I believe in the fact that reading few lines of code is more worth than read 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 a open source project.
You make a great resume that stands out from the crowd. Contributing to open source software helps you building online presence.
But, these merry words really are not much help to get you started.
How do I get started?
The first and the foremost thing is choose a programming language of your choice. Once you are done with selecting a programming language, search for a project you might be interested.
Open Hatch is just for beginners like you. The search page of Open Hatch filters out bugs based on
Mozilla too has a wide range of projects filter based on programming language: What can I do for Mozilla?
How do I filter out a bug?
Truly speaking, finding a bug for a beginner is really a hard job. I faced the same problems. But I’ll be listing down on how to find easy bugs and get started with contributing a large organization.
Fedora Easy Fix page list down all the easy fixes you can get started with. Each project lists down whom you need to contact and the maintainer of the project. Fedora Infrastructure respositories contain some easy fixes. Look for the EasyFix label in the repository issues section. https://github.com/fedora-infra
Getting started with Mozilla is damn simple. Mozilla has multiple gateway for their fellow new contributors.
What can I do for Mozilla? - This site suggests you project based on the programming skill you select. Once you decide you project it takes you to the respective Mozilla project.
Bugs Ahoy! - Bugs Ahoy is a site particularly for the new contributors. The website categorizes the ‘Easy bugs’ and ‘Mentored Bugs’ based on the various project like JS Engine, Devtools, Firefox OS etc. But, what if you don’t know which project is based out of which programming language. Bugs Ahoy categorizes the easy bugs based on the programming languages too primarily Python, Java, Shell, JS, C/C++, HTML/CSS. One can combine the combination of filters to choose the perfect bug to get started.
Mozilla Getting Involved Pages - Mozilla has Getting Involved Pages lists down the projects in a particular team
- The projects contains
- The mentors who can be contacted
- Bugzilla page
- IRC channel name
- List of mentored bugs
- Getting Involved DevTools - https://wiki.mozilla.org/DevTools/GetInvolved
- Getting Involved Mozilla.org -https://wiki.mozilla.org/Webdev/GetInvolved/mozilla.org
- Getting Involved AMO -https://wiki.mozilla.org/Webdev/GetInvolved/addons.mozilla.org
- Getting Involved SUMO -https://wiki.mozilla.org/Webdev/GetInvolved/support.mozilla.org
- Getting Involved MDN -https://wiki.mozilla.org/Webdev/GetInvolved/developer.mozilla.org
- Getting Involved Socorro - https://wiki.mozilla.org/Webdev/GetInvolved/crash-stats.mozilla.org
- Getting Involved Mozillians -https://wiki.mozilla.org/Webdev/GetInvolved/mozillians.org
- Getting Involved ReMo -https://wiki.mozilla.org/Webdev/GetInvolved/reps.mozilla.org
- Getting Involved input.mozilla.org -https://wiki.mozilla.org/Webdev/GetInvolved/reps.mozilla.org
- Getting Involved careers.mozilla.org -https://wiki.mozilla.org/Webdev/GetInvolved/careers.mozilla.org
- Getting Involved QMO - https://quality.mozilla.org/docs/webqa/get-involved/
- Here is another link for Bugzilla Mentored Bugs list - https://bugzil.la/sw:mentor
If you want to start contributing to KDE, look out for the Junior Jobs tag. Like each organization KDE too contains a section on how to get started with the KDE projects.
- Getting Started - http://techbase.kde.org/Contribute
- Building a KDE Application - http://techbase.kde.org/Getting_Started/Build
- KDE Guide for a new contributor - http://flossmanuals.net/kde-guide/
- IRC - #kde-devel on Freenode
- Mailing List - https://mail.kde.org/mailman/listinfo/kde-devel
OpenStack is also a great project to start 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 Fruit”.
- Getting Started - https://wiki.openstack.org/wiki/How_To_Contribute
- If you are a developer -https://wiki.openstack.org/wiki/How_To_Contribute#If_you.27re_a_developer
- Documentation - docs.openstack.org
- IRC - #openstack-101, #openstack on Freenode
- And to find the low hanging fruits? Click here!
Most of the people on the planet have heard of the name Wikipedia but ever thought of contributing to it. Wikipedia is supported by Wikimedia Foundation. Mediawiki tag their easy bugs with the easy tag. Click!
Getting Started - http://www.mediawiki.org/wiki/Gerrit/Getting_started
How to become a Mediawiki Hacker -http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker
Installing Mediawiki on local system - http://www.mediawiki.org/wiki/MediaWiki-VagrantIRC - #mediawiki
Now this link is important, 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 the GNOME. If you ever visit the GNOME homepage: the “Getting Involved” link is clearly visible in header menubar. Anyways here is the link if you don’t want to search :)
GNOME maintains a guide for the 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 wit 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 tell goes on to tell how can you check for the easy fixes. The developer guide mentions that 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.
- READ: http://docs.python.org/devguide/fixingissues.html
- Issue Tracker: http://bugs.python.org/
- Easy Issues: http://goo.gl/NzJuDp
Django is a Python based web-framework used by some really big companies e.g. Disqus, Instagram, Transifex etc. To start contributing in 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 project Django too has easy fixes for the new contributors.
- Little Easy Improvement -https://code.djangoproject.com/wiki/LittleEasyImprovementsEasy pickings - https://code.djangoproject.com/query?status=!closed&easy=1
- The “Little Easy Improvement” also mentions issue for which one can send patches for documentation, writing tests, or improving the codebase. Django maintains a page to advice new contributors: https://docs.djangoproject.com/en/1.6/internals/contributing/new-contributors/
Contributing to Open Source does not enforce you to contribute only to a well-known community. There is a huge collection of open source projects available on websites like Github, SourceForge , Google Code, Bitbucket etc. I also enforce on the fact that just open source contribution does not help. One need to work on side-project for ideas to keep flowing out of his brain.I also you like to quote a 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 to 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
Even after reading this if you face any problem. Feel free to reach me on twitter or shoot me a mail at sayan DOT chowdhury2012 AT gmail DOT com. I would also like to thankChandan Kumar who helped me in writing this blog post, he can be reached on chandankumar DOT 093047 AT gmail DOT com.