RE: Gary’s letter. Chris’s Response. AIR vs PhoneGap, etc.
The following essay is prompted by Gary Paluk’s Open Letter to Adobe, and Chris Campbell’s response. I wanted to elaborate on some technical insights to Adobe AIR vs. PhoneGap, and the severe limitations of PhoneGap. In particular, for Enterprise and General Purpose apps. I also wanted to talk about the Adobe AIR and Flash Platform communities. How the de-emphasis of Flash has affected the community, and disenfranchised customers.
The AIR Community
I was very proud of the AIR community last week. They may have soured an unfortunately-worded Adobe announcement with their discontent – but their solidarity, and support of AIR was admirable. In their announcement, Adobe describe their new PhoneGap toolset as “Adobe’s leading cross-platform app development solution.” It’s no wonder that AIR developers were upset.
To many, this seemed like the final straw from Adobe, who seem to have already truncated the roadmap, neglected the Flash Platform community, failed to communicate the virtues of AIR, and effectively gagged and silenced the Flash Platform evangelists. The ACPs, like myself try to keep the flame alive, while Adobe itself remains mostly silent about the Flash Platform and its continued success.
It is not unwise of Adobe to focus on HTML5 toolsets. Although, the challenge will be to stay ahead of free open-source offerings. Making a success around open HTML5 technologies is going to be a lot harder for Adobe than it was for them to build successful products around their own proprietary Flash Platform technologies. If I seem dubious about their ability to succeed – it is because new Adobe seems to have lost much of its surrogate Macromedia DNA now. I just see corporate grey, public relations whitewash, and bland beige bean-counters.
In response to Gary Paluk’s open letter, Luca Mezzalira explained Adobe’s financial motivation. But why do Adobe’s HTML5 ambitions have to be mutually exclusive to AIR evangelism and support? When Adobe shifted their focus from the Flash Platform to HTML5 – it was like flipping a switch. The Flash Platform Community was a tremendous asset. Adobe’s destruction of that asset makes no sense. Many disenfranchised customers may never trust Adobe again. Great news for Unity3D, Ancsa Corona, Titanium, Sencha, and Open Source alternatives. I wonder if it’s possible to a price on the destruction of the Flash Platform community? Suppose we could calculate that, and put it under the noses of the myopic accountants steering the good ship Adobe – I wonder if they’d change direction?
I watched an interview with Shantanu Narayen where he talked about the de-emphasis of Flash in favour of web standards (6:00). When asked about Flash on an iPad (7:00) – this was a perfect opening to talk about AIR, and apps – but AIR was never mentioned. This interview is even worse: “With products like PhoneGap, we want to enable people to build great apps, whether they be HTML or native apps, for the iOS platforms.” …. really?
Those disenfranchised ex-customers
I was in Thailand at the end of last year, and I offered to give a presentation to a Bangkok Web Meetup Group. I joined their Facebook Group, and I saw a discussion related to WebGL, and I responded to a comment that was pertinent to Stage3D. I might as well have lit a fire under a hornet’s nest. These guys turned on me, and flamed me, made me out to be some kind of idiot, and hurled personal abuse – before I left their group in disgust. There was no point. Most of my technical arguments were way over their heads anyway. Tough crowd. I changed my mind about giving a presentation.
The attack came mostly from Caucasian developers, not Thai, who identified themselves as former Flash and AIR guys. Disenfranchised with Adobe, and its technologies. The web designers had switched to HTML5 and the app developers had switched to Unity3D. There was a lot of hate.
The Power of AIR
Overall, HTML5 never superseded the Flash Platform on technical merit. It just got adequate for making banner ads and rich experiences on the web, so it stole those markets. The challenge for Adobe then was to develop the capabilities of the Flash Platform into new markets where HTML5 would flounder. One important and underexploited market is where you raise the bar on the sophistication of mobile/web apps. Like Adobe’s own Photoshop Touch app. Did you realise that this was built using Adobe AIR? I don’t know why Adobe are so restrained telling people what AIR can do? I don’t believe the conspiracy theories that claim a sinister collusion with Apple. But I can see that conspiracy theories are more comforting than blaming it on the incompetence of Adobe’s marketing machine.
I’ve always been fascinated in the ability of AIR to raise the bar on the sophistication of apps. I built a spreadsheet, illustration, and sophisticated publishing app using AIR on the desktop. It was my intention to port these to tablet devices – but I got busy with other projects. ( They’re not available for download anymore – but I’ve got some videos on my youtube channel. ). The publishing app, e2publish, in particular, leveraged the capabilities of Adobe’s TLF Framework. HTML5 text layout doesn’t even begin to approach what TLF can do.
HTML5 on mobile is buggy, fragmented across OS versions, and performs badly. While both Apple and Google pay lip-service to HTML5, neither want to compromise their app walled-garden. The iOS performance of hybrid apps is worse than web apps. Facebook, LinkedIn, and other companies abandoned hybrid HTML5 apps. This is essentially the same approach as PhoneGap.
So when the AIR developers gate-crashed Adobe’s party, they weren’t being AIR purists, narrow-minded xenophobes, or fan boys. They were highlighting a valid technical comparison. That Adobe AIR is generally much more capable than PhoneGap. Most of these guys have kept abreast of HTML5 advances, and many know PhoneGap too – warts ‘n all. Ironically, I’m teaching a five day HTML5 and PhoneGap course to corporate clients the week after next.
PhoneGap essentially makes a mobile app out of web pages. That sounds easy, doesn’t it? But once you scratch beneath the surface it involves mastery of a whole load of frameworks and tricks. Once you get deeply into it, you’ll find yourself missing the simplicity and speed of AIR development.
PhoneGap can incorporate mobile-styled HTML5 forms – does this mean that it’s great for enterprise and general purpose apps? Not really. PhoneGap has its niche – but it does not scale up well to sophisticated projects. A lot of developers have got their fingers burnt battling with and performance issues and workarounds with PhoneGap / Hybrid HTML5 apps. I’ve seen it described as “Build Once – Optimise Everywhere!”. If you succeed getting your app working, then maybe your project will take many times longer than what it would have taken if you’d used AIR. If you fail (and I’ve heard accounts from many developers where this has happened), then you waste time and money.
So what is PhoneGap good for? PhoneGap is good at simple thin-client apps, or HTML5 document-based apps such as WikiPedia, or Cross Platform apps deployed to many target platforms (iOS, Android, Blackberry, Widows 7 and 8, WebOS, Symbian, and Bada).
A while ago, I started a discussion on LinkedIn regarding Hybrid HTML5 (PhoneGap), vs. Native, vs. other Cross-Platform approaches. It makes interesting reading. Here are some of comments that developers made about HTML5/Hybrid/PhoneGap apps:-
“I spent 9 months… tweaking a html5 app and I pushed the limits of html5 on mobile… We had to go native… html failed.”
“The argument that it is faster and easier to develop a non-trivial app in HTML5 is total nonsense”
“In XCode using Objective-C I’m a pretty happy camper. My HTML5 days are much less pleasant”
“Building a complicated mobile application in HTML5 has been hard”
“The cost of doing HTML5 UI development is greater …. beyond a moderate level of complexity”
asm.js, Enscripten, and famo.us
Obviously, asm.js, Enscipten, and famo.us are exciting developments that are worth watching. But do they solve the problems of mobile hybrid and web apps? I doubt it. There’s no point of compiling to asm.js to run inside a mobile hybrid web wrapper. If we’re going to get into Cross-Compilers, then use OpenFL (Haxe NME) to build a real native app. If ASNext isn’t going to happen, and clearly PhoneGap will fail, then Adobe should at least invest in OpenFL.
Suppose there is a significant improvement using famo.us on mobile? Enough to become a threat to Apple and Google’s app walled garden. Are they just going to allow that? When AIR for iOS was first released in 2010, Apple changed their developer agreement to ban it from iOS. The embargo lasted six months. The proposed famo.us Cordova enhancement relies on a modified version of Webkit. Not the standard iOS version. Would Apple allow that?
AIR 2D and UI Frameworks
Adobe AIR is really good at building Enterprise and General Purpose Apps. The problem is that Adobe has never backed the right UI framework. The Mobile Flex Framework was slow, bloated, and its inadequacy did a lot to destroy people’s perception about the power of Adobe AIR on mobile devices. Flex made AIR look like a joke on mobile, and it initiated the exodus of developers looking for alternative frameworks. The lucky ones found MadComponents, and stayed with the Flash Platform and AS3. Others abandoned Adobe technologies and went over to the competition. The mobile side of Flex hasn’t improved under the Apache group – and Flex remains the worst option on mobile. Feathers is a great option provided that your project is built using Starling. So it is more appropriate for menus and controls for 2D games. But again, Adobe backed the wrong framework with Starling. Genome2D and ND2D(x) were always much more capable candidates, that demonstrate the impressive power of Flash Platform more definitively.
Call me biased, but MadComponents is still the best UI framework for AIR General Purpose and Enterprise apps. The next release will include better tab pages, better scrolling responsiveness for lists with custom renderers, and even more powerful datagrid capabilities. There’s a video introduction to MadComponents here. I’ve always wanted to build a drag-and-drop UI Builder app for MadComponents. But unlike Feathers, MadComponents is not supported by Adobe, and I can only do so much with no funding. But considering that it has evolved slowly, whenever I’ve had the time – it is pretty impressive.
Most of last year, I spent developing a very sophisticated AIR app that peaked at #4 in its iTunes category. I don’t want to say too much about it now. Later in the year, I’ll make updates that will attract a wider release, and I’ll make public announcements when the time comes.
I used Adobe AIR – because it is so powerful, versatile, Cross-Platform, and it scales-up very well to sophistication. I did seriously consider other options. Xaramin, and OpenFL (Haxe MNE). But AIR allowed me to utilise MadComponents – and this was a huge bonus in favour of AIR. It allowed me to incorporate powerful datagrids and novel UI elements.
In the future, both MadComponents, and my app may be ported to OpenFL. But right now, Adobe AIR is still very much alive and kicking, despite any speculation to the contrary.
Actually, before I got involved with this project, another developer had attempted to implement the app using PhoneGap. Given the sophisticated nature of the app, I’m not surprised that they failed. PhoneGap was a naive choice that wasted time and money.
Chris Cambell’s Response
I was impressed by how quickly Adobe responded to Gary’s letter. Chris describes himself as a “customer advocate” for the Flash Runtime product team. I don’t think we have evangelists anymore. I wonder how much sway this advocacy has inside Adobe, outside of the marginalised Flash team.
Chris mentions “video and gaming” several times in his text. And every mention of this grates on my nerves. Adobe AIR is a versatile and powerful technology. It’s not PhoneGap. If you build an enterprise app, beyond a moderate level of complexity, you run a higher risk of failure if you use PhoneGap, than if you use Adobe AIR. The AIR development time will likely be shorter anyway. YES – AIR is great at Gaming and Video – but it is great at a lot of other things too.
The decision to compartmentalised AIR into Gaming and Video, and PhoneGap into Enterprise, was likely made by some technologically naive Adobe accountant at a board meeting. It’s a decision that doesn’t stand up to an experienced developer’s objective technical scrutiny. It was a dumb decision that will backfire – the same as hybrid HTML5 backfired for Facebook and LinkedIn.
If you tweet this – please use the hashtag: #ListenToYourCommunity )