Why Linux? (Part 6: Freedom)
(This is part of a series of posts on Why Linux?)
I think of myself as reasonably pragmatic in my approach to Free/Open Source software. I don’t get worked up over which set of language people want to use. I use devices that require binary firmware to be downloaded to them (because just because I can’t see it doesn’t mean it doesn’t exist). I have non-free in my sources.list
.
And yet, talking to other Linux users these days, I realize I’m much more of a Freedom nut job than average. I want the source, be it for a driver, a minor widget, or a full app. I don’t buy nVidia. I will sacrifice a degree of functionality in order to get Free. And while I think WINE is an excellent piece of software, I think the best end result is that it’s no longer necessary, not that it’s a perfect implementation of the ABI.
How does any of this help justify my use of Linux in the work place? As previously mentioned, I’m a developer. Most developers don’t operate in a vacuum; they have to inter-operate with other ecosystems. And usually somewhere along the line there’s a failure to document exactly how something is handled, or an ambiguity about what exact choice might be taken. If I have access to the source then I can check that out for myself. If I don’t, I have to guess. As an example, a long time ago I was involved in writing a serial console driver for QNX. There came a point where the behaviour wasn’t quite as we’d expect. Although the organisation had a license for the source, I wasn’t allowed to look at it. Instead I had to come up with a series of suitable questions that someone who could look at the source could answer without violating any NDAs. If I’d been able to look at the source directly we’d have all saved a lot of time. And that’s an example where someone could look at the source, rather than having to make a bunch of guesses and instrument tests to see which was right.
Access to the Linux source has helped me in other commercial contexts too. At Black Cat we were able to take advantage of patches like grsecurity in order to tighten up shell account boxes. I wrote the IPv6 support for l2tpns, because we had access to the source and could. I’ve been able to look at the source to understand exactly what SCSI responses are sent in certain circumstances too (or understand exactly what the error that a user land test program was getting back meant).
Also I’m a big believe in Linus’ Law. I do think that good Free software is much better than proprietary software (there’s some really bad Free software out there though, I’m not disputing that). The fact that smart people can look at it and scratch whatever their itch is means that we get a gradual process of improvement that can’t be ignored. Equally as long as someone has an interest in the software, end users can’t be left high and dry by organisations abandoning still users applications. I think that should be a powerful driver to business to look towards Free software.
(Before my more astute readers point it out; yes, I am employed writing non-free software. See the first sentence. One day I’ll find a job working on Free software that ticks enough of the other boxes to be viable.)