What is Android missing?

Google Android initially looked like the realization of an open source dream; a highly network-connected Unix-like OS in your pocket. In practice, it has fallen well short of that dream.

Apple's iOS, Google's Android, and Microsoft's WP7 seem to be the major contenders for the title of Best Smartphone OS right now, in the perception of the general public. Each of these has its positive and negative characteristics, and the result is that its relative value for the end user really depends on the user.

The same is true, to some extent, for developers. Concepts of "portability," rich development ecosystems, and useful platform APIs are understood differently by the developers coming from three different worlds -- Java plus a dash of Unix (but only a dash), Cocoa, and .NET, respectively. Each of these types of developers has a problem seeing the benefits the others enjoy. For instance, open source developers have a difficult time grasping the lack of concern among WP7 developers about Microsoft's recent disallowance of the GPL in the platform's application store (euphemistically called Marketplace). By the same token, .NET developers often cannot fathom why it matters that much whether the GPL is available in a handheld device's app store, especially when Android does not offer much (at least compared to WP7) in the way of interoperability with the world's most popular desktop OS. Many open source software users care more about having the source to their mobile OS than integration with a closed OS, and even when they do not like the GPL, they at least want to be able to use some of the software distributed under its terms.

The only really notable advantage or disadvantage that applies to any of the three such that it unbalances the competition between them is Apple's tyrannical management of its App Store -- a problem for publishers as well as developers. On the other hand, the cult-following effect all Apple products have ensure a strong following for the company's iOS regardless of such issues.

If popular mania and stonewalling from service carriers had not distracted everyone from its existence, people might have noticed a much better smartphone OS than all three of them: Maemo. This was a Debian variant offered on the Nokia N900, a full-power, open source, Unix-like operating system. Unfortunately, it appears to have been abandoned by Nokia along with Symbian (its other open source handheld device OS) in favor of WP7, as of late 2010. There may be hope, in that the last news from Maemo saw it being merged with Intel's Moblin to form a multi-corporate open source software development consortium for the nascent MeeGo platform, but Nokia appears to have abandoned that as well. This leaves it largely in the hands of Intel, along with other participants including AMD and Novell, but no clear path to deployment on any vendor's smartphones.

For now, it looks like there is no viable, widely available platform support for anything better than Android, iOS, and WP7. For those of us who care about open source software, and perhaps a faint taste of Unix (very faint indeed), it looks like Android is the only real option, despite its shortcomings. These shortcomings are not negligible, and are sure to disappoint users who expect to find something Unix-like on their smartphones when they hear that Android is based on the Linux kernel.

Three of the things Android lacks are:

OS upgrades and customization

Anyone who has been using open source software heavily for the last decade should be intimately familiar with the benefits of backward hardware compatibility. While new versions of Ubuntu might tax an old system, those who remember the existence of other open source operating systems that have been around for ten years or more know what it is like to be able to install a fancy new OS on (relatively) ancient hardware. The newest versions of some open source operating systems will even still install on a 386, if the user is willing to forego a few mostly unnecessary UI amenities. This is something neither Apple nor Microsoft has much cared to enable with its own operating systems over the years.

Android utterly fails to live up to its open source roots in this respect. In fact, it does worse than Ubuntu. The problem is not that it gets too bloated with new versions like a default install of Ubuntu, though; it is that service carriers and device manufacturers who act as gatekeepers to this handheld device OS actively hinder the ability to upgrade the OS version. While the current version, as of this writing, is 2.x (closing in on 2.5), and some people already talk about Android 3.0 as though it is a done deal, many who bought their smartphones in 2009 and early 2010 are still stuck with Android 1.5 until the two-year service contracts that allowed them to get $300+ devices for under $50 run out.

Sure, one could root an Android device, which offers a lot of options for customization as well as merely upgrading, but there are risks involved. Voiding the warranty, bricking the device, and making it effectively impossible to get any tech support from the service carrier are three possibilities.

Basic system utilities

Any user that tries using a command line pager like less or more to read a text file on an unrooted Android device will be disappointed. The same goes for more-basic utilities like cp. Good luck getting anything done with pipes and redirects. At least echo, ls, and cd work.

The upshot of the UI philosophy of Android seems to be that any basic functionality one would normally expect to have at one's fingertips on open source Unix-like operating systems, such as the Linux-based systems with which Android shares some of its DNA, is not intended for mere mortals. That functionality is (at least partially) provided by way of the Dalvik Android API, a toolset targeting the priesthood of Java developers. The rest of the world's Android users can either do without such tools, or wait for some Java developer to wrap them in a GUI.

Absent a keyboard suitable to touch-typing, vi would be nigh-pointless. Emacs (rumored to stand for Esc Meta Alt Ctrl Shift in honor of its finger-twisting keyboard chording) would be even more crippled on current smartphone hardware. Still, some kind of reasonably productivity-enhancing console based text editor would be nice as well.

Incredibly primitive text editing is one thing at least that can be done with echo and redirects, though:

$ echo "This may be the worst text editor ever." > foo.txt

We even get cat, so that those who are exceedingly clever and masochistic can do all their text editing and reading at the terminal on Android, though it might be more productive to just carry a pen and a pad of sticky notes in one's pocket. One can then type up one's notes on a proper computer, transfer them to the Android phone (also not as easy a process as it should be -- see below), and move on with life rather than trying to use echo, cat, and redirects to edit files, especially since head and tail are not available to easily allow small enough selections of text to be displayed to show one screen's worth at a time. One could also just install an editor from the Android Market, but the need to do so when the OS is supposedly "Linux" seems like a gross failing of the platform.

Clever Unix users might realize that cat plus redirects can be used in place of cp, and rm finishes the job of mv, but the primitivity of having to use such workarounds is a bit frustrating.

Secure remote access

Possibly the killer feature of Android, if it existed, would be access to OpenSSH on a wirelessly connected handheld device. System administration tasks could be carried out while standing in line at a fast food joint with such a tool. An additional layer of privacy could be wrapped around our Web browsing by using an SSH proxy. Perhaps most generally useful would be the ability to wirelessly transfer files over an encrypted connection between the device and any other node on the local network -- or even the Internet -- that accepts SSH connections. In the open source Unixy world, OpenSSH has made the concept of physically traipsing between computers with a USB flash media storage device quaint and unwieldy by comparison (not to mention dangerous), even if that is still the preferred method for the MS Windows world a lot of the time.

In the cantankerously "hybrid source" Android world, your computer that fits in a pocket has been reduced to the lowly task as acting like a mere USB flash media storage device. The problem is that no such SSH functionality ships with Android. There is an open source SSH app in the Android Market called ConnectBot, but its feature set is currently limited to use as a remote terminal, leaving out the other major parts of a full SSH suite: SCP and SFTP for file transfers and filesystem browsing.

There is an app in the Android Market called andFTP that covers the file transfer angle, but its functionality is cumbersome and limited, its speed leaves something to be desired, and -- most importantly for a secure file transfer utility -- it is closed source software, mandating some extremely aggravating levels of caution to ensure one's security remains uncompromised. Some of these measures are just smart security practice anyway, but they become especially important for the case of using SSH via untrusted tools (such as a closed source SSH client) to connect to the system.

...But wait, there's more!

There are a lot of other missing capabilities as well, but the most immediate and obvious are the ability to upgrade and tweak the OS environment; access to the most basic system utilities; and secure remote access for system administration, proxying, and file transfer operations. Correcting these three oversights would immediately improve the value of a smartphone for the tech-savvy open source software user by at least a factor of ten.

What will the future bring?

In the end, we must make do with what we have. Of the currently viable handheld device operating systems with a future, Android's openness for developers (relative to the competition, at least) makes it my platform of choice. Its limitations also make it my frustration of choice.

It seems obvious to anyone who is watching trends in this market that there will be an open source handheld device OS without such arbitrary, aggravating limitations -- eventually. It may take a decade or more to see it, though, if something major does not change in the state of the mobile computing industry in the very near future. With the superficial appearance of something like that bringing the possibility so tantalizingly close to reality without ever actually getting there, in the form of Android, those of us who care about such things may be in for a very uncomfortable decade of waiting.