In recent months there has been a lot of hype over MeeGo and Linaro, two of the latest industry distributions for embedded Linux (Linaro claims they are not a distribution, but time will tell). The thing about embedded Linux distributions is that it’s impossible to create the perfect distribution for everyone – most embedded developers will need to modify something in order to get to their final product. That’s why, IMHO, it is important that every decision that goes into making a distribution should be transparent to embedded developers.
But what goes into making a distribution in the first place? It seems that a lot of new-comers to Linux (and some executives) look at other distributions as the primary providers of open-source, but this couldn’t be further from the truth.

Open-source development is distributed across thousands of individual projects. These projects are largely uncoordinated, and don’t need to work together in order to accomplish their individual goals. In the diagram above I refer to these projects as “Original Projects” and I’ve shown just a few of the thousands that are out there. These enclaves of development are where Open-Source comes from (the most popular project comes from kernel.org but it already gets enough attention).
The work being done by these thousands of projects is very disorganized. Few people would use Linux if they had to figure all of this out. This is where Linux distributions step in and provide some value. Linux distributions locate all the necessary software needed to run a “full system”, download that software, and compile it. A lot of things can go wrong in just these few steps, and when you multiply those issues across a few thousand projects, you can see how Linux distribution maintainers can stay very busy. Once a project has been compiled and tested, the binaries, documentation, configuration files, and other such stuff is zipped up into some file type that can be easily downloaded – often referred to as “a package”.
Here is the distinction I’m trying to make:
- “Real Open-source” is literally made of thousands of uncoordinated projects each doing its own thing without needing to pay much attention to other projects
- Distributions aggregate those projects under one umbrella, providing convenience for end-users
The first point is crucial to understanding what goes into building a Linux distribution – this is the starting point. As for the second point, there is a lot that can be said about all the decisions that a Linux Aggregator will make in producing their distribution, but I’ll save that for another time.

