The Linux UI future; more complex than ever
by Dj Walker-Morgan
With Linux being used as the foundation for numerous smartphone and mobile internet devices, it is tempting to suggest that this movement is going to open the doorway to desktop Linux. Tempting, but not accurate.
Linux, the kernel and its immediate subsystems, has never been healthier and its openness has made it relatively easy for developers and manufacturers to get an operating system onto a new class of mobile devices. However, consider the two leading strains of mobile Linux; Android and Moblin. Both start with Linux at the core, but if you move up to the user interface, they diverge.
Moving on with mobile Linux
Moblin is the closest to typical desktop Linux. It uses the X Window system, so most common Linux applications can run. The user interface though, and this is the element that has won the plaudits, is unlike any previous Linux user interface. Optimised for the small screen, the Clutter UI uses simple, clean design lines to present multiple workspaces, called zones. Each zone displays a running application. The Moblin user interface is impressive and unlike any desktop Linux environment, but it does maintain a good level of compatibility, hence the range of Moblin editions announced by Canonical, Xandros, Novell and others. There is a problem though in terms of perception; if someone is won over by the stylish Moblin user interface and thinks "What about Linux on the desktop", they won't find a similar desktop Linux experience off-the-shelf, from any of the major distributions.
Probably bigger, in terms of devices sold, is Google's Android, already in user's hands in the HTC G1 and HTC Magic, with numerous phone and mobile device makers showing their Android based designs. Android has Linux at its core, but very little of that is exposed. Applications for Android run on a Dalvik virtual machine and display through Android's own graphic subsystem. Dalvik is a variant of Java's byte code and virtual machine, optimised for small devices. The reasons for doing this are many; by using a virtual machine, Android applications can run on different phones with different processors; hence the ports to MIPS and Intel (Android started out on the ARM) by third parties can still run Android applications.
For the graphics side, to get an idea of how different Android is, consider the Canonical project to produce desktop Linux support for Android; It involves implementing a completely different GUI subsystem to support the Android virtual machine based applications.
Linux Unseen
The cohesive, common interface for users and portable applications are a big plus in a rapidly evolving consumer facing market place. But it does place Linux well down the software stack, unexposed to the average consumer. So, in many ways, calling it a win for Linux is true, but only a win in terms of winning over device makers and winning as a kernel for those makers to deliver a customised experience to users, often as open source, but not necessarily, or completely, as open source. Good though these wins are, they do not contribute to any brand awareness of Linux, and so, despite wishful thinking, to the awareness of Linux on the desktop. What they do enable though is a good source of funding and development for the Linux ecosystem.
The future of the Linux user interface may well be no future at all beyond the command line. Linux, as an operating system, is a real enabler for new and novel desktop concepts; the X Window System, which is used on most desktop Linux systems, was designed to allow that by only handling the mechanisms of getting windows and graphics onto the display and letting other programs manage the look and feel of the environment.
When a mobile device maker wants to go into production though, they are more than prepared to lose that flexibility in return for a smaller foot print, better performance or just improved graphics. Moblin, for example, uses Clutter which in turn uses OpenGL to render its displays and Android has its own graphics subsystem. On desktop Linux, X still dominates, and with it the flexibility to change practically everything if you want. But the fundamental X experience lives, or dies, by the quality of the hardware support.
The complexity of hardware support isn't something that actually worries the mobile device makers with Moblin and Android; they are targeting and testing the Linux code for the very specific configurations of hardware which make up the device. They don't have to worry about the quality of drivers they don't use.
On the desktop distributions have to play constant catch-up with new variations of hardware, including, and probably most visibly, with graphics drivers. Take Ubuntu's recent problems with 9.04 and Intel's motherboard graphics as an example, where even with the manufacturer working with the community, things didn't come together well enough.