Saturday, February 21, 2009

Future of Linux desktop: co-Linux on Android

We're at the native Linux desktop, moving towards the Android desktop (netbooks coming soon). What would bridge those two environments, is to offer a second Linux sandbox which runs along with Android.

Android has a very specific architecture, with its own libraries and non-X based GUI, which are not conducive to running standard Linux/X applications. Even it's libc version (bionic) omits certain POSIX features, making it not fully compatible. Android apps have to be targeted for and compiled against Android.

To allow native Linux apps to run, a second sandbox environment is needed, which can co-operate with Android. Android would be the master environment, providing all of the kernel, hardware drivers, and complete software stack that it already does. The co-Linux environment would provide a separate set of non-kernel components: libraries, configuration and administrative files, applications, etc. As Android drives the hardware, the co-Linux environment would need to defer to Android for some facilities. For example, X apps running under the co-Linux would need to speak with a special X server running on Android. The audio system on the co-Linux would likewise need to redirect to Android's audio manager. But the co-Linux environment would not need any boot-path files (Android takes care of booting), nor its own kernel.

Using a chroot sandbox is nothing new; it's used by Linux build environments such as the Moblin image creator, and to create a nice clean 32-bit environment on a 64-bit Linux box (even for X apps). Doing some porting work, would take the same concept to an Android environment. Perhaps further work could make the two environments more seamless to the user (UI, disk files, installation, etc.).

Note that another way to come at this, is to put the co-Linux environment in a VM, but there are downsides. First is that running a second kernel and VM in general adds more power consumption, burns more CPU cycles and consumes more memory; not a good thing for a constrained mobile device. And second, current Intel Atom netbook processors do not support virtualization.

I would think a co-Linux would be a boon for coming netbook platforms, where some users may want to chose from the available native Linux apps, including educational, gaming, just plain familiar, or otherwise. It would be really cool if the co-Linux environment itself could be bundled as an Android app. In any case, bundling key native Linux apps as Android apps, would be a fantastic way to piggy-back on the Android Market and ecosystem, without building out any new infrastructure. This would also enable one to focus on delivering only those apps that add significant value, and not spend time duplicating technical efforts with Android. In fact, I believe this could be the future of the Linux desktop distro, until the time when all apps are available on the cloud. And what a perfect use-case for portable Linux packages using Zero Install, which removes vendor specific head-aches and is appropriate for application level packages. Disruptive play for a new age desktop Linux company?

Disclosure: no positions


Kit said...

I find it interesting that such a thing might/can happen, especially after Google claiming they'd never compete with an OS.

It will certainly strike a small amount of fear into Microsoft.

Building off the existing Android market is convenient, but if in the future they decide to make this a mainstream Linux distro, (not just for Netbooks) it would be preferable to have one that's been built bottom up for a PC rather than adapted and pieced into one.

Dave Johansen said...

I don't really see the huge advantage to this because must of the GUI intensive apps that this would be targeted toward would be designed for a larger screen.

I think that the smarter thing would be to do the opposite (make an "Android emulator" or Android abstraction layer similar to WINE that allows Android apps to run on Linux), because then you have the native Linux OS and can still run all of the Android stuff.