Why Linux Desktops Are Losing And Android Is Winning 1

Posted by JD 08/30/2012 at 17:00

I was reading a blog article by a former Gnome developer, Miguel de Icaza, What Killed the Linux Desktop.

He nailed it perfectly.

  • Incompatible APIs between different distros
  • Even different distro releases from the same team are often incompatible
  • Lack of 100% binary compatibility for GUI programs across distros and releases

Until the main 3 distros decide to play nice and make a stable API for all layers available, with 100% binary compatibility for 5-10 years, there cannot be any traction for a Linux-based desktop.

Android is Linux, but it is Linux with a plan. That is why Android is winning more and more users, developers, corporate efforts.

Working Together Is Better For Everyone

I’d love to see these distros working together on a stable GUI API layer:

  • Debian
  • Fedora
  • Arch

That will likely pull in Ubuntu, Mint, SUSE, Mandrake, Redhat, CentOS, and other downstream distros. If Ubuntu doesn’t come along for the ride, then either they will become the defacto standard desktop or they will disappear. As far as I’m concerned, either outcome is fine.

That means the GTK and Qt teams need to work together on a common API that can be used by developers. It also means that the Gnome and KDE and LXDE and XFCE guys need to agree on their core APIs too. 100% binary compatibility at the GUI program level.

It won’t be easy, but for the good of the desktop, it needs to be mandatory going forward. More and more people will be forced to leave Linux for other alternatives if this isn’t nailed down.

Egos will need to be checked at the API meeting door.

3rd Party Programs

This will enable 3rd party commercial developers to make programs that work longer than a year. If I knew 100% that a purchased program was going to be supported for 5+ years across multiple releases, not just through say-on-old-release methods with support, then I’m much more likely to spend the money.

Learn from Android. Google has made a stable API for Android. Apps designed for 1.6 run on 4.1. They might not have the greatest look, but they work. Google has taken backwards, binary compatibility seriously. The growth of Android devices and apps are proof that this is important.

One of the reasons I don’t purchase software for Linux is that I know it will break after a few years, usually at the next distro release. If I can’t count on it working for 8+ yrs, like most of the Microsoft OS software does, why spend the money?

100% binary compatibility at the GUI program level.

Assured Backwards Compatibility

Backwards compatibility has been working for non-GUI parts of Linux, but that doesn’t sell desktops. Desktops need a GUI. Most end-users demand a GUI that works and has 3rd party software. How many times have Linux lovers heard that people would switch to Linux, but programs x, y, z don’t run there. Those programs are different for every end-user, but the program maker can’t dream of putting the effort to support a platform that will likely be completely different, with different APIs, in 2 yrs. It isn’t financially possible.

100% binary compatibility at the GUI program level.

We Need To Grow Up

Backwards compatibility isn’t sexy. It isn’t fun to work on. Leaving less-than-ideal APIs behind sucks too, but it is required. Binary compatibility between different releases of GUI APIs is critical if Linux will ever become more than a tool for servers and professional hackers at home.

100% binary compatibility at the GUI program level.

If you are a Linux developer working on libraries, especially GUI and infrastructure libraries, please make 100% binary compatibility at the GUI program level your primary project goal. It is critical to the entire Linux ecosystem.

Obviously, 32-bit and 64-bit versions will not be binary compatible, they cannot, but taking any 64-bit program and installing it on any other 64-bit Linux desktop should work without requiring too many dependencies. If KDE is loaded, then GTK+ shouldn’t be necessary and vice versa for the main features of the program to work.

Breaking Backwards Compatibility Is a Big Deal

When Microsoft, Apple or Android break backwards compatibility, it is a big deal. They announce it well in advance and only do it (except Apple), because it really is necessary. They do not break major APIs very often. This is hard. Comparing the 20+ yr old win32 API to the 5 yr old Android API just makes the point. API stability matters.

  1. JD 08/30/2012 at 17:02

    I haven’t had audio issues with Linux in a few years.
    Audio seems to just work these days, but I use pretty standard audio stuff.