top | item 6344095

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

12 points| jpau | 12 years ago | reply

Hi HN,

I'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).

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're everywhere, and all love volunteers.

But I have a problem. I don'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/or community - that is simple... I feel that I need hand-holding, but who could possible have the time for that? As much as I'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'm a finance graduate).

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/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?

8 comments

order
[+] mindcrime|12 years ago|reply
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

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|12 years ago|reply
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 :)

[+] bjourne|12 years ago|reply
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|12 years ago|reply
I actually just committed my first Open Source contribution patch to the next Wordpress release yesterday afternoon - http://core.trac.wordpress.org/ticket/25086

After asking lots of questions, I was pointed to 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 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!

[+] bachback|12 years ago|reply
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 [email protected]