

Ask HN: Please help a first-year CS student contribute to OSS - jpau

Hi HN,<p>I&#x27;m a first-year CS student. I know a little bit of Python, JavaScript, SQL and C# - all to the level one would expect of someone who has completed a CS101-styled class in that language (except maybe JS).<p>I want to contribute towards something useful, and I want to do so as part of a community. The obvious answer is to look for an open source project, because they&#x27;re everywhere, and all love volunteers.<p>But I have a problem. I don&#x27;t know how or where to begin. I look at projects that look exciting, yet I become dumbfounded. I need to begin somewhere - some project and&#x2F;or community - that is simple... I <i>feel</i> that I need hand-holding, but who could possible have the time for that? As much as I&#x27;d like to, I know that I - sadly - do not have the time to hand-hold beginners in my own area of knowledge (as well as a CS student, I&#x27;m a finance graduate).<p>I would hope that such assistance might result from a project or community structured as such. Surely I am not the only one in this boat. Does there exist some sort of structured open source project and&#x2F;or community that offers such pseudo-hand-holding? Or, am I starting to early; must I learn more about data structures and software design before looking towards OS?
======
mindcrime
Believe it or not, this is a fairly hard request to satisfy. And that's mainly
because it's _SO_ general and vague. There are 10 bazillion different OSS
projects, and there is almost no way on heaven or earth for somebody who
doesn't know you, to tell you which one(s) to start with. It depends on what
you're interested in, what your skills are, how motivated you are, how much of
a self-starter you are, etc.

And, truth be told, it's a darkside of the OSS community that we aren't very
good at "hand holding" beginners - much to the detriment of everybody
involved, IMO. The reasons for that are legion, but for whatever reason, a lot
of projects aren't all that interested in helping a newbie move up the
learning curve.

Anyway, for somebody from HN to help you very much, it would almost take
somebody who runs a project to step in and make a specific offer to work with
you. Otherwise, all somebody can really do is offer platitudes like "look for
a project that really interests you" and "look for projects that publish a
list of 'low hanging fruit' bugs for beginners" (there _are_ projects that do
that, and that is good advice, BTW). But as far as generic advice goes, you
can get plenty of that by Googling:

[https://www.google.com/search?q=contributing+open+source](https://www.google.com/search?q=contributing+open+source)

If it were the right season for it, I'd suggest you look into the Google
Summer of Code program, but you'd have to wait until next summer now.

 _Or, am I starting to early; must I learn more about data structures and
software design before looking towards OS?_

Nah... if you know Git (or SVN or CVS or whatever) and can use the build tools
commonly used in the language of the project you're interested in, there are
almost always bugs to be fixed that amount to not much more than typos. Hell,
just going in and removing commented out "dead code" could be useful to some
projects.

One angle you could look into is pick a project, download it, and run a code
analysis tool against it (if you were a Java guy, I'd say PMD or FindBugs, but
you'll have to find the equivalent for your chosen platform) and then examine
some of the supposed "bugs" it find (quoted because a lot of the "bugs" they
find are false positives or subjective issues of style), decide if it really
matters or not, and possibly submit a patch.

Anyway... wish I could help more, but that's about everything that jumps to
mind at the moment. Good luck!

~~~
jpau
Mindcrime, your reply is fantastic and covers the problem well. Thank you.

But it also turns out that your words "projects that publish a list of 'low
hanging fruit' bugs for beginners" is a great way to phrase "give me somewhere
to start contributing to OS" for Google.

You have given me a few roads to go down :)

~~~
nandemo
Mozilla's bug tracking system has a "good first bug" tag:

[https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw:[goo...](https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw:\[good%20first%20bug\])

Other projects, such as GHC (the Haskell compiler), have a "difficulty" field
in their bug tracking system.

------
bjourne
If you know where to look, there are thousands of ways to contribute to each
project. For example, q&a of the Windows port! Most free software devs use
Linux, so the Windows port might not have gotten much attention.

    
    
       Step 1: Find a project that supposedly should work on Windows. E.g, gtk, Node.js, emacs, Julia language, R etc. 
       Step 2: Check out the project on Windows.
       Step 3: Follow the instructions for building it. 
       Step 4: The instructions in step 3 likely don't work. :) Or they are incredibly 
       vague and incomplete. Or there are random compiler errors all over the place.
       Step 5: Fix the problems!

------
stevenbrianhall
I actually just committed my first Open Source contribution patch to the next
Wordpress release yesterday afternoon -
[http://core.trac.wordpress.org/ticket/25086](http://core.trac.wordpress.org/ticket/25086)

After asking lots of questions, I was pointed to
[http://make.wordpress.org/core/handbook/](http://make.wordpress.org/core/handbook/),
which does a pretty decent job outlining the workflow. It helps to read a lot
of tickets first to get a feel for what they're fixing -
[http://core.trac.wordpress.org/report/14](http://core.trac.wordpress.org/report/14)
and then find a neglected (but fairly recent) but and chip away at it.

It's overwhelming, but I've found a great amount of confidence in just picking
a (tiny) bug, fixing it, and watching the process work. Good luck to you!

------
S4M
I gonna give you couple of links that were already around on HN:

\- [http://openhatch.org/](http://openhatch.org/) a list of issues in open
sources project waiting to be fixed

\- [http://duckduckhack.com/](http://duckduckhack.com/) you can add some
plugins to duckduckgo (it's a search engine)

\-
[http://www.whatcanidoformozilla.org/](http://www.whatcanidoformozilla.org/)

------
webvet
Here is one that is almost 'Ready to Go'... HTH

[http://openoffice.apache.org/get-
involved.html](http://openoffice.apache.org/get-involved.html)

------
bachback
how about building a website that solves this problem? I would say do
something for Bitcoin to improve the world. drop me a line if you want
nfx9@hush.com

