What you might not know about AIR (yet)

If you’re reading my blog, I’m going to assume that you already know what AIR is. If you don’t, have a look at the official AIR product page before reading any further. Rather than tell you what you probably already know about AIR, I’d like to mention a few things that people might not have realized yet.

AIR isn’t just another Adobe product. It isn’t just a new tool or utility. It’s an entirely new way to develop, deploy, install, and use desktop applications. Entirely new. I really can’t stress this point enough. In the world of software, new products are launched all the time (if you don’t believe me, just follow TechCrunch for a few days — it’s staggering), each with a marketing team that wants you to believe that their technology is nothing less than revolutionary. So when something completely different does come along, it’s sometimes hard to distinguish. How successful AIR will be and how quickly the technology is adopted is an entirely different topic, but there is absolutely no doubt that it’s new and disruptive. I could easily write an entire white paper on the importance of AIR, but for the sake of brevity, I’ll focus on three main points:

  • Web technology on the desktop really makes sense. When I first heard the concept of running web technology on the desktop, I was admittedly skeptical. This was several years ago when my perspective on web applications was that we were all willing to sacrifice things like usability, richness, offline support, and features for the convenience of not having to host and update the apps ourselves, and the power of having your data accessible from any computer. That isn’t even close to a valid assessment anymore. Thanks to Flash, Flex, and some truly amazing work done around JavaScript and Ajax, there are many applications on the web today that completely blow away most desktop experiences. The old adage of necessity being the mother of invention helped the web transition from a handful of HTML form controls and slow page refreshes to a rich, interactive, intuitive experience. The idea of unleashing those technologies and the developers working with this technologies on the desktop started making more and more sense, especially since it finally gives the final advantages that desktop applications had over web applications to web developers: local APIs, and offline support. The one thing web apps couldn’t do were things like local file access, system notifications, native drag and drop, etc., and of course, no matter how great the web application was, if you didn’t have an internet connection, you couldn’t access it. This is what we mean by bridging the gap between the desktop and the web. AIR lets you have the richness of the web and the power of the desktop, and you can still do things like easily update your applications and store your data remotely. And you can do it all whether you’re online or off.
  • Cross-platform is real. For a long time, the idea of running the same applications and getting the same experiences on Mac, Windows, and Linux was a little bit like the idea of world peace. Everyone seemed to agree that it would be great, but it never seemed all that realistic. I think it’s safe to say that AIR is the first technology to really get the idea of cross-platform right. I shouldn’t over-idealize this aspect of AIR, however. To be perfectly frank, there are still challenges with building 100% cross-platform applications. Menuing systems work differently on Mac and Windows, and all platforms have concepts and conventions that other platforms don’t have (system tray, dock, etc.). But I have written at least a dozen fairly full-featured AIR applications since we started working on the runtime, and I have never come across a cross-platform problem that I couldn’t solve. In some cases, I’ve had to write layers of abstractions, and in some cases I’ve opted to completely avoid things like menus and focus instead on making functionality better integrated in the UI (which I believe is the trend in software development anyway — look at Microsoft Office 2007, the iPhone, and many of the best Mac applications). But the extra work I’ve had to put into making sure my apps ran seamless across platforms was often nothing more than an afterthought, and certainly negligible compared to the advantages of anyone on almost any desktop system being able to run my app. This point was really driven home when I first started using AIR on Linux. I’m a big Linux fan, and the idea of not just being able to run the same apps on Linux that I run on Windows and Mac, but actually develop those apps on Linux as well, is incredible satisfying and liberating.
  • Today there are millions of new desktop developers. The last thing I want to mention is that I feel like we just opened the floodgates on the desktop. I feel like we just did to the desktop what the printing press did to education, or what flexible emulsion film did to photography. I don’t know how many web developers there are out there, but I’m guessing there has to be millions. However many there are, there are now that many more desktop developers. Take a second to think about what that means. Someone with knowledge of HTML, JavaScript, Flash, or Flex can now build applications for the web, for Mac, for Linux, and for Windows, and all they have to do is learn a few new simple APIs. (I don’t want to speculate too much in this post, but there are plans to bring AIR to even more places in the future.) Not only can they developer for all those different platforms, but they can develop on all those different platforms using all the same IDEs and tools they used before, and they can get everything they need (SDKs, etc.) entirely for free. Web developers have just been given an entirely new world, and everything they want is there for the taking.

I’ve been in the software business for 10 years, and I’ve worked on all kinds of projects. I’ve been fortunate that I’ve never had to work on a project that I didn’t like or believe in. But I believe AIR is the most important project I’ve ever had the good fortunate to be involved with. I can’t wait to see what the world does with it.