I have a dream where our developer children will hear the name “Adobe” and not cringe. I can see a day where we won’t need proprietary and hacky plugins to solve our most basic web application (and rich desktop) needs. HTML5 is the light on the horizon and Google is her knight in shining armor.
I’ve built my fair share of cross platform desktop applications in Java, and over the past several months, I’ve built a fairly successful AIR app. I have no doubt that it was the right decision at the time the project started, but I wouldn’t make the same choice again. The Adobe AIR platform’s days are numbered, and here’s why…
The web browser has already proven to be the best cross-platform runtime environment and Webkit has become the de-facto standard for embedded browsers. You’d think that using Webkit with AIR would be a good thing. Unfortunately, the version of Webkit packaged with AIR is stripped down and makes even simple things like customizing the scrollbars impossible. Adobe had an opportunity to really push browser rendering forward by embracing HTML Canvas, but instead they’ve done a wonderful job at crippling the browser environment in such a way to force developers to use Flex/Flash to build visually compelling applications.
The Adobe AIR security model has literally put me at my wits end. From sandboxing to certificate signing, I can’t count the number of number of grey hairs on my head due to the ridiculous restrictions of the AIR SDK. My question is why put such extreme handcuffs on the developer? If something is technically feasible, why put in extra development work to restrict the SDK API’s? A sandboxed environment makes sense on the web, but not for distributed desktop applications. The majority of popular AIR applications use self signed certificates, but this is taboo according to Adobe in an effort to push purchasing potentially expensive code-signing certificates. Signed applications are important, but whenever I install any application, I need to trust the developer regardless of the signed certificate.
Hell, all I want from a desktop SDK is the ease of auto-updating clients as if I was deploying a website. AIR can’t seem to get that right either…
HTML5 has the very real opportunity to give web developers the API’s needed to build great rich desktop applications without proprietary components. Audio/Video and filesystem API’s will give web developers a real chance to build kick ass stuff. Browser extensions like Greasemonkey and Google Gears have proven the technology stack is viable, and we’ve seen the iPhone and Palm Pre’s SDK’s successfully leverage these technologies. Now, we need to push this stack onto every desktop. Waiting for HTML5 capable browser marketshare to reach end users is not realistic, but providing bundled desktop apps with HTML5 embedded browsers seems like a very real solution in today’s market.