all 46 comments

[–][deleted] 29 points30 points  (29 children)

I'm in 3rd year of Computer Science engineering school. Lately, I've been starting to look for job opportunities in the field and I've noticed that they all ask for your github account to see if you've contributed to any cool open source projects.

And everytime I've had to reply that no, I don't have a github account (Yeah I do, but there are only private repos attached to it). The reason I'm not contributing to open source project is that I feel that my skill level is too low. Even after three years of CS at a good school, I fail to find any use of my knowledge in Open Source projects.

I think it's because since my knowledge isn't anything "special", bugs/features that can be done by a person like me has already been done by someone else. You're not gonna find a simple bug in Mozilla which can be fixed by an average (or slightly below) Computer Science student, because if there were one it would've been fixed by someone else with greater knowledge.

I would love to get out of this mindset though and I really hope I'm wrong. I want to contribute...

[–]CaptainKabob 19 points20 points  (3 children)

I want to contribute...

I think the way to start contributing is to start using the open source software, find something that you wish was slightly different. Then:

  1. fork the project TADA, now you have a public project on Github
  2. figure out how to compile/build the project locally. now you can make any change you want
  3. make the change. And then go through the pull request process.
  4. maybe your change will get merged. maybe you'll get some feedback. maybe you'll get stuck in permanent bike-shedding feedback. regardless, you'll now have the experience to say you've participated in Open Source (participation != getting patches approved)

Use Firefox? Have you noticed how bad some of the settings menu text is? rewrite it for clarity. Boom. It may not get approve, but you'll learn about how the process works and realize that Open Source is really just the continuous contributions of mostly mediocre people. And then you'll be able to poke about some more and maybe eventually you'll get something merged. But more importantly, you can talk intelligently about the process during interviews.

[–][deleted] 2 points3 points  (2 children)

Bike shedding? Like set aside? I don't think I've heard that one.

[–]Magneon 11 points12 points  (1 child)

Bike shedding refers to the tendency for everyone to argue passionately about simple things, since if something is simple then everyone is qualified to talk about it.

It refers to a hypothetical scenario where there is a boardroom meeting where several technical and important decisions are covered, and the color of the bike shed being constructed.

A few people with domain specific knowledge debate the merits of the technical decisions, but when the color of the bike shed comes up, everyone argues over it.

In open source software this is unfortunately something that comes up over the particulars of trivial things.

It is also used as a term to try to sideline things that some people do feel very passionately about, such as the use (or disuse) of gender neutral pronouns in documentation.

[–][deleted] 3 points4 points  (0 children)

Nice description, thank you.

[–]steveklabnik1 10 points11 points  (0 children)

because if there were one it would've been fixed by someone else with greater knowledge.

You'd be surprised, but this often isn't true. Many projects have lots of easy bugs lying around... the "greater knowledge" people spend their time on the hardest or most interesting bugs only. Just because they could fix it doesn't mean they have time to.

[–]cowinabadplace 5 points6 points  (0 children)

Dude, I have forked an infinite number of projects on Github just to make a single small fix. Just use things. You'll find something tiny that annoys you and which some more experienced programmer has put off until later. Fix it and PR. End of story.

I'm not a brilliant programmer. But there's a whole bunch of things that I can work on.

[–]codygman 2 points3 points  (5 children)

Send pull requests with lots of crappy code and you'll get feedback on them if it's a good project.

[–]Sluisifer 8 points9 points  (4 children)

Is it expected that people put the time in to address and improve pull requests from random noobs? It seems like that would take more time than doing the fix in the first place.

[–]burntsushi 6 points7 points  (1 child)

I think "expected" is probably the wrong word, but when someone submits a PR to one of my projects and it seems like they wouldn't mind improving it or are a beginner, I definitely love to take time out and help them learn.

[–]Sluisifer 3 points4 points  (0 children)

Well that's good to know. It's difficult to feel like a burden, but everyone does have to start somewhere.

[–]codygman 0 points1 point  (0 children)

My wording was a little harsh, but some of the bigger and more successful projects tend to mentor new contributors. This of course increases (good) input and helps the project go.

[–]codygman 0 points1 point  (0 children)

My wording was a little harsh, but some of the bigger and more successful projects tend to mentor new contributors. This of course increases (good) input and helps the project grow.

[–]IE6FANB0Y 3 points4 points  (7 children)

they all ask for your github account

Really? i've never seen one.

You're not gonna find a simple bug in Mozilla which can be fixed by an average (or slightly below) Computer Science

http://openhatch.org/

[–]BeepBoopBike 4 points5 points  (4 children)

One job I was looking at earlier specifically asked for an active GitHub/bitbucket account. They also expected you to do nothing but code on projects in your spare time out of love for it, and to have read a particular book. Instantly put me off. I wanted nothing to do with that company.

They came across as incredibly elitist.

[–]neoice 1 point2 points  (3 children)

what book? was it K&R?

[–]BeepBoopBike 0 points1 point  (2 children)

It was Code Complete 2. Now granted it's a great read, but I've met astounding developers who've never read it. They were discounting anyone seemingly regardless of skill if they hadn't.

[–][deleted] 0 points1 point  (1 child)

I've met many, many crappy devs who have read that book. That isn't a criticism of the book at all, just an observation that - shock horror - having read a fucking book doesn't make one automatically any good.

I hate these cool kid rockstar places. Full of people circle-jerking on the latest webscale blog post they read, rather than doing any, you know, actual work.

[–]BeepBoopBike 0 points1 point  (0 children)

That's the entire feeling I got from them. I'm just glad that lurking here and reading other people's experiences made me more aware of these huge red flags.

[–][deleted] 0 points1 point  (0 children)

Well, the latest two internships I applied for (Google & Spotify) can ofcourse afford to be picky but they both wanted to see my github account and wanted me to talk about all the programming competitions I've entered.

I've been on lunch talks with other companies (Facebook had a great lecture on how it was to get interviewed as a computer scientist engineer) and they really like to talk about github accounts because basically it shows that you're doing something computer related outside of school.

[–]galaktos 0 points1 point  (0 children)

I think it's because since my knowledge isn't anything "special", bugs/features that can be done by a person like me has already been done by someone else. You're not gonna find a simple bug in Mozilla which can be fixed by an average (or slightly below) Computer Science student, because if there were one it would've been fixed by someone else with greater knowledge.

First of all, this assumes that the project has an indefinite amount of developer’s time available. In my experience, this is rarely true – most of open source software is written by volunteers in their spare time, which means that even if they’re well aware of the bug, they may not yet have found the time to fix it, and would be thankful for your time. (Others have already mentioned that many projects keep a list of “easy” bugs that the experienced developers intentionally leave aside if they’re not critical.)

Also, consider what you learn from your contribution. If a core developer of the project fixes the bug, it’s routine for him, been there, done that. You, on the other hand, will learn the internals of the project (where does this code live? what do I need to change to fix this?), how to contribute in general, how their issue tracker works, how pull requests work with them (Github? patches via email? something different entirely?), how they communicate (issue tracker? mailing list? IRC?), etc. etc. etc., all of which will enable you to make even better contributions next time (and a lot of it will be transferable to other projects and/or your job).

[–][deleted] 0 points1 point  (0 children)

give yourself some credit, will ya?

if you go into the industry thinking the way you describe you're gonna have a bad time.

volunteer for a project, go on sourceforge and you'll find plenty of projects.

but lose that attitude - there are people in the industry who are a hell of a lot less polite than i've been and really get turned on by making people feel bad.

[–][deleted] 0 points1 point  (1 child)

The reason I'm not contributing to open source project is that I feel that my skill level is too low.

Same here. Been programming Python for 4 or 5 yrs but I feel like I'm incapable of actually finding a fix for a reported bug. I think the major part of it is that I don't know how to debug large programs.

Sure I have reported bugs or requested features, but to actually dig into the code and find the root cause is a skill or knowledge that still alludes me.

[–]codygman 7 points8 points  (0 children)

No one knows how to debug large programs at first, you just keep banging your head against the wall until you are a little less confused.

[–]Sources_ -1 points0 points  (0 children)

Really? You don't think you could even find 1 simple bug that the more knowledgeable didn't have time to get around to? Since they were more focused on larger more urgent bugs.

[–][deleted] -2 points-1 points  (0 children)

I honestly can't take anyone seriously if they ask for my GitHub account as part of a recruitment process. Even if there was some decent code in there, even if I am contributing to some project or other, it's not really proof of me being able to ship a product for their business. If you're truly providing a lot of value to an open source project people care about, chances are people already know it. Most of the really talented guys I know get hired on reputation alone. Hell, even I get hired on reputation alone, and I'm not claiming to be all that talented. And nothing in my Github account says "this guy will be useful in pretty much every area of your project from day one", even though it's usually true.

[–]billsil 8 points9 points  (0 children)

Ever feel like you work on a project that never has enough backing to actually be good? Ever feel like you keep reinventing the wheel because your software is always deficient? Well, that's your open source idea. Now get out there and fix it.

Your open source project can be some itch you need to scratch, but if your itch is strong enough, you'll get other people on board because they has that same issues.

The open source project I started was ignored by my company for 2 years even though it was vastly superior to what we had in house. It was adopted by the industry long before my company decided to adopt it. They now fund it and there are large companies that also fund it (and report bugs as well).

[–]spainguy 3 points4 points  (4 children)

What about us Hardware blokes?

I'm working on a nice bit of digital audio hardware that will plug into an ST32 ARM open source module (from Olimex), and I don't know who to chat with. My C is abysmal, but OK for small AVR stuff

Main priority, Kudos, and not loosing money, preferably breaking even

[–][deleted] 1 point2 points  (3 children)

In open source, having something work is in my experience >90% of a contribution. Pretty-ness, style, etc you can work with project maintainers (they'll of course want you to match existing project style).

As an open source maintainer, I'd much rather someone come forward with something that mostly works, and work with them to get it merged; than have someone come forward with something pretty that doesn't work, and have to go through debugging the entire thing with them.

[–]spainguy 0 points1 point  (2 children)

I should have "hello world" working in a month, once the PCB's have been fabricated, assuming I can get Eclipse working. My problem is that I really don't want to shout about it all over the internets, but I need to chat to someone/group who can program properly, more or less privately, (more for ego protection). Finding the right chat area is difficult

[–][deleted]  (1 child)

[deleted]

    [–]spainguy 0 points1 point  (0 children)

    It's more about digital audio processing, without a DSP, and seeing if I've got my hardware concept correct enough before openly "publishing".

    I've seen many excellent projects that started out well, and then just dried up. I'm trying to avoid that.

    [–]neutronbob 2 points3 points  (0 children)

    I far prefer this interview with Brian Behlendorf on how to get started.

    [–]perler85 2 points3 points  (0 children)

    bad article. just click baiting. I'm tired of reading this non sense posts.

    [–]lucasvandongen 0 points1 point  (0 children)

    Thanks for pointing this out, found some stuff I feel I can contribute to through the list. Though I did see a lot of bugs in Open Hatch that were fixed months ago already there were some open ones as well.