Android, several years later

Google I/O is wednesday, which traditionally means a peek at the next version of Android. Having used Android since version 2, I thought now would be a great time to reflect on how far Android has come.

design.png

Droid

The Android open source project has been around since 2005, but it wasn’t until Android 2.0 (no unique dessert name, Android 1.6 was “Donut”) was released alongside the Droid phone that Android started its rise to some sort of smartphone dominance. Looking back, version 2 of Android was a pretty uninspired affair with very few good apps to brag about. Some apps were crashy and copy and paste wasn’t everywhere and not particularly good. The experience as a whole felt sluggish and laggy.

What made it worth getting instead of the iPhone, however, was the fact that everything synced as soon as you were logged in with your Google account. There was not a trace of iTunes, and did I mention the superior turn by turn navigation? Douchy hipsters would ask why anyone in their right minds would get an Android phone when they could buy an iPhone instead. Even back then, the answer was: sync and maps.

The Nexus Phones

HTC_Desire_cyanogenmod.png

While Android 2.0 started the rivalry between Apple and Google, Android 2.1 (“Eclair”) which coincided with the Nexus One, set the war ablaze. Pinch to zoom was omitted due to threats of themonuclear war, but the phone itself was still the best Android to date.

Only, there was a problem: way too little internal storage. 256M if I remember correctly. This little space had to hold the entire operating system, including apps, including application data. Which meant, of course, that you’d run out of space within days if you used the phone like you were presumably supposed to. Android 2.2 (“Froyo”) tried to mitigate this embarrassing hardware decision by allowing you to store apps on the SD card, but since application data was still stored on the system partition this change did little to fix the situation. Visually, Eclair received relatively minor tweaks, Froyo likewise.

home-plain.png

The Nexus S was released alongside Android 2.3 (“Gingerbread”) and it solved most of the problems that plagued the Nexus One. There was plenty of internal storage. Copy and paste was now unified across the operating system. There was a new, darker and flatter skin that made the experience a bit more elegant but the design felt weirdly half-baked. As a whole, the phone felt snappier, more coherent, and generally more pleasant.

Only, once again there was a problem. The stock Android browser bundled with the Nexus S was optimized for Snapdragon processors, not Hummingbird processors. The Nexus S had the latter, so browsing anything not mobile optimized was slower than it was on the Nexus One. You had to go out of your way to find an alternate (inferior) browser such as “Dolphin”. Not cool.

The Honeycomb Detour

honeycomb.png

We eventually found out what ailed the Nexus S. Google was busy making a tablet-friendly version of Android, and either didn’t have time to completely optimize the Nexus S, or simply chose to focus on the tablet instead. Matias Duarte, the original designer for WebOS, had been brought in to spearhead a strong visual direction for Android 3.0, “Honeycomb”. At the time, Gingerbread was just about ready to ship, and Honeycomb development was already underway. So the half-baked feeling that came with Gingerbread was due to the furious race toward the tablet.

For the very same reason, Andy Rubin had made the call that Honeycomb would be tablet only. There simply wouldn’t be time to scale the experience down to the phone form factor, that would have to happen in a later release. There was a lot to like about the end result, but arguably more to dislike. Regardless, a strong direction had been laid, and difficult structural decisions were in place.

Goodbye, Menu Button

Cue Android 4.0, “Ice Cream Sandwich”.

home-lg.png

Like sandwiches are combinations of things, Android 4 was for both phones and tablets. It drastically iterated on the Honeycomb UI. The spacey clock was now minimalist, and the pretty terrible Tron font had been replaced with a custom Helvetica-esque “Roboto” font. Applications, icons, even menu items were given a strong design direction, and the result for apps that used this new “Holo” theme was pretty gorgeous. Ice Cream Sandwich was released with the Samsung Galaxy Nexus, and later rolled out for the Nexus S (complete with a stock browser that was finally optimized for the Hummingbird processor).

Impressively, Ice Cream Sandwich managed to shed some of the legacy shackles that had held back earlier Androids. The Menu button, once a requirement on Android phones, was now frowned upon, and developers were asked not to rely on it. Every menu item would come with an icon and shown directly in the action-bar if there was room (and land in the Action Overflow menu if there wasn’t). The death of the menu button was welcome since the button itself was the epitome of mystery meat navigation. Ironic then, that toolbar items would be icon-only. Still, Ice Cream Sandwich was a huge release with fundamental and difficult changes to Android, necessary for the platform to stay competitive.

Waltz

For every problem Android releases would solve, however, new problems would become apparent. Like a waltz — two steps forward, one step back — Ice Cream Sandwich was no different. While the menu button had been killed, the problems with the back button had become increasingly apparent. I’m not even going to try and explain how the back button works, but here’s a chart:

navigation_between_siblings_market2.png

It’s not optimal. But it’s certainly fixable. Especially on the Galaxy Nexus, where buttons are software. If killing the back button is on the … menu… then it’s possible. If not, there has to be a way to make its behavior more predictable.

In a similar vein, now that Android is beautiful, it’s becoming increasingly clear how most developers don’t care about optimizing their apps for Android. Most apps aren’t using the new Holo theme (which is legitimately beautiful). There are notable exceptions — Tasks, Foursquare, Pocket — but even first-party apps like Google Listen haven’t been updated to the new 4.0 SDK level. If Google can’t eat their own dog-food, how can they expect developers to?

Jelly Bean

Wednesday is Android 4.1 day and it’ll be interesting to see how Google intends to tackle the problems facing their platform. Perhaps it’s time to mimic Apple and create the “Android Design Awards”, showcasing well-designed Android 4 apps in the market. Might as well give a reason for developers to update the SDK level.

There’s also the problem with timely updates. As it turns out, an operating system running on an ARM processor is fundamentally different from one that runs on, say, an Intel Processor. Where on the latter, you can simply make one OS distribution you can install on every Intel processor out there, ARM operating systems have to be written directly for the specific version of the processor. Which incidentally explains why you won’t be able to install Windows RT (Windows 8 for ARM) yourself. So how can Apple do it? Well they build everything themselves, so they don’t have to target more than one processor.

Still, all of that is just software. Software is written by humans. We tell software what to do. If updates for Android are hard to do because there’s no generic interface for the ARM CPU, then make one. Whatever you do, Google, the big next challenge on your table is making Android easy to update.

Hey Google? One more thing. It would be nice if the Nexus phones you make aren’t so big they don’t fit in my pockets.

Next for Chrome OS

Remember Chrome OS? No? That’s okay. It’s Googles Chrome-browser with a stub of Linux underneath it, making the browser the operating system. I believe in this thing, not for myself, but for my mom; the ability to hold a couple of buttons while it’s booting to format the entire system and reinstall it from the cloud, keeping all personal files intact, is pretty much the perfect mom computer. Still, Chrome OS and “Chromebooks” never really took off. Now Google’s trying to take it to the next step, which apparently means a window manager:

While there’s some interesting UI going on, particularly with the semi-fullscreen-split-view and the ultra-minimal taskbar, I can’t help but feel like they could’ve done something really interesting with this. I don’t think the desktop has a future.

Google Chrome, Metro-Style

Windows 8 is a pretty bold new move for Microsoft. It’s bright, vivid, touch friendly and puts apps and contents way up top. It appears to have ditched the traditional desktop metaphor and filesystem. Apps look very different. Here’s what Internet Explorer 10 looks like:

IE10.png

That new look and feel for apps is being referred to as “Metro-style”. Metro-style apps run fullscreen and navigation happens through edge-activated interfaces. While I’m concerned about discoverability for edge-activated interface controls (essentially this is classic mystery meat navigation), I do like that apps are full-screen and that Metro-style apps ditch all archaic notions of UI chrome.

Which brings me to Google Chrome, capital C. Really great browser, my such of choice. From a high-level perspective, Google built this browser to accelerate the pace of web technology development, so that Googles own web-apps — Gmail, Calendar, Docs — could adopt newer features sooner. To that end, Google has gone to great lengths to make sure Chrome is not only cross-platform (Windows, Mac, Linux, soon Android), but that Chrome looks native to each platform. This tenet has been taken to the extreme, actually, with Chrome on Windows XP featuring the horrible “Luna” skin, and Chrome on Linux more or less establishing GTK as the de-facto UI toolkit on the platform, just to be able to use said toolkit. It’s really quite impressive, the amount of work put into making Chrome not only look native, but be native.

Of course we’re only on the cusp of the future. The next round of operating systems are likely to be much more mobile inspired. Windows is blazing a trail with adopting the Windows Phone Metro UI, OSX is likely to become even more iOS-like, and Ubuntu is already exploring more touch-friendly UIs. If Google is going to keep following the path of full-on nativity, Chrome engineers are going to be having some nasty headaches in the not too distant future. Is it even technically possible to replace Internet Explorer 10 as your browser of choice? With Windows 8 treating HTML5 web-apps as first-class citizens among native apps, it’s likely that IE is baked in to the operating system more deeply than it ever was before.

It’s also an interesting mind-game, imagining what Google Chrome would look like, if it were to theoretically be re-written as a Metro-style Windows 8 app. The Metro-style UI is already so minimalist in layout, icon style and even interaction patterns that it’s difficult to think of Metro-style Chrome looking very much different from IE10. The racing-car diagonal tabs for instance, which are important to Chrome’s branding, are hard to translate to Metro-style. Though I suppose if Google were to go this way, they could make their tabs look similar to those of the Android Honeycomb browser (which is likely to spell the direction of how Chrome will look like on Android, once that happens).

Will it happen? I think so, but I think Google will want to play the wait-and-see game for a while. Just like Android Ice Cream Sandwich may be a make-or-break proposition for Google, so do I think that Windows 8 is for Microsoft. Could be that Windows 8 adoption is too slow to worry about. Could be Google’s already working on Metro-style Chrome.

Why would you ever use Safari?

Tim Bray is breaking up with Safari. Apparently the latest version of Safari is slow when you have many tabs open, especially if you’re also running OSX Lion. I say apparently because I’ve never used Safari for anything but testing, and so I can’t confirm or deny the claims. That said, whenever I use Safari, the browser strikes me as being limiting, like browsing the web wearing boxing gloves. There was no extension system (there is now, I know), the tabs had small hit targets, and the address bar featured an auto-complete system that just bugged me to no end. In the past I was an avid Firefox user, but when Chrome arrived, I switched and missed only Firefox’s “awesomebar”. Safari was never an option for me. I’ve always considered Safari as being Apples Internet Explorer, merely an afterthought because you need your own browser when you make an operating system. Put simply, I’ve never understood why anyone would use Safari as their browser of choice, when there are so many, in my mind superior, alternatives.

Let’s be clear, Chrome, Firefox, Opera and Safari are all good browsers where it matters. If you use either of those, I really have no beef with you. These are standards compliant, pretty secure browsers and they are not holding the web back. I’m not writing this because I want you to switch from Safari. If that’s your browser of choice, then you and I are friends.

Tim Bray is using multiple browsers, but it appears he’s currently using Chrome primarily. Both he and I expect Safaris issues to be resolved in a future update, at which point he’ll be switching back. Back to the browser with separate search and addressbars. Back to Safari, where http:// is still alive, and updates require a reboot. So long as Tim doesn’t switch to Internet Explorer 6, I’m one happy camper. But I’ll still be as confused as ever.

How to get ProxySwitchy working in Chrome again [Updated]

If you’re a fan of Chrome and you need to use a proxy to secure your traffic once in a while, you’ve probably been using ProxySwitchy to get things running. You’ve probably also noticed how it’s broken down in the last couple of weeks, suspiciously timed to the release of Google Chrome 12. Yep, it’s broken. Here’s how to fix it on Mac OSX.

Step 1: If you’re using a PAC file, go to your System Preferences > Network > Advanced > Proxies > Automatic Proxy Configuration and make sure the URL to your PAC file is correct. Because if you were using Auto Switch Rules, the URL might have been replaced with a weird Chrome extension path.

Step 2: Uninstall ProxySwitchy.

Step 3: Upgrade to Chrome 13. (Here’s the technical background)

Step 4: Install Proxy SwitchyPlus SwitchySharp.

Step 5: You should be taken to the SwitchySharp options page. Configure your proxy and switch rules like you did before. On the “Network” tab, make sure the “Revert proxy changes done by other apps” is checked.

Now your proxy switcher as well as switch rules should be working again.

I’m leaving the comments open in case you have additions or corrections to this.

The impending demise of the URL

TechCrunch writes that Google is in the process of killing the URL bar from its Chrome browser. To be fair, this is not recent news. Google has been exploring various UI configurations to its Chrome browser for for most of the last year, and the information looks to have come from the Window UI page from the Chromium documentation project.

It’s also worth noting that the proposed UI change appears to have found its way to the Android Honeycomb browser:

chrome_browser_full.png

Either way, the direction for Chrome is interesting, and for a number of reasons, it makes sense.

Apple has demonstrated that there’s a great economy in apps, but “app” is an increasingly diffuse term, considering you can create quite complex create apps in HTML and a number of new non-platform-native technologies.

If Google can change the public understanding from an app being something you download and install to rather being a place you visit, the change can help inventorize the web. The result could be easier to make discoverable to users but most importantly, it could be monetized. On the old web, you’d visit The New York Times and throw up in your mouth at the paywall. On the new web, you’d visit The New York Times and get all the free content, but have an option to buy a premium web-app which stores your access credentials while it serves as a bookmark.

The URL bar is the commandline, and like iOS doesn’t need a commandline for you to launch Angry Birds, Chrome doesn’t need a URL bar for you to launch Facebook.

fingerfriendly_apps.png

A few weeks ago, I created a Chrome web-app to see how the Chrome web-store works. That app has now been installed a couple of hundred times a week, even though the app is merely a glorified bookmark for a Google service. If we can learn anything from this, it is that pointing at a large fingerfriendly icon on your new tab page is quicker than typing in a URL or clicking a small navigation bar bookmark.

But what about search? Search is the core of Googles business, and Google won’t revamp a proven UI without good reasons. While putting apps front and center makes a lot of sense, there’s a UI challenge in having both search and apps front and center.

A few weeks ago, I wrote about Internet Explorer 9s new UI which disconnects the URL bar from the tab:

But with the emergence of Chrome Web-Apps, which are just around the corner, there’s a new, albeit not super strong, argument for disconnecting the addressbar from the tab, and that is that it’s still, despite web-apps, a place people use to launch new webpages. In the case of the omnibar, it’s also where people start searching. In Chrome Web-Apps [...], the omnibar is hidden when you’re inside, say, the Google Maps web-app. How do you launch a new page or search? You have to click “new tab” in order to get the omnibar back.

The solution could be putting the omnibar on the new tab page. Clicking “new tab” would then set text focus on the search field:

google_new_new_new_tab_page.png

It’ll be interesting to see where Google goes with this.