Sunday, August 10, 2008

There are gadgets, and then there are Gadgets...

A while back one of my colleagues -- Charles Wiles -- asked me a very interesting question:
"What is an example of an application you build with the Android APIs that you couldn't build with browser Ajax?"
This is a deceptively simple question. There are easy answers to it, but it turns out that those lack a certain... je ne sais quoi. The easy answers just aren't satisfying, and I eventually realized that there's a deeper question that people are really asking, when they ask about Android "vs." some other platform, like J2ME or the iPhone or Symbian.

So I spent some time thinking about it. One problem is that there's a lot of grey area here. Many applications could be done using either technique, or on several of the other platforms out there, and still be great user experiences. In other words, it's not really about features, and it's not really about capabilities. It's not about having GPS where someone else doesn't, since the other guy will add it in his next release along with a feature you don't have.

I needed a deeper, better answer. I eventually realized that what developers are really getting at when they ask questions like this is:
"What is the difference is between all these damned platforms, and why I should care?"

Every developer has a different career, skill background, and set of interests. Everyone also tries to understand new things by applying knowledge they already have. So, developers who understand J2ME ask about Android vs. J2ME; developers who understand Macs or iPhone come from that direction; and so on. But they're really asking the same thing: how should I be thinking about Android?

Let's take the iPhone, for instance. With the iPhone Apple has a very solid, very successful platform -- no doubt about it. However, much has been made about the restrictions on applications, such as no background processing, no interpreted language runtimes, and so on. Opinions vary as to whether this is good, bad, user-friendly, developer-unfriendly, or what.

But that kind of scrutiny is like looking through a microscope: you can't see the big picture. What Apple has with the iPhone really just boils down (in concept, not in the details) to a gadgets platform, like OpenSocial, iGoogle, or Facebook.

Apple owns their platform and sees themselves as responsible for the user experience, period. They restrict what applications can do and what they can access accordingly, so as to maintain the quality of that user experience according to their standards. They acknowledge the benefit that third-party developers can bring and will let you build apps to plug in to their user experience, but make no mistake: this is a private party at Apple's house. They can be as picky as they want about who they let in, and they can ask you to leave at any time. But once you get in, as long as you behave yourself Apple wants you to have a good time.

Now, this isn't criticism, just an observation. As Google, Facebook, and the various sites that have deployed OpenSocial demonstrate, this is a perfectly legitimate platform model. Like those other services, Apple is providing the platform and a very clear, specific execution environment. Developers are expected to plug into that cleanly and respect the borders that Apple has laid out.

The benefit to developers is that they get to ride the coattails of iPhone's success. But the potential downsides are that you just can't break out of that sandbox. For instance, consider Facebook. Facebook has a really nice iPhone application, and I've even heard it said that it could "almost" physically replace the iPhone Contact book.

Well, why doesn't it? The answer is that Apple doesn't want it to, because that Contacts user experience is a key part of their platform. It would be like Facebook itself letting a third-party developer build an app to totally reskin the site and insert its own branding -- it's just not going to happen.

However, that kind of thing is exactly what Android aims to enable. If an end user buys a phone that comes with the standard Google look-&-feel and application suite on it, we see no reason why that user shouldn't be able to choose to replace it with Facebook. Android is intentionally designed to let third parties such as Facebook build an application that replaces the Contacts book, Home screen, and Dialer, or nearly anything else. It will quite literally be possible to completely reskin an Android device into a Facebook phone. (What would that be -- an fPhone?)

You might even say that Android and iPhone are sort of inverses of each other. iPhone is a Gadgets-style platform where the user experience is largely fixed and an execution context is carved out for each third-party application. Android provides a framework for managing the execution contexts of third-party applications, which are permitted (and expected) to augment the user experience in innovative ways.

Neither approach is inherently "better", and when it comes down to the daily business of writing code and building UIs, the experience probably isn't that different. But in terms of the big picture, that is the satisfying meaty answer that I've been looking for.

At least, for "Android vs. iPhone." There are quite a few other platforms out there, though, and each one has a slightly different answer. (Perhaps the subjects of future posts...) But now that I have the right angle to view this question from, it makes it a lot easier to talk about. At least with geeks -- I don't know that my family appreciated it that much last week, when I was home on vacation.

So it goes. ;)


szahn said...

Hey Dan!
Thanks for your thoughts about the "Platform world" we live in ;)
It's exactly what I do think about the android platform and the potential it has. It's the ability to exchange every app with a customized service. It really is what makes android special..
I don't know if you're the right person to ask for, but believe's hard to get in contact to a developer of android to discuss about some thoughts I have. So if you've got the time please reply ;)
I'm a 22 year old student searching for a bachelor thesis. Besides study I'm working in a business that developes embedded entertainment terminals for patients in hospitals. The patients are having the ability to watch TV, browse the web and make phone calls with that terminal. It looks pretty much like a 15" flatscreen. Now to my question ;)
Is there an interest to make android not just a mobile os then also an embedded operating system for devices that are not 'just' cellphones? Like a replacement for the ugly and shabby windows ce plattform ?
Thanks in advance


Unknown said...

For backup iPhone contacts onto your pc, I strongly recommend Tansee iPhone Transfer Contact. It is one of the best backup softwares that I’ve ever used. You can backup your iPhone contacts onto your pc, and you can also export full screen of contact’s photos. That’s wonderful! If you are interested in it, you can try: