Linux is a dominant player in almost every industry segment, minus one: desktop. We heard Linus Torvalds’ pain when he uttered these words at LinuxCon North America this year, "I still want the desktop".
What’s holding desktop Linux back? There are many factors including marketing, pre-loaded Windows, support for hardware, and availability of applications. Linus, the creator of the Linux kernel, doesn't offer executables aka binaries of his own software Sub Surface for Linux desktop even though he does offer binaries for Mac OSX and Windows.
Why doesn't the creator himself support his own kernel? The answer is simple: packaging applications for Linux desktop is extremely painful for app developers. He said, "You don’t make binaries for Linux, you make binaries for Fedora 19, Fedora 20 maybe there is even RHEL 5 from 10 years ago.”
He then talked about problems with Debian systems, “…you don’t make binaries for Debian stable because Debian stable has libraries that are so old that anything that was built in the last century doesn’t work.”
It looks like Canonical is trying to address this issue and they believe that the solution is just one ‘Click’ away.
One 'Click' for Linux?
Click is a new packaging format for Ubuntu mobile applications which irons out the complexity of delivering an application to a user. Developers can bundle all additional dependencies into the package without worrying about the dependecy resolution. It makes life easier for both users and developers. Developers can use latest libraries and technologies to distribute their software independent of the release cycle of a distribution. It will directly benefit their users.
Martin Albisetti of Canonical told me, "I think Linus's main pain points are a lot of the same ones that drove us to work on Click packages. To some extent, it's the same problem to support an app across different Ubuntu versions than it is across different Linux distros: main dependencies tend to be very sensitive to version changes, filesystem paths change and it's hard to express dependency chains. You end up having to build your app slightly differently for each distro and version."
Canonical developer Michael Hall explains it to me, "To some extent Click moves us a little closer to the Windows and Mac model, where anything your program needs outside of the default OS install it needs to ship in the same package, so Subsurface will need to ship it's own copy of libmarblewidget in a Click package, just like it does for Windows and Mac, but not current Ubuntu debs. The user-space guarantee that he'll get with Clicks are in the framework definitions, if his package says it'll work with the "ubuntu-sdk-14.04" framework, then it will be installable and run on Ubuntu 14.10, because 14.10 is (at least supposed to be) binary compatible with that framework."
However, we should not get over excited because Click may not solve the problem for ‘Linux’ in general, even if it is the right solution.
The political and technical differences may stop other projects from adopting it. The latter can be easily addressed; we have seen companies adopt solutions by arch rivals: whether it was Red Hat adopting Canonical’s Upstart and then Canonical moving to Red Hat’s (not strictly) systemd.
The former, political difference, will be hard to overcome. There is an exception though. Political issues may remain a strong deterrence for community driven projects, but business driven products will incorporate everything that makes the lives of their customers easy.
Albisetti is aware of the real world and admits, "We aren't trying to solve cross-distro installation at the moment, it's been tried and failed before and given the current competitive environment is unlikely to get any traction. This is, however, a step in that direction."
The problem lies in the fact is there is no 'Linux OS’. Each distro is an OS in its own right which may be compatible with other distros. Hall says, "Nobody would expect a binary built for FreeBSD to just work on Debian, but for various reasons it's a common belief that a binary built for Fedora could (and should) just work on Ubuntu."
We have seen collaborative efforts within competing desktops. If distributions agree over Click can there be ‘one’ Click for 'Linux' that can be used on any distribution? Not likely. Click won't change any of the current situation magically.
Hall admits, "...you're still going to have to build separate Click packages for different OSes (Ubuntu, Fedora, Debian, etc) because each one will have it's own framework definitions that they will offer and guarantee. So you'll build one Click binary for Ubuntu-sdk-14.10, another for Fedora-21, and another for Debian-jessie frameworks.” However, distros can solve this easily by promising backward binary compatibility with frameworks.
Reaching a Common Framework
Theoretically it is possible for ‘Click’ to work for everyone but the current state of Linux affairs is not very encouraging.
Hall says, "Now, it's theoretically possible for all of the various Linux-based OSes to agree on a common framework definition, and have them all support and guarantee its availability. But that's been attempted before in the form of LSB, and I think history has proven that it's not going to work. Distros are too different, they evolve and grow at different rates and along different paths.”
The truth is that Canonical is not aspiring to shove the solution down the throat of everyone else. They are trying to solve a problem in a way which can be easily adopted by those willing.
In its current state, Click is targeting Ubuntu phones. It aims to offer an apk-like solution to developers so they can easily package software for Ubuntu.
Since Mir and Unity 8 is going to be the future of Ubuntu, Click will trickle down to the desktop eventually - most probably by the version 15.04 or 15.10. Canonical won’t be offering Click packages for Unity 7.x or XOrg because they can’t be fully confined.
Click is not going to replace the traditional applications; it’s not designed for that goal in mind. Developers need not worry because Canonical is not going to lock-out traditional desktop apps. Both traditional and Click applications will run on the same system. If Click makes life easier for app developers and their users they may start moving to it.
Click is in the very early days so it’s hard to say what it holds for the desktop; it’s certainly the future for Ubuntu mobile. Whether developers will adopt it or not, whether other distros will embrace it or not, lies in the realm of future. We can’t see it. What we can see is that once again Canonical is trying to solve a problem that plagues the desktop Linux.
I only wish the year of desktop Linux was a 'Click' away!