Why you should contribute to Open Source?
shal.in
shal.in
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.
This is often perceived as bureaucratic and timidity against changes, but usually this is nothing more than a self-defense against subtle bugs, unnecessary complexity and vanishing readability, for which big projects are more vulnerable than small projects.
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.
There are hundreds of reasons why they won't pull your changes. This doesn't apply to small, single dev programs. They are usually, at least in my experience, pretty happy that someone wrote a patch, but the big ones are really, really bad.
Basically, if upstream doesn't accept your patch, you have two options:
Either you really want to see your patch upstream. In that case you invest the time it takes knowing that your contribution will be measured by the same scale that everyone else's contribution has been measured with. You also know that your contribution will be usable and part of a stable project. And you'll be confident that it probably won't be your mistake taking hundreds of sites down that are using the project you contributed to and are now hitting a bug you introduced.
On the other hand, you can feel that it's not worth the hassle. That's totally fine. You'll just have to manage your patch on your own from now on (in the end maybe creating an even bigger hassle in the long run).
Git gave you a very nice toolset for merging patches to an externally updated project, so that should be way easier than it was in the SVN days.
What Github did was to actually make it possible to decide either way.
Before Git and Github, your options were to either have it integrated upstream or to be stuck with whatever version you were patching (due to severely lacking merge support)
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.
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.
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.
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?
How could this be made more lucrative?
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."
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.
Nah, it's because it's more fun to work on open source code! I don't work on stuff that's not fun or not interesting in some way, so there's definitely always an element of self-interest.
As to giving back, there's nothing stopping you. My latest for-profit venture has spun off two open source projects that "the community" can use in the future. Past projects have done the same.
The key is to do things to benefit yourself, with open source being a side product. That's how big companies do it. Why shouldn't it be the same for us little guys?
http://www.granneman.com/techinfo/linux/contributewithoutcod...