Linux, GNU, Fragmentation and... Progeny?
Sam Hart2010-07-05 05:30:10
In this first entry in the "Android and dreams undreamt" rambling, I'll briefly go through the Linux history to date, touch on fragmentation, and mention some of the work we did at Progeny (the reasons will become apparent soon :-)
The history of Linux, GNU, Open Source, et al is really complex. I have no intention to do an exhaustive review of it, as a simple Google search will yield you a mountain of info. Instead, let me race through the relevant points.
In 1983, Richard Stallman started the GNU Project. His aim was to create a free UNIX replacement. He authored a landmark bit of legalese, the GNU General Public Licence (GPL), which was designed to ensure source code licensed under it would remain free (as in freedom, or free speech) and available for anyone to read/modify/redistribute (provided they, in turn, adhered to the GNU GPL's requirements). The GNU project then proceeded to build everything that a UNIX platform would need which included much of the userspace and development tools you'd need to build a complete free UNIX.
The one thing that the GNU project didn't create was the core OS kernel.
1991, Linus Torvalds creates the Linux kernel as a UNIX-like (actually, MINIX-like) kernel. He announces it to the young internets (specifically, a usenet group), builds it using GNU build tools, and winds up licensing the kernel under the GNU GPL.
One of Linux's early features that appealed to people was the fact that it ran on common desktop PC hardware (traditionally, most Unixes ran on expensive systems that your average user couldn't typically afford). It wasn't the only UNIX-like OS to run on common PC hardware, but it very quickly became extremely popular.
The big problem with Linux was that you essentially had to be a UNIX guru to use it. You had to be able to build your entire Linux system and GNU infrastructure by scratch. This was hard.
As a result, within a couple of years you started to see collections of GNU utilities pre-built and bundled with the Linux kernel. These collections were called Linux distributions and they made it much easier to get Linux on your system. (As an aside, it was around this time that I first got into Linux- I was by no means a UNIX guru at the time and needed a solid distro to reduce the barrier for entry into the platform.)
More and more distributions were created, forked, merged, and developed. Some flashed up and died off quickly, others lived for a good while only to fizzle out, still others remained active, strong and survive to this day.
Some (especially traditional UNIX persons, and people coming from the BSD-world) viewed this fragmentation as a bad thing. They saw all these semi-compatible forks as disruptive to stable OS development. Others saw it as a good thing..
Commercial distros, Open Source
In the late 1990s, during the first dot com boom, we saw a great deal of Linux companies crop up. Everyone clearly saw the potential for the platform, but there was a struggle all around on exactly how to profit from it.
New luminaries in the Linux-scene appeared. In 1998, a new term was coined, Open Source. This term provided a very clear description of what these new fangled free and open licenses were all about, and it did it in a way that was palatable to persons and companies who confused the "free" in "free software" with the "free" in the phrase "free beer". The term caught on, and today is more widely used than "free software".
While the term "Open Source Software" does include the GNU licenses, it's actually an umbrella term to describe a large family of licenses and copyrights that have at least some common elements between them. But it's not a term that is automatically synonymous with "free software", and, unfortunately, it became nearly interchangeable in common speech. This caused problems.
Rather famously, the big problem was a period of rockiness between Richard Stallman and persons who identified themselves as "Open Source Developers". Often, these "Open Source Developers" would wind up using GNU licenses and tech and yet refer to it all as "Open Source". This often resulted in discussions which were less than helpful, and some fairly unfortunate speeches.
Another traditional sticking point is the fact that the name "Linux" has become the accepted term to describe UNIX-like platforms built around the Linux kernel. This is especially unfortunate because this is technically untrue and because, often, large sections of the platform around the Linux kernel are based upon GNU and other Free Software projects. Because of this, Free Software advocates tend to describe most Linux distros as GNU/Linux, but have also, unfortunately, gotten into conflicts and arguments over this.
(As an aside here, I have to be honest and say that I have very strong leanings towards the Free Software arguments and mindsets. While I often am careless in tossing around "Linux" when I really mean "GNU/Linux", I do try very hard to always mention "Free Software" when I should- even though that usually means I wind up using silly acronyms like FLOSS which are probably more confusing to the lay-person.)
One of the oldest Linux distributions is Debian. Debian was created in 1993 by Ian Murdock (the name was actually a mash-up of Ian's name and the name of his girlfriend at the time). Debian is a community-based distribution built and maintained by volunteers working all over the world.
In roughly 1998 or 1999 (I'm guessing here, can't recall exactly and can't find exact information online), Ian founded the company Progeny Linux Systems. Initially, they were founded as a distribution company and bundled up a Debian based distribution (which, I might add, was a pretty kick ass distribution and was my gateway drug to Debian).
Progeny went out of business in 2007, and really didn't play a very big role in the history of Linux (to be honest). I did work there from ~2004 to one month before they folded, and I really enjoyed my time there, but it's not hubris or self-promotion that makes me mention it here.
Progeny's distro was something of a flop. It shouldn't have been, IMHO, but it was (honestly, it came out at a really bad time... this was during the dot com bubble burst and no one was buying distributions anymore). But Progeny remained in business for another 6 years or so, which means that the Progeny Linux distro played a relatively small role in the company's business. What else did they do? Well, I'm glad you asked!
When I joined Progeny there were really two divisions inside the company. One was called "Progeny Transition Services" (PTS), which provided legacy support for older and outdated Linux installs. The other, the division I was a part of, was called "Platform Services", and it is the section that is more relevant to our discussion.
See, at some point in Progeny's existence someone (probably Ian, though I wasn't there for it so I can't say for certain it was him) had a brilliant realization and a very clever idea. They looked at the aforementioned fragmentation that was happening with the myriad of Linux distros and realized that this fragmentation wasn't suggesting Linux was being forked into oblivion, rather all the forks and customized distros reflected the fact that no single Linux distribution was universally useful in all possible cases.
They recognized that these forks reflected a very real need the growing Linux industry had- namely to have Linux-based platforms customized and built to specific requirements rather than fire off a "one size fits all" platform and expect your customers to just use it no matter what.
So "Platform Services" was set up to handle the customization of other base Linux platforms for very specific needs. Some examples include:
- Telco customers with locked-down Linux boxes that had to operate with maximum uptime and zero user intervention in the middle of nowhere
- Security appliances that had hard governmental requirements having to do with source code to binary tracing
- Embedded Linux devices such as cell-phones, video-on-demand, and media streaming gadgets
Unfortunately for Progeny, the custom Linux distro work we were doing was ahead of its time. It was a struggle to find customers simply because we had to do sooo much explaining to help them understand why they needed us (as opposed to just "rolling their own"). Ultimately, this was the big reason Progeny withered and eventually went out of business (which wasn't a sudden thing at all, rather it took a year or so).
Why is this important to my overall discussion of Android? Well, I will get to that in coming posts. Stay tuned...
 "Division" really is a grandiose term, and I apologize for that. Each "division" had, at most, ten people or so in it. By the end of Progeny's life, one "division" had exactly one employee working on it. I call them "divisions" not to be a dick, but because it's really the best term to describe the organizational structure. "Teams" wouldn't work because one division (the one I was on) actually had a couple of sub-teams inside of it. So, just forgive my grandiose term and realize that I mean it in the most descriptive and literal way (and not in an insulting way at all :-)