last updated: Fri Aug 26 22:00 BST

Ideal vs Reality: The chain of Free Software Development in Hardware Products

Linux, GNU/Linux and derivative Operating Systems have effectively won, and are in danger of being overwhelmed by their success. The GPL, which is part of that success, is only effective if it is actually being enforced or respected. It helps therefore to illustrate the "ideal" scenario and then to also describe what's actually occurring.

Then, lastly, the question is asked: what can be done to offset the stark discrepancy between the ideal scenario and reality? Within the question lies the answer: take a risk - lead by example, and begin a mass-volume Product (or range of Products) that is both desirable and at the same time honours and encourages Free Software principles and practices.

The Ideal Scenario

These scenarios are the chain of events that, if they took place, would be the absolute ideal, as throughout every case, Free Software Licenses and Free Software principles and practices are respected and honoured. (Note: it has to be pointed out that many of these scenarios occur in isolation: they just don't often line up all at once to create a successful mass-volume product!)

Now this may seem strange, but there are actually precedents for all of the above actually occurring, including, in some cases, the actual development of the Hardware itself - including in some cases the full CPU and the peripheral's VLSI / VHDL designs! These include:

By contrast, however, the actual number of successful commercial devices which honour the GPL, follow and respect the spirit as well as the letter of Free Software Development, can be counted on the fingers of one or two hands - one if you are Polydactylic. (The OpenMoko does not count, as despite its successor being still in development, it has not yet gone beyond prototypes. At least the casework, which is a massive part of the cost of development, can and is being used, in the development of the next revision, the GTA04)

This is the complete list of devices (known to the author at the time of writing). An analysis of these devices shows that:

Amongst hundreds of thousands of computing devices designed and built across the world, that's a pathetic track record. We can now move on to describe the reality - the rest of the world's involvement in Free Software.

The Rest of the World: the Reality of Commercial use of Free Software

Here is what the rest of the world actually does with Free Software:

Amongst these real-world cases, there is some cross-over between "ideal" and "reality". For example, some Hardware OEMs use CPUs from SoC vendors where the BSP is publicly available, because starting from a published CAD/CAM design is easier. This is, however, the less common case: it is, sadly, much easier for a Factory to just sign the NDA, hand over some money and receive a ready-to-go design and just begin shipping it out the door.

What is particularly bad is that in both the ideal and the real-world cases, the SoC Fabless Companies are all under pressure to deliver as fast as possible. When their BSP eventually becomes public, it shows evidence of rushed development, complete lack of cooperation and collaboration, duplicated drivers, shortcuts and shortcomings that are making life absolute hell for Free Software Developers (especially Linux Kernel Developers). An analysis of this particular situation is given here, along with a proposed approach to fix the problem, the core of which is to broadly reward collaboration and cooperation (regardless of how that collaboration and cooperation actually occurs).

So it is perhaps not surprising that Free Software Developers are forced to carry out extensive reverse-engineering of hardware, right across the board. and the effect of patents haven't even been mentioned, at all!

Android - The World's Darling

One special case in particular stands out: the Operating System known as "Android". There is a great deal of ignorance surrounding Android. Google develops Android in secret as a proprietary product, yet releases it as a one-way "push" (delayed), as an "Open" Software Project. However, the software itself is absolutely useless for installation on an arbitrary device, not least because that software - released by Google - is only a "Reference Platform". This situation is further confused by Google's direct or indirect involvement or sponsorship of actual hardware devices which it refuses to confirm or deny, which get dubbed "Google Phones".

To make matters worse, it has to be appreciated that, contrary to popular belief, Android is not Apache-2 Licensed: only the userspace portion of the Android OS is Apache-2 Licensed. The kernel portion is Linux, and includes some heavy modifications - by Google - to add for example the Android Security Model. Yet, again, any releases made by Google of even the Android-enhanced Linux Kernel, are reference platform releases not suitable for arbitrary use on arbitrary devices.

In order to get hold of a particular device's Android-aware Linux Kernel, in compliance with the GPL, it is necessary, usually, to go through the exact hell-on-earth chain as described above, because both the Android-aware GPL'd Linux Kernel as well as the often heavily-modified Apache2-Licensed userspace suite of applications which make up the Android OS, go through several hands before actually hitting the streets.

The worst part of this is that whilst the Android-aware GPL'd Linux Kernel has to be released in compliance with the GPL, the userspace Android OS applications do not.

There is, however, hope, in the form of two startling announcements by two of the major players in the Android Market. The first is the announcement that HTC has employed the developer behind "CyanogenMod". The second is that Google have purchased Motorola (in order to gain Motorola's strategic patents).

But this is just two players, and it does not take into account the fact that once Google does release the software, many many 3rd party manufacturers pick it up, create BSPs, create hardware platforms around it, helping to create the dog's dinner situation that's outlined above.

Conclusion

The Advocates of Free Software could never have predicted the success that has occurred, and so there are severe shortcomings in the Software Licenses that are in use. Commercial reality and shortcuts are overwhelming the Linux Kernel Developers. NDAs, Secrecy and sheer ignorance are taking precedence over Copyright Law, and Copyright Holders of Free Software, even if they could find out where their Copyright is being violated, often do not enforce their rights and are thus at risk of losing them even if they tried, through an "Estoppel" Legal Defense.

With very few exceptions, the Free Software Community, on whom hardware manufacturers are now critically relying in order to make money, has stayed clear of taking the initiative on hardware, and is rewarded by fait-accomplit devices which further insult us by forcing us to reverse-engineer them, jailbreak them or initiate a lawsuit for Copyright violation!

So the reality of the situation is therefore far from ideal, and there is a great deal of work still to be done. There is however the occasional sign of hope and the very occasional real-world Product that miraculously springs into existence.

So the question has to be asked: wouldn't it be even better if a real-world Product was initiated that could actually tick all the boxes, honouring the GPL and other Free Software Licenses, involved the Free Software Community right from the start, and was sold in mass-volume? Surely such a Product (or product range) could be a model example to all Hardware Manufacturers and SoC Vendors right across the world (instead of being considered implicitly to be non-commercial by virtue of being even remotely associated with Free Software Developers).

Crucially, therefore, what, fundamentally, would make such a Product (or Product family) successful? What Products would actually sell? And why and how would Free Software Developers be attracted to be involved in such Products?

Comments welcome to: lkcl@lkcl.net