You might have read a little essay by a certain Steve Jobs (whom I presume was cozied in a black leather chair with his iPad) which pertained to the death of Flash on Apple’s mobile devices. It was strict, thoughtful, and carefully worded in such a way as to close all holes against Apple’s decision. In my eyes, the message wasn’t written to be a damning statement against Adobe, a company that develops incredible products such as Photoshop, Illustrator, and Lightroom. Rather, this was written as a final message to the public that thoroughly explains Apple’s position on Flash. It’s a statement that should have allowed everyone to move on.
Yet when approached, Adobe’s own Shantanu Narayen stepped forward once again to combat Apple’s tyrant ruler, naming Jobs’ statement as a “smokescreen” to multi-platform innovation. Like Jobs, Narayen is incredibly passionate about his product and the betterment of the world community. While Jobs and Narayen are polar opposites, whom is right in this matter?
I beta tested Adobe’s most recent product CS5 product, Flash Catalyst. Like with any Adobe product, it takes considerable time to learn and skill to use, and is ultimately a powerful piece of software. The fact that I can take something as simple as Photoshop layers, and create dynamic content from nearly images alone, is a technical feat this is no less than outstanding. The beauty in technologies like Flash is that graphic artists can deliver interactive content without having to do any serious coding.
But to create such interactive content with Flash Catalyst, a Flex product, or Flash Professional, you have to invest a lot of money, then time learning the IDEs. You can do some Amazing things with Adobe products, but for being (and I quote Narayen) an open specification, why do the IDEs cost so much? An individual has to spend hundreds of dollars (for businesses thousands) just to start developing. That doesn’t include the overhead needed to learn how to use these complicated IDEs, through Adobe themselves or another party such as Lynda.
All of these IDEs have something in common that annoys me at the code level. Flash Catalyst and Flash Professional for example aren’t perfect at creating and constructing animated, interactive content visually. In effect, it is almost like writing articles in WYSIWYG - you’ll get something that’s formatted in HTML decently, but somewhere there’s going to be some miscode. Perhaps an extra paragraph tag here or align attribute there. No matter how good it looks on paper, Flash doesn’t live up the hype. It’s a mess.
The second problem is that once you’ve created content in Flash, it can only be displayed to the user using Adobe’s Flash Player runtime. If Flash is so open Mr. Narayen, why is it so proprietary? I feel while he intends to define open as cross platform, it doesn’t necessarily equate to actually being realistically open. While I can download the Flash Player on Windows, Mac, or Linux operating systems, I still have to use Adobe’s software to play it.
In fact, being cross platform is a problem itself. The idea is something I imagine every developer envisions, “I just have to learn this one thing (albeit difficult), and I’ll be able to provide interactive content to Windows, Linux, Mac, and Android users worldwide. It’s magical.” Using Steve’s famous words, that really is the unicorn vision, don’t you think? While we already have technologies that make delivering such content possible, there isn’t a single technology that can match Flash in this aspect. For example, HTML alone can’t deliver an amazing user experience. It’s used in conjunction with CSS, jQuery, and perhaps a little PHP.
Still, Adobe will never be able to deliver familiarness across platforms, as each operating system has its own quirks and approach to user interfaces. How I interact with Windows applications is fundamentally different from how I interact with Mac applications. By developing something that’s cross platform, someone developing on Windows will be unable to create a user interface suiting for Mac users. And vice-versa - it’s very difficult to create something that just works (that’s the same) across many platforms because of UI inconsistencies.
An example of a cross platform fail (while admittedly not Flash) would be Adobe Air. I have yet to see more than a few good applications that work decently across Windows and Mac. Taking a gander at Adobe’s own Kuler for example, you can clearly see that it has Windows in mind. While it works on a Mac, its user interface feels weirdly out of place.
Back to Flash, there may be a fatal flaw in my cross platform argument. We’re not talking Air or desktop implementations, but rather web content - where interface familiarity doesn’t apply like your typical desktop application. Because everyone’s experience is (fundamentally) the same on the web, Flash can do some amazing things. Rollovers in navigation, sIFR, web ads, and Flash video are quite common in our connected world. People are familiar with those interactions on websites, so what’s the deal here?
While something as simple as a Flash video is universal (even if it requires Adobe’s Flash Player), the anti-argument does a complete 180 turn before falling back in the hands of cross platform development in two key areas. The first is that not all is equal. While Adobe is making an effort to improve Flash playback, it’s clear that Macs suffer more than Windows. While Micronerds will clearly be jumping for joy (Mac sucks!) in this regard, Apple cultists cry foul. Narayen claims that it’s Apple’s Operating System that’s the problem. However, given an empty canvas (an operating system), that isn’t closed, how are you unable to create a workaround or specific technology that takes advantage of Apple’s platform? To me, this statement speaks nothing more than pure ignorance. In fact, Adobe’s had problems with Unix and Linux operating systems all around the board. Narayen’s statement doesn’t even acknowledge the fact that their Flash Player isn’t usable on a lot of Linux distros (which are completely open source). For being so open, an user’s operating system has to meet specific requirements to enjoy Flash content - and there’s nothing innovative about that.
The second is that the meat of this animation comes in the form of a Flash file. Ever heard of an SWF or FLV file? There’s no web standard for either of these files. And while Adobe is making efforts to play audio and video in more common file formats, you still need to use the Flash Player. This isn’t a universal format - it’s an Adobe format. (It’s true that the SWF file is semi-open.)
I should not be required to install proprietary software on my computer to play video, see a web rollover, or interact with web content. In fact, it should not be my responsibility as a computer owner, to have to worry about installing a Flash Player, keeping it up it to date, and worrying about security holes. To protect my web experience, Google is even expanding Chrome’s sandbox feature to include web pages with Flash content. And depending on what computer I use, I might not even be able to see Flash content because I can’t install Adobe’s Flash Player. All of these things are red flags, and the only reason we even need to use something like a Flash Player is because of the industry’s unfortunate attachment to what is now an acquired Macromedia product.
Narayen said it’s Apple who makes it cumbersome for developer’s to make products that work across all devices. This statement directly comes from a company who forces users to use proprietary software to develop Flash, proprietary software to use Flash, and implements non web standard proprietary media to play Flash. Learning the iPhone SDK doesn’t look so bad in comparison.
But to be frank, it all boils down to Adobe being pissed off because people won’t buy or utilize Flash products if they own an iPad, iPhone, or iPod touch. After all, what’s the point if you’re developing for devices that won’t support Flash? While Flash works on a Mac, Jobs’ recent statement has me thinking the Mac will drop Flash support soon. Even if that’s not the case, I’m still not going to pay my entire tax return to develop Flash when it only works on computers, and not on a majority of mobile phones.
For something so open, as a student I have to pay around $400 just to gain access to the daddy of all Flash programs as part of a web suite. Then I have to spend a week learning how to use it - plus I have to have a background in graphic design if I want things to look good. The initial prerequisites suggest that you have to be a serious developer (most likely in a business environment) who has to go out of his way to learn some fancy technology just so he can make a sub-par program that work’s okay (but not perfect) across millions of mobile devices. Yet, my customers might not be able to enjoy the Flash content I develop because they can’t use or install the Flash player! The idea is a great (one platform to rule them all) but it’s implemented so poorly it’s a joke. This is the Adobe way. It’s lined with money.
Adobe’s position is a failing one. Because even if we take Flash out of the equation, Adobe cannot argue against the fact that Apple is promoting relatively open technologies that can be used across any platform… for free. Apple provides developers with free tools, a free iPhone SDK, and promotes the well being of every Internet user by promoting technologies like HTML5 and CSS3 that provide the same caliber of interactivity as Flash in only a web browser. No Flash plugins. No Flash Player. Just you and the content.
Thank you Apple.