The biggest problem with contributing to [edit: established] Open Source projects is the barrier to entry. As someone who gets paid to work on a popular open source project full time, I can tell you it's often way harder than it's worth to get involved.
You need to download and get the code running on your computer, and configure everything to run correctly. You need to learn the ins and outs of how everything works. You need to install and learn about the code the project depends on (and, most projects will have numerous vendor libraries). You need to get acquainted with the main developers on IRC, so you don't step on any toes. You have to learn how they do bug ticketing, and you need to find bugs you can do. And your first code review? Trust me, it'll be painful. It's not easy to get started.
If I left my job today, would I continue to contribute? Sure. But only because I already have a foot in the door, and know my way around.
All that being said, I truly believe universities should require students contribute to at least one open source project- it's a great learning experience, and the projects and their users benefit from the volunteer labor.
That hasn't been my experience at all. I mostly contribute relatively small patches to programs that I use myself and see an itch that I need to scratch.
Sometimes it's really hard to get started, but usually the problem you want to solve is in some fairly isolated subsystem and writing a sane patch only takes an hour or two at most.
Of course you sometimes step on someone's toes, but more often than not my patches just get accepted.
GitHub has massively reduced the amount of work needed to start contributing to a project - click "fork", make your changes, send a pull request. That said, actually learning how to use git in the first place is quite a bit of work.
This might be true for big projects, but most smaller open source projects are a lot easier to get into and their maintainers are usually grateful for any useful contributions they can get.
I'd say you should start by contributing to a small project, where there usually isn't a lot of red tape to learn. And most large projects have extension mechanisms, so if you want to contribute to a large project, make a small stand-alone extension. Or contribute to someone else's stand-alone extension.
I see you work for Mozilla. (Hey!) I work on Mozilla too, I certainly didn't feel like I needed to learn "the ins and outs of how everything works". I work in mailnews and I really have no idea how layout/ etc work. I don't think I know how most of mailnews works, either. I tend to think in terms of abstractions and trust the underlying system, and it's worked really well 90% of the time.
I think the author is missing an important point: You should also contribute to Open Source projects because you are using them.
This is the most natural motivation for contribution. You care about the project not just because it's cool and Free Software and you want to exercise. You mainly care because you're using it everyday - be it your favorite game or an important library (like jQuery, Qt) you use at work.
It is often most sensible to fix the bug where it appears, instead of working around it in your application. And with Free Software (aka Open Source) you can simply do that, without having to ask anyone for permission.
Getting this bugfix/improvement into the official version is a separate step. But it is worth the effort, because the alternative is to maintain your patches separately from new versions of the library. Or, worse, to maintain workarounds for bugs in the library that might or might not be fixed in future versions.
"Open Source projects offer you a chance to work on something that you want rather than something that others want you to work on."
As far as I am concerned starting my own project is more what I want rather than fixing bugs in other people's complicated code which code might also be philosophically very alien to me. To take compromises there is my day job. To work on cool things I start my own project/startup.
This lecture was given to students to start to understand how real software development works and get an edge on their classmates while applying their technical skills.
For me, as a designer, contributing to Open Source is a great exercise. But as gkoberger states, it's hard to get 'a foot in the door'. And getting your GUI implemented is also a long process.
If you have spare dev cycles, I'd say it's in your better interest to build a software product that will make you money.
You get all the advantages the author talks about, with none of the disadvantages that the commenters here point out. You get income, and you get something concrete you can point to when it comes time to interview for your next job:
"I built and designed somerandomthing.com from scratch. It's built on the mZungu stack and handles peak loads of 14k requests per second. Check it out when you get a chance. It pays my rent."
Agreed. I find it admirable that people can produce code for purely altruistic purposes. I wish I had the time to do that in between my work that pays the bills and my work on my own project that will hopefully soon earn some money.
At the same time, I do end up using a lot of open source software as part of that work, and when I have issues with it, I do submit fixes back to the project. Sometimes they are accepted (in some form), sometimes they're ignored. This isn't overly time consuming, and if nobody did it, I'd be spending a lot more time fixing bugs myself.
Likewise, I occasionally open-source stuff I build that happens to be reusable. As far as I can tell, none of that code is widely used, but on the off chance that someone is looking for something exactly like it, it might save them some time.
Nice advice for the original target audience of people with lots of spare time who have already sorted out where the rent money is coming from.
For the other 90%+ of us not so relevant.
[+] [-] gkoberger|15 years ago|reply
You need to download and get the code running on your computer, and configure everything to run correctly. You need to learn the ins and outs of how everything works. You need to install and learn about the code the project depends on (and, most projects will have numerous vendor libraries). You need to get acquainted with the main developers on IRC, so you don't step on any toes. You have to learn how they do bug ticketing, and you need to find bugs you can do. And your first code review? Trust me, it'll be painful. It's not easy to get started.
If I left my job today, would I continue to contribute? Sure. But only because I already have a foot in the door, and know my way around.
All that being said, I truly believe universities should require students contribute to at least one open source project- it's a great learning experience, and the projects and their users benefit from the volunteer labor.
[+] [-] avar|15 years ago|reply
Sometimes it's really hard to get started, but usually the problem you want to solve is in some fairly isolated subsystem and writing a sane patch only takes an hour or two at most.
Of course you sometimes step on someone's toes, but more often than not my patches just get accepted.
[+] [-] simonw|15 years ago|reply
[+] [-] motters|15 years ago|reply
[+] [-] abrahamsen|15 years ago|reply
I'd say you should start by contributing to a small project, where there usually isn't a lot of red tape to learn. And most large projects have extension mechanisms, so if you want to contribute to a large project, make a small stand-alone extension. Or contribute to someone else's stand-alone extension.
[+] [-] sid0|15 years ago|reply
[+] [-] vog|15 years ago|reply
This is the most natural motivation for contribution. You care about the project not just because it's cool and Free Software and you want to exercise. You mainly care because you're using it everyday - be it your favorite game or an important library (like jQuery, Qt) you use at work.
It is often most sensible to fix the bug where it appears, instead of working around it in your application. And with Free Software (aka Open Source) you can simply do that, without having to ask anyone for permission.
Getting this bugfix/improvement into the official version is a separate step. But it is worth the effort, because the alternative is to maintain your patches separately from new versions of the library. Or, worse, to maintain workarounds for bugs in the library that might or might not be fixed in future versions.
[+] [-] nadam|15 years ago|reply
As far as I am concerned starting my own project is more what I want rather than fixing bugs in other people's complicated code which code might also be philosophically very alien to me. To take compromises there is my day job. To work on cool things I start my own project/startup.
[+] [-] aaronblohowiak|15 years ago|reply
[+] [-] oceanician|15 years ago|reply
Ultimately it's mainly the business community that benefits, rather than the coder who are typically paid just around the cost of living.
So, why can't more businesses allocate time to contribute back?
[+] [-] lovskogen|15 years ago|reply
How could this be made more lucrative?
[+] [-] jasonkester|15 years ago|reply
You get all the advantages the author talks about, with none of the disadvantages that the commenters here point out. You get income, and you get something concrete you can point to when it comes time to interview for your next job:
"I built and designed somerandomthing.com from scratch. It's built on the mZungu stack and handles peak loads of 14k requests per second. Check it out when you get a chance. It pays my rent."
[+] [-] pmjordan|15 years ago|reply
At the same time, I do end up using a lot of open source software as part of that work, and when I have issues with it, I do submit fixes back to the project. Sometimes they are accepted (in some form), sometimes they're ignored. This isn't overly time consuming, and if nobody did it, I'd be spending a lot more time fixing bugs myself.
Likewise, I occasionally open-source stuff I build that happens to be reusable. As far as I can tell, none of that code is widely used, but on the off chance that someone is looking for something exactly like it, it might save them some time.
[+] [-] daleharvey|15 years ago|reply
[+] [-] twymer|15 years ago|reply
[+] [-] MoreMoschops|15 years ago|reply
[+] [-] CraigBuchek|15 years ago|reply
http://www.granneman.com/techinfo/linux/contributewithoutcod...
[+] [-] danio|15 years ago|reply
[+] [-] tfh|15 years ago|reply
[+] [-] unknown|15 years ago|reply
[deleted]