Another Developer on Apple vs Adobe (Flash)
05/01/2010
It's only been one day since Steve Jobs posted his Thoughts on Flash, and mobile developer blogs are already at full-swing. In fact, this drama has become such a major issue, that there is even a discussion on Flash dying as a whole, not just in terms of the mobile market. This is a bit different from the typical technodrama of trademark infringements and patents for a few reasons. Adobe and Apple have a history, and in the past have relied on each other to evolve - and while that's true of many conflicts in technology, this one is very personal to many different people from developers and creative professionals to end-users. Even some of the official (and especially unofficial) statements have been personal, passive-aggressive and sarcastic. And I find it all fascinating, in a reality-tv-tabloid-celebrity-leaked-video kind of way. With all of that said, I'd really like to analyze (read: think out loud about) all of this from a few different perspectives:
Developing
Without getting into definitions of what "open" means, I can speak from personal experience. Developing for Flash wasn't always a treat. The IDE was hard to work with, and would frequently leave me with corrupt files and crashes. Slowly I learned to work in external files using tools like SEPY to save time from crashing. There were also lots of hacks and workarounds that became common practice. There were a few open source solutions for flash, but most of it was intermediate to advanced. Then, I discovered FlashDevelop, which completely eliminated the barrier for programming. I was able to download the free Flex SDK and compile to the latest versions of Flash and AIR, all without using free software. That may not be a textbook definition of "open," but it's sure as hell more open than developing for iPhone and iPad.
Programming for the iPhone was actually a lot of fun, and as I mentioned before there's something inspiring about it. Creating software for the latest must-have-gadget is thrilling, and hearing about all the success stories from simple (and not so simple) apps gave me lots of motivation. Learning Objective-C was rewarding, and I didn't have many problems setting up or using XCode or Interface Builder. The problem I had was with testing and "provisioning." I will be associating negative emotions to that particular word for quite some time after experiences with the App Store.
Most non-programmers aren't really aware of the development perspective for Apple either. It's been tense, as they seem to approve or reject apps on a whim, and selectively allow content based on ambiguous statements which seem to revolve around some kind of moral highground. None of that really sits well with me, and I assume many other developers. Finally, it's been said over and over, but end-users don't really care what was used to developed their products. End users don't care about GoLive, FrontPage, Dreamweaver, Coda or Notepad. They don't care if you use mootools, jquery or dojo. They certainly don't care if you used XCode, Flash CS5 or Mono. The only ones that really care what you used, are the creators of each respective development tool.
Mobile Apps
Before getting into any particular side of this debate, I have to say it's a bit foolish making any sort of judgment calls this early in the game. Flash hasn't even scratched the surface of mobile apps, yet some people are already declaring the victors. I can absolutely agree that Apple led the way in rolling out this whole mobile app marketplace business model, and making it tangible - but having a head-start doesn't guarantee lifelong success (although I will be so daring as to suggest Apple may be doing this for a while).
As of right now, Apple is pretty much dominating the mobile apps world compared to Blackberry, Android and other smartphones. However, the entire process has been bittersweet for developers. Small shops and independent programmers have been able to turn hobby projects into rags-to-riches stories because of iPhone and iPad development, and that has really been a huge inspiration for even more innovation. However, that same inspiration has also been stifled along the way. I haven't made anything for Android yet, and I haven't attempted to port anything in Flash to a mobile device. I've created a few native iPhone apps, a Blackberry app, and I have developed quite a few mobile websites.
I can't wait to see what sort of impact Flash will have on the mobile marketplace, but until then I'll bite my tongue on that whole issue, which in my opinion is at the heart of this entire episode.
Touchscreens
One element of Steve's post that struck me as particularly humorous was regarding rollover states, and indicating that Flash was outdated because it was designed for using a mouse and keyboard. The reason I find this humorous is due to the fact I've been working on various touchscreen applications over the past few years using Flash, Flex and AIR. In fact, while Steve was writing that blog post, I was making some final touches to a touchscreen kiosk application made entirely in Flash CS3.
In fact, when the Microsoft Surface was announced, there were already working multi-touch libraries for Flash being shared around on the internet along with DIY instructions on making multi-touch interfaces. None of this was exclusive to Flash, as most (if not all) was ported from other languages - but the point is, Flash has constantly been able to adapt and evolve to however developers see fit. I'm not even sure Adobe deserves all of the credit for the innovation that's been made by the community, but they sure as hell have embraced it.
Video
The point was made that before Flash, when you wanted to watch a video online you had to choose between Real Player, Quicktime and Windows Media. It was standard to offer video in multiple formats, because nobody was ready to take sides or make up their mind. At least not as ready as Apple and Microsoft seem to be today about H.264. As of 2007, Flash has supported H.264. If HTML5 is going to support it, more the merrier. The way I see it - if you have an H.264 video file, it's ready to play in almost any modern browser or media device. However, if you decide to house that video in a custom Flash player, all of a sudden it cannot be played on an iPhone/iPad. This has nothing to do with Flash being locked-down or closed. The video is there, it's just that Apple is refusing to acknowledge it, because of the wrapper it's in.
I don't have any problems with HTML5 taking over in online video, in fact I embrace it. I don't have anything against HTML, or CSS, or XML, or JavaScript, or SQL, or any other scripting language. I'm a bit confused why H.264 support in HTML5 is supposed to kill Flash. It's still up to the browsers to implement the actual support, is it not?
Gaming
While Apple has been innovating mobile devices, slick hardware and outstanding UI design, they still haven't cornered much of the gaming market outside of mobile apps. Despite Jobs' reference to having more entertainment apps than any other platform, the amount of Flash games already on the internet dwarfs the selection in the App Store. If quality is supposed to be a metric, I would also venture to say that the quality of games available (in terms of immersion and playability along with optimization) from Flash developers is not an issue. Apple has most definitely wet their appetite, and are probably loving the huge gaming market that they have tapped into. Along with mobile-apps, only time will tell.
/rant
I'd love to program a game or app in a single format, and be able to deploy to anything. And that's sort of the point of this whole HTML5 / web standards argument. The problem is, anyone who has been programming to "web standards" for the last decade (or more) knows how laughable it is. Yes, Firefox, Chrome, Safari, Opera and IE9 will all (supposedly) support HTML5. The cynic (or perhaps the realist) in me has to wonder if this is the same type of web-standard compliance that bestows upon us little gems like margin, padding and float issues? Of course it's possible to create a website that looks identical in all browsers, down to the pixel. It may even be possible to do it without any hacks or browser-specific code. It's just a very tedious and at times frustrating process.
It seemed like Flash was attempting to take over HTML, or JavaScript, or desktop programming, or anything. It was made originally as an animation solution, but due to the community has evolved to being a creative tool, to fill in gaps for all sorts of different functions. Flash has also been one of the few development tools where I can truly write once and publish for multiple platforms and mediums. It's got an incredibly talented and passionate development community... and while nothing is really too big to fail, it just seems that Flash has come all this way, it's a bit naive to think they would ever die without putting up a huge fight.
I will make a few updates to this post over the weekend, sprinkling in some extra quotes, links and references.