Btw. so did/do I, so don't treat it as another "smart-ass sage tutoring the world how awesome he is" kind of post ;P
People love OSS due to various reasons, naming just few:
- some love it, because there are no license fees (which doesn't mean it's FREE - this is a terrible mistake, but not the one I'll be focusing in this article on)
- some love it, because of its openness - there's usually plentitude of freely available materials roaming on Internet: tutorials, guidelines, samples, even full projects - it's not that common (due to obvious reasons) for more commercially-focused distribution models
- some love it, because it's a good opportunity to learn doing stuff by tracking such project's lifecycle, browsing its source code, documentation, APIs, etc.
But it's far more interesting to consider why people HATE OSS (permanently or every once in a while):
- when there is trouble (bugs, crashes, etc.), there's very limited accountability - there's no obvious candidates to dump responsibility on
- when something is lacking (missing docs, functional gap, etc.) - you don't have an causative power of paying, influential customer; this applies for both small changes & very meaningful decisions like general direction of product development
- OSS easily succumbs to the whims of community - people flow all the directions, sometimes there are only single people behind the product; you'll never know what will happen with it in next 6 months, even if its current condition seems stellar & it reaches the peaks of hype on Internet today
Leechin' & bitchin'
All of the above is true & I've found myself complaining about that several times in the past:
"WTF Node, again a breaking change, so I have to revert to 0.10?!"
"WHO the hell has created this wicked-sick-shit-piss-of-llama dependency on god-forsaken Python TWO-DOT-SEVEN!"
"XXX's port to Windows is a stinking pile of crap - it's not on par with the trunk, it has ridiculous dependencies that could be avoided with putting some effort & it hasn't been sufficiently optimized."
Sadly, this attitude is totally anti-OSS. Because OSS isn't just about using software that is freely accessible with full access to the source code. OSS is also about the COMMUNITY & the CONTRIBUTING.
The right to criticize?
If I don't like a book I've read, a record I've listened to, a movie I've been watching, a sports game I've seen - I feel legitimate to criticize them. And I deny statements like:
"If you feel you could do better, why don't you make a better movie, write a better book, record better songs, play a better game, etc."
In all those cases, I've paid some professionals (indirectly, but it doesn't matter) who are supposed to excel in a given field of expertise (usually quite far from what I find myself proficient in) for a service / product I have certain expectations about. I've paid them because I believe they could do it better than myself or because I didn't want to do it on my own (or just wasn't capable to).
OSS is a completely different kind of story:
- you're not paying anyone for service / product / anything
- programmers use the work products of other programmers - it's still the same industry & pretty much the same (or very similar) set of skills required
YES, I still can have expectations on what I've just found. And I still can criticize (sensibly and constructively) the stuff that's not done properly or has some other flaws. But wouldn't it make more sense to actually HELP the project at least a bit? In a gesture of gratitude for the delivered value? To make product even better, so it can be even more useful for even more people in future?
"Me? Why me?"
I'm not necessarily speaking about diving deep into the product at the first sight. There's usually so much less demanding work to do around - testing, reducing tech debt, updating or reducing dependencies, cleaning old code, synchronizing ports, even fill the missing docs.
It's not necessarily always the most fascinating stuff in the world - but that's where the main superpower of COMMUNITY can help: if 1 of 10 people who use a library / framework helped just a tiny bit, the sum of those changes would make a tremendous impact.
Why not you then?
- Your employer forbids?
- You don't have time?
- You don't know whether there's something you could help with?
This is all bullshit of course. Cheap excuses. I know that, because I was using them as well ;) And plenty more as well.
Pic: © Yury Zap - Fotolia.com