You really don't want to read the train of thought that led up to this post. Even if I really remembered it clearly. Let's just something that it's been bubbling around in the back of my head for the past few weeks, and leave it at that.
The main advantage of OSS has always been clear and obvious. It's what prompted RMS to start the movement in the first place. IIRC, he had a printer that quit working. The manufacturer had decided to quit supporting it. He couldn't get the source code for the driver to fix it himself.
This was about the time that commercial software was starting to peek out from under its hidden rock and ooze into the Real World.
It was an alarming change in the software ecosystem, and I can understand and sympathize with his reaction.
I think he probably went overboard with that, but I can't really complain about the results.
Don't get me wrong. I can't honestly complain about the alternative, either. Closed source proprietary software has paid the bills for most of my programming career.
And there's a lot to be said about companies who can afford to hire great programmers then spend millions letting them do nothing but research that might or might not net them any benefit.
At the same time, those companies don't really produce great software.
Sure, a few do. Apple and Google spring to mind. Every few years, Microsoft takes enough lumps in some area that they throw a ton of money at some particular problem and conquer the market long enough for them to rest on their laurels (the mixed reviews I'm reading about IE 9 suggest it just might be one of those cases).
And, let's be honest. Usability counts for a lot. But not all.
Emacs is [arguably] a much better and more powerful text editor than Visual Studio. But Visual Studio takes the entire developer experience up another few notches and allows average programmers to compete with the really good ones without being forced to take the time to learn elisp. And the vast majority of emacs users aren't all that interested in commercial software, so it isn't even anything that resembles meaningful competition.
Most GNU tools probably fit into that same sort of category. Hard to use, much less understand, and created by programmers. I'm OK with The GIMP, and I can manage my [very limited] image manipulation needs with it. Actually, I can do some really cool things with it that lots of experts can't manage in Photoshop. But those "really cool things" are mostly stuff that I, as a software developer, consider "really cool things." As opposed to, say, the "really cool things" that an artist would actually want to do.
But that's just the surface.
The "real code" lies under the covers.
Sure, groups like Canonical have [reportedly] hired User Experience experts to make life simple and easy for end-users. In an effort to make the Linux Desktop mainstream, or some such. It seems to me they've done a decent job (For Some Definition Of "decent).
But the real gold there is the shared code.
I having a hard time thinking of *any* better way to actually learn an API than learning the implementation source code (and stepping through it with a debugger). I can't think of anyone, off-hand, who actually wants to do that. But abstractions leak and any non-trivial program has bugs. So we don't have any meaningful choice other than learning the way the undocumented features actually work.
I'm going to take a random stab in the dark and guess that this has been the case since programmers realized that they'd be spending a lot of time debugging.
I'm in the process of learning a "new" programming language [naming no names...this is all theoretical]. Meaning I'm spending a lot of time lurking on Usenet and IRC, and a lot more time studying ancient texts from back when this language was mainstream. Call it a masochistic exercise in self-improvement.
The experts regularly call the newbie questioners onto the carpet, then dissect their code and show them how it could be better.
I doubt anyone would argue that code reviews are a bad thing, even if they're painful.
Sure, this sort of internship is probably available at a few of the major development companies. But www.random.house-appraisal.com isn't going to have time for this sort of support. They want to plug the new guy into his cube and have him cranking out useful code as fast as possible.
I've run across that attitude more than a few times.
It doesn't matter to management if your code is elegant or maintainable. As long as they can kick the next version out the door ASAP, it's "Good Enough."
And *that* is the real reason FOSS is better.
There's no real time pressure. Sure, if there are regularly scheduled agile-style releases, there's a little. But it isn't going to impact the company's bottom line if you decide that Feature A isn't ready to ship. And you're free to go to whatever 'Net source you trust to get advice about ways to improve your implementation of that feature.
Oh, and, as an added bonus, there's a goldmine of existing example code to show you how this feature *should* be implemented.
You even get to look at the way it was implemented 10 years ago and see how the implementation has evolved and (hopefully) improved since then. [Again, naming no names].
Several of my friends today spend a lot of their time inside the Reflector for .NET. How much easier would their lives be if they could just look at the source code instead?
I'm tempted to finish up with some random old-school comment about debugging in dasm and getting off my lawn, but they've been working in the field at least as long as I have.
Maybe that makes me one of the "old programmers" who just can't hang out with the cool kids doing sharepoint anymore. Or maybe it's a sign that I've quit being so arrogant that I've finally really those hippies back in the 60's had something to teach me.