

Ask HN: How do I begin contributing? - chunky1994

I've always wanted to contribute to the various Open source projects out there (primarily mozilla) as a form of learning to code better and helping the web at large.
However, I'm always unsure of where to begin.<p>I'd greatly appreciate it if someone would point me in the right direction! I've been using C++ for about four years and python for the past two. Although i don't code regularly, I do have some proficiency with C++, however I'm still unsure whether I have the right skills to take on such a project.<p>It would also really help if someone could give me a flexible time framework within which I can start doing real work (i.e fixing bugs et.c), since I'm still a freshman in college and do not know how much time I can devote to such a project. Thank you!
======
paulproteus
First of all, kudos to you for thinking about contributing to bigger projects,
and open source ones at that!

Projects with large codebases always take some time to figure out. Therefore,
it's wise to start with a bug that a more experienced programmer has labeled
"bitesize". Other commenters here mentioned Josh Matthews' super-cool "Bugs
Ahoy" tool for Mozilla -- <http://www.joshmatthews.net/bugsahoy/>. I'll chime
in that I'm a maintainer of a similar thing that covers even more projects:
<https://openhatch.org/search/>

If you want a general roadmap of how this works, we (OpenHatch) have also
written up a step-by-step guide here: <http://labs.openhatch.org/foss-contrib-
guide/> . Work through it as a checklist, clicking the box next to each step
as you do them. We've found that works really well with people.

The two big things in my opinion, as you start out, are:

* Find a project that you care about. Otherwise, you'll lose momentum. It's cool that you want to work on Mozilla-y projects! My only warning is that the long build time means you are going to have to plan to wait a while (about 1 hour) between downloading the code and actually running your local build.

* Find a task that is doable, so you can actually get it fixed, and you actually enjoy it!

Some things to watch out for:

* The build process could be super slow, for big projects like Firefox.

* Eventually you're going to have to get used to navigating enormous projects. This might sound daunting, but actually I think you'll find it fun after a bit.

* Make sure you have a place where you can reach out and get help. You'll probably be running into all sorts of new things -- version control tools, patch submission guidelines, an enormous codebase -- and you're more likely going to have a good time if you can get your questions answered.

For that last one, feel mega free to join #openhatch via IRC on freenode.net
(more info on that here if you don't know IRC --
[https://openhatch.org/wiki/Open_Source_Comes_to_Campus/JHU/L...](https://openhatch.org/wiki/Open_Source_Comes_to_Campus/JHU/Laptop_setup)
). OpenHatch is a community of people welcoming to newcomers in open source
generally, and we can usually help you straighten out whatever problems you're
running into.

There's also #newbies on irc.mozilla.org; I'd recommend joining there, too.

If you want a quick tour of what it's like to submit a patch, you can work
through the OpenHatch training missions at <https://openhatch.org/missions/>.

You asked for a "flexible time framework" -- the good news, it's all on your
own timeline. You can show up whenever you want. If you can explain more about
what you wanted with that question, I'd be happy to explain.

Good luck! Welcome aboard!

------
LoganCale
I've often found it hard to find something to contribute to an open source
project if I'm just seeking out issues to fix—most of the time if the issue
has been up a while and isn't already fixed, it's probably not a quick and
easy fix to someone not already familiar with the codebase—at least for me.

In the cases where I have either fixed bugs or added features, it's with a
tool I use extensively and came across an issue in it or an area where it
didn't do something I want. It's much easier for me to figure out what to do
in that situation, since I have a personal interest in that feature being
added.

So, in summary, a way I've found to begin contributing is to find bugs or
limitations in tools you already use rather than just browsing issue lists on
projects you may not be as familiar with.

------
alphast0rm
I asked a very similar question a while back, hopefully some of the responses
can help you get started:

<http://news.ycombinator.com/item?id=4286902>

------
moystard
The best way to start contributing is to go on github, perform a quick search
for some projects you like, pick an issue, fork the project and tackle it.

I personally think github represents a cheaper solution to enter the open
source world as it simplifies a lot some processes (such as contributing a
patch to a project).

The hardest part is to start coding and to overcome the fear that you might
not be good enough because every little helps.

~~~
paranoiacblack
I completely agree with this approach as the most obvious and simple way to
get involved.

For some alternatives, I recommend you stop by the IRC channels of some of the
projects you want to work on (like Mozillas) and keep track of the discussions
they have. You can always ask the people there how you can help and, IMO, they
are usually pretty nice folks who'd like your contributions, however small.

~~~
moystard
Mozilla people are very nice but I am not sure that a project like Firefox is
the best way to get into open source development: it is quite a big and
complex project; easy to feel lost.

------
mcpherrinm
For Mozilla, Josh Matthews made a page to find mentored bugs:
<http://www.joshmatthews.net/bugsahoy/> which is a good resource to finding a
task and somebody to help you.

If you're a bit more brave, you can just dive into bugzilla.mozilla.org and
find something you want to fix, but honestly it's full of junk bugs and
without having a feel for things, you'll have a hard time.

