April 02, 2008

Google adds to the argument in favor of "Rich Connected" applications and online/offline operability

Since the birth of Adobe AIR, there have been a lot of conversations about the platforms primary differentiators, one being the ability to work in an offline mode. This is primarly related to when / why you'd build an application that required offline access.

I've worked on a variety of AIR projects, including eBay's "eBay Desktop" AIR application. In relation to eBay, we tried to define all of the possible user scenarios where an offline mode would be helpful, or make sense to the business. While some were interesting, none were terribly compelling. (Some were pretty cool though, like being able to head to a storage unit with your laptop and a web cam to photograph items and create listings offline, that would then be fired up to eBay's Web Services once you reconnected to the Internet.)

Just like with any new technology (or application of technology), time seems to shake things out and separate the good uses from the bad ideas. I think that many applications could benefit from the ability to work offline. We haven't put much thought into it as experience designers, because until now, it hasn't been a realistic possibility for Web-based applications.

I love the fact that Google is now announcing that they've baked in offline capabilities into Google Docs. It is obvious at this point that more and more applications are going to start leveraging the ability to work offline and embrace the whole idea of being "hybrid" between desktop application and Web application.

Change is good! (and so is being able to sit on the beach or in a park and work a little, and not have to worry about your wireless connection being available.)

For many US-based users, this is becoming less of an issue, especially with more and more people adopting wireless "aircards" from their mobile provider and the push to offer wifi everywhere. Until then...



March 31, 2008

Adobe AIR on Linux! More Cross-Platform Goodness...

For years, one of the decisions every team embarking on a mission to create desktop software has been faced with a common challenge: Determining which operating system(s) should be targeted for their application.

Remember the early promise of Java?: "Write once, deploy cross platform". The thought at the time was that applications written in Java, including Java Applets would be the holy grail of software deployment, finally eliminating the need for businesses to choose Mac or Windows or Unix/Linux. In theory, Java is a solution to this problem, however time has shown that Java applications are far better suited to run cross-platform "on the back end" than as end-user GUI applications.

A lot of software designers and user experience professionals would probably agree that Java for cross-platform GUIs failed, in part, due to the cumbersome process that end-users had to go through to ensure that their installed Java runtime would allow the application to run. Also, java applications of this nature just didn't, couldn't, wouldn't perform as well as required and weren't stable enough for a real takeover in the consumer market. The latter is most often blamed directly on the decisions made by the folks at Microsoft in their effort to combat the threat posed by Sun and the possibility of a Java-based operating system.

A lot has changed since back then! While Windows is still the dominant operating system for both business and personal users, there has been a huge gain in market share by Apple, as well as with Linux. While it used to be a satisfactory decision to "just make an application for Windows", more and more companies are now thinking about "cross-platform" as a necessity and no longer just a "nice to have".

Today, Adobe jammed their flag in the ground, staking claim to next generation cross-platform desktop applications. They Announced Adobe AIR (Alpha) for Linux!

This announcement means that countless Linux (Ubuntu, Debian, SuSe, etc) users are now able to play along in the "Rich Desktop Client" reindeer games enjoyed by both Mac and PC users since the public release of Adobe AIR.

In addition to the release of the AIR runtime, Adobe also announced that the Adobe Flex Builder IDE was also available for Linux!

So, it seems as if Adobe has defined the first stable, freely available, and truly cross-platform solution for desktop application development. Why is this really a big deal?

(I do realize that technologies like Python also run cross-platform, but we are talking about something much more adoptable by end-users with AIR).


In my opinion, this is interesting for three primary reasons. Reason number one is that this means that software development teams (and business folks that pay them) no longer need to cut Linux users out when bringing applications to market.

Secondly, and less obvious, Adobe's acknowledgement of Linux moves the operating system one step closer to being the preferred OS for many folks that were disappointed by the range of desktop software available that has traditionally been available.

Hardcore Linux users will disagree with me on this point. I am sure that it wouldn't be too hard to find people who'd passionately debate this and stand strong in their belief that Linux is, and has been, the greatest thing since sliced bread (or inkjet printers). I don't disagree with the fact that Linux is a powerhouse of an operating system.

I must point out, however, that after many attempts by different companies pushing Linux distributions (Redhat, SuSe, Mandrake, etc, etc) as well as hardware vendors and retailers trying to sell Linux-based desktops or laptops, that the general public has shied away from the platform.

It isn't only the common everyday users that have found Linux to be less optimal than Windows or Mac's OS X. Even industry insiders and RIA thought leaders like Adobe's Ryan Stuart admit that the reason they haven't made the full-time switch to Linux is due to the lack of quality software applications or choice of applications that they have.

Let's face it, Linux is a wonderful system, however for the untrained user, can be unwieldy to say the least.

I suspect with the newfound popularity of the Ubuntu Linux distribution, and with the new ability for AIR applications to run on the platform, more and more folks will be stimulated to give Linux another shot as their OS of choice.

Now that Adobe is releasing Flex Builder for Linux, is it possible that they will follow suit with their other software tools (Dreamweaver, Flash, CS3, etc?) If that is the case (total speculation), it only adds support to software/web design professionals' desire to take Linux more seriously.

Lastly, having been involved in the strategy, design and development of many different software projects, I can attest how unrealistic it really is to try to develop different instances of a software product to run on different operating systems, while still maintaining quality and brand identity (not to mention plain old usability). The primary OS always gets the funding, and the secondary platform (usually Mac OS) typically suffers.

Need an example? Have you used Microsoft Office on a Mac lately?

Moving on...

One major challenge to this entire argument (and one I am sure I will hear!) is the fact that Adobe AIR still runs inside it's own security sandbox, and that applications developed to run on the AIR platform still don't have the "real power" of traditional desktop applications. In short, to prevent the ability for AIR applications to take over your computer or execute malicious code, they are limited in what they can or can not do.

The primary limitations of AIR applications is that they don't have system-wide file access, can't connect natively to external devices, and rely on the Adobe framework to do what they need to do. Having talked to the folks on the AIR team about this, it is clear to me that they realize this deficiency and leave me with the assumption that down the road, the AIR platform may become more robust, enabling more and more integration directly with the end-user's operating system.

Until then, there is Merapi. As a member of the Merapi project, the release of AIR for Linux is terribly exciting. We've created Merapi in anticipation of this, and because it is developed in Java, Merapi is designed to run cross-platform, alongside the Adobe AIR framework.

The concept is that developers could create their application using the Adobe AIR runtime, and package it up with Merapi, utilizing the Merapi API and plugin architecture to do things that AIR isn't able to do by itself. For more information on Merapi, check out this recent post or hop on over to Adam Flater's blog where he's been making updates until we get the Merapi Web site and SVN repository online.

All in all, it is going to be one very exciting year in the world of next-generation thin-client applications, cross-platform software design and development and the adoption of Linux by users who were previously scared away by its lack of support from major software manufacturers like Adobe.

For more information on this announcement and Adobe AIR/Flex on Linux, check out the following: