| « Implementing SpellCheck (Squiggly) with the Text Layout Framework (TLF) | Flash/Flex Builder <-> Flash Professional Asset Workflows » |
The recent news is that Adobe is going to abandon the iPhone/iPad export feature in Flash CS5 after Apple revealed the controversial SDK clause 3.3.1 which forbids applications that are not originally written in one of their approved technologies, namely C/Objective-C and HTML/JS.
So the official line is that Adobe is now focusing on getting the Flash Platform onto Android (along with existing targets, Nokia), and to be fair, even though that sounds like they’re just making the best of a bad situation, Android is going to be by far the biggest market judging by current growth indicators; the number of manufacturers producing all manner of devices that run it is truly staggering, the quality improving weekly.
Aral presented on something he called “Native X"; in a nutshell: why are Adobe obsessed with getting a one-size fits all runtime onto every device, rather than outputting native executables for a given platform? Presumably the argument is that a single runtime produces fewer cross-platform inconsistencies, but in reality this endeavour has proven very difficult to achieve. Flash Lite showed just how hard it can be, which for years consisted of a slower, older runtime running on certain Nokia smartphones, fragmented versions and implementations, the whole thing never really took off in a consistent way outside of Japan, and now Flash Player 10.1 and AIR is finally coming, should they continue down this route?
Flash CS5 showed an alternative —perhaps through necessity— which was outputting native apps for iPhone. By cross-compiling you can provide developers with familiar tools, but still target specific platforms. You do begin to introduce cross platform inconsistencies… does it have multi-touch or webcam (already a consideration in the FP) for example. Still, the win from being able to write something once and have it run on almost anything without too many changes far outweighs this problem. The alternative is to spend a lot of time and money writing once in Objective-C, again in Flash or Java… indie developers, thanks but no thanks.
The downside to this is that you will inevitably produce a one-size fits all set of capabilities, so you may lack access to a hardware feature which you could access in Objective-C. That’s fine, the point is you have a choice and you should not be forced to use something if your app or game doesn’t require it.
What Can Adobe Do Next?
Who could guess Adobe’s long term strategy? They may have this all figured out and this recent set-back is just a fly in the ointment. In a post “The World is Moving to HTML 5 and Other Flights of Fancy” I indicated that whilst Adobe have made a huge success out of the “Flash Platform", we have to remember the money has traditionally come from tools*. Flash CS5 and Flash Builder are just two tools that target the Flash Player, but there was once Director, and there is still Dreamweaver which has stood the test of time, of course Photoshop is used in pretty much anything you see online and in print. Tools, these are not something easily copied, they demand a premium.
*More recently we’ve seen a shift toward providing developer and consumer-facing services such as with Acrobat.com. I believe this to be a forward looking risk-reducing strategy, broadening the portfolio in-case of collapse in the desktop/app market, or perhaps just generating new scalable revenue streams.
So if I were the CEO of Adobe Systems, Shantanu Narayen, what actions would I take over the next 5 years? Partly this is a waiting game, the necessary features of HTML to make some of these leaps are still being ironed out, mainly thanks to IE 9 failing to add Canvas to an otherwise outstanding list of supported features. Instead it looks like SVG will provide the forward momentum for a large percentage of RIAs.
Either way, here are some things I’d consider…
Technical
Slowly start to migrate focus away from the Flash Platform - That’s the player/runtime end of things. This step has the highest risk associated with it because Flash’s ability to do so much more than HTML even promises to in the specs has always has been the differentiator and why people use Flash in the first place.
Focus on “Dream Builder” - Continue to develop the Flash IDE but focus on combining Flex Builder and Dreamweaver (ironically Flex Builder used to run in a Dreamweaver-like IDE, I propose the migration of Dreamweaver to Eclipse)…
Develop the best HTML5/JS Editor - None of the hardcore JS people I know use Dreamweaver, which I found suprising until you realise the code completion is pretty worthless for OO code. If Dreamweaver and Flex Builder were to combine, I would initially introduce “HTML Project” as a type in Flex Builder, which uses a Flex SDK targeting JS, including some of the familiar components, effects and so forth.
Open source the Flash Player - provide the web with one of the greatest gifts it has ever seen. HTML specs progress slowly, HTML5 really does just feel like a slight incremental improvement over version 4 when you weight it up against the features in Flash Player 10.
Work with the W3C - Providing the building blocks for technological innovations is one thing, getting any of it into the spec is another entirely. This probably needs to remain as hands off as possible for political reasons and wide-spread developer relations, whilst still supporting active development as many corporations do.
Don’t stray too far from the underlying web technologies - In other words, don’t do a GWT or face rejection.
Some of these things are simply unfathomable; “abandon the Flex SDK and build it again for HTML/JS?", no, not abandon, but aim to supplant in the very long term, this cannot happen overnight, and that’s a lot of extra man-power needed, but of course this would have to remain open-source as with Flex, and the developer audience would be enormous.
People
This is the really tough part, something I simply don’t have the experience to discuss with any meaning. It’s all well and good discussing what could be done with the products, with the specs, the technical side of things… but these are all supported by a hierachy of real people doing their jobs. No matter how slowly you do this people will lose jobs or move to another team.
Continuing to develop the Flash Player would see the very best developers adding those features that really wow us. The niche for cutting edge will not disappear (just like plug-ins), what I’m talking about here is the wider-web. The semantic, open web which has to, by its very nature, remain top dog.
What Can Developers Do Now?
I can only speak for myself. I’m writing a game which specifically targets tablet and surface computers, so I have to include the iPad in there of course. The news of Flash not being an option has also put me off using OpenPlug’s Elips Studio until we get confirmation of their situation… but in doing so I started to think of alternatives.
It just so happens this particular game does not rely on 3D graphics, complex animations or particularly advanced special FX, so I’ve decided to write it in Webkit-friendly HTML/JS (that includes things like 3D transformations). That means I can use some of the most advanced HTML5 features, it also means that it will run on a wide variety of devices, such as Android. By using technologies like AIR I can provide a consistent webkit engine to platforms that don’t inherently run it.
For the most part I will continue to develop with Flash, but I think this illustrates that you have to weigh up your options and not be afraid of picking up new languages; programming is a cumulative and transferable skill.
9 comments
Comments are closed for this post.
Follow me on Twitter
For games this is not such an issue as they all have custom UI anyway. But for any type of non-game app you're going to suffer. Which is precisely the reason AIR and Java apps aren't as popular as native app on OS X or Windows.
Here is a great quote from Adobe in regards to their entire ecosystem:
"At the center rests Flash Player and its runtime companion Air. They are surrounded by adobe tools, development frameworks, and servers... supported by an ecosystem of programs, partners, and communities. They connect outward through open standards and industry alliances and are used by over one million designers and developers... and counting..."
I strongly believe that the Flash Platform is the future and Adobe needs our support now more than ever. To show my faith in Flash and to provide motivation to any Flash developer reading this post, please check out my article "Flash is the Holy Grail":
http://blog.nothinggrinder.com/flash-is-the-holy-grail
I agree with many of the "next steps" you suggest for Adobe. I also agree with Aral's "NativeX" vision. I have put my thoughts in an earlier article here:
http://www.visionmobile.com/blog/2010/03/why-adobe-should-change-its-mobile-strategy-again/
Regarding OpenPlug (and other 3rd-party tools for that matter), it is completely at Apple's discretion to allow apps built with them or not. Irrespective of what their SDK terms say.
You may want to refer to our position on this at:
http://developer.openplug.com/index.php/blog/187-update-apple-331-elips
So, it is possible that Flash developers could have ported only certain simple applications anyway and not others. At least the first year.
The details were too sketchy. This reminds me of the FlashLite efforts. Sounded great on paper, but when we actually offered the solution to our clients, the "develop once, publish on all platforms" promise turned out to be a big headache and costly.
Yes. The CS5 feature was a step in the right direction. It would have made a great selling point. But can't help thinking that it was not ready for prime time yet.
@Charles It was early days, but it was very different to Flash Lite, no runtime required, such a shame it has been nipped in the bud.
Some of the technical things they have to do are optional, but one and the first Adobe must do is to create a good HTML5/JS Editor. A good JS editor that can understand classes or pseudo JavaScript classes like they (Macromedia) done in the past by creating AS2 macro language over AS1 (which was near strict ECMA-262 like JavaScript) to have a real autocompletion and goto declaration on types. Working today in JavaScript on big apps other than using GWT is the worst nightmare ever. A macro-language like GWT but using ActionScript would be a good choice.
Open source the Flash Player and work on its integration as part of the HTML5 Open Web Initiative is something I promote with the Open Source Flash Player petition : http://www.openplayer.net/ . You well have summed up why as a technical concern, even if there would be other commercial or people benefits.
On the other hand I'm not sure that choosing "Dream Builder" as a the only HTML5 development engine would be a good choice. Using the existing Flash Builder to export HTML5/JS Apis RIA could also be interesting.
For adobe, the new version of flash player they should not support AS 2 at all since i feel the only reason everyone complains about flash is poor coding practice...