Apple v Adobe. Who's right?
There has been a lot of talk lately due the release of the iPad without support for Adobe Flash. Steve Jobs went a step further to call Adobe lazy (http://www.wired.com/epicenter/2010/01/googles-dont-be-evil-mantra-is-bullshit-adobe-is-lazy-apples-steve-jobs/comment-page-4/).
Here's the actual quote:
"They [Adobe] are lazy, Jobs says. They have all this potential to do interesting things but they just refuse to do it. They don’t do anything with the approaches that Apple is taking, like Carbon. Apple does not support Flash because it is so buggy, he says. Whenever a Mac crashes more often than not it’s because of Flash. No one will be using Flash, he says. The world is moving to HTML5."
Now for full disclosure, I'm more of an Adobe based developer who uses Adobe's Flex, Flash and ColdFusion. I have written some Objective C, and I'm actually currently working with Scala. I'm not an Adobe or an Apple fan boy. The great thing about the Internet is we can do some simple research and cut through the company spins and see who's right.
Here's basically the breakdown of the argument so far..
Apple: Flash isn’t good enough.
Adobe: We need Apple’s help.
Apple: Adobe is lazy.
So what does Adobe say they need help in? One of my sources says that they are asking for access to the API structure for the hardware video accelerators that Apple uses (basically the ability to use the GPU for graphics processing). As a developer I did a quick search for those APIs and what Adobe is talking about. Here's what I found..
Mac uses OpenGL
http://developer.apple.com/mac/library/navigation/index.html#section=Frameworks&topic=OpenGL
iPhone and iPad use OpenGL_ES
OpenGL_ES - http://en.wikipedia.org/wiki/OpenGL_ES
Apple does have SDKs for the kernel
http://developer.apple.com/sdk/
Apple also provides Carbon as the API language for the MaxOS systems
http://en.wikipedia.org/wiki/Carbon_(API)
The Kernel itself is XNU and it's under the Apple Public Source License. An I/O Kit is available as well.
http://en.wikipedia.org/wiki/XNU
Apple actually provides a lot of resources for developers, but there is a catch. They are directing development into their Objective-C language. This is a very real problem for Adobe.
Can Adobe just port what they have into Objective-C or use Carbon. Unfortunately no, the Flash Player is written in C++ and going from C++ to Objective-C is not very practical. Objective-C is just another superset of C. It simply adds some OOP logic and a messaging and some of the syntax is similar to Smalltalk. You can compile any C program into Objective-C but that's not currently possible to do with a C++ program. So Adobe would be left to develop two separate 'cores' for the Flash Player, one for Apple platforms and another for everyone else. It is interesting that Adobe mentions access to the GPU when that was a recent feature to the way the Flash Player has worked anyway - it use to run everything including graphics directly off the CPU which was a performance issue.
Another concern is how any of this was a surprise for Adobe. Jobs has been promoting Objective-C since he first left Apple and started up NeXT in the 80s. It's been fairly obvious that Apple is going to push their view on this and 'encourage' people developing software for their platforms to use Objective-C. Adobe has no weight in this decision and probably shouldn't waste its energy trying to fight it.
Apple is forcing developers to go into Objective-C and Carbon to develop for their platforms. I think this is a simple business decision because they feel Objective-C is more flexible than C++. It, however, doesn't make life easy for Adobe. Keep in mind, this will affect other popular Adobe products used on the Mac platform like for example Photoshop.
I can understand why Adobe wouldn't want to use Objective-C and end up supporting two 'cores' of the Flash Player. Adobe wants Apple to help. Apple is basically saying 'no, build your own if you don't want to use the ones we provide'. From this research, I think Apple has a point. If this analysis is wrong, by all means correct me.
[Warning - stepping on my soapbox]
How did Adobe responded to this?
As normal, there wasn't an single organized response. Many in the community gave rather anemic responses like the iwantflash.com and isflashdead.com websites, but one of the responses from an Adobe employee did completely surprise even me. Adobe evangelist, Lee Brimelow, compiled a montage illustrating his inability to view various sites including a porn site?
http://www.wired.com/gadgetlab/2010/01/adobe-porn-flash/
http://theflashblog.com/?p=1703
Another case of very bad judgement from an Adobe evangelist. To be fair, Lee did apologize, but the point I wish to make is that this has been a fairly consistent problem for Adobe, and it's very hard to take Adobe's side when they can't seem to provide an intelligent response. The leadership of Adobe needs to address this and determine a better method to make their responses. Adobe's PR is like watching a monthly train wreck.
I truly hope the Open Screen Project (http://www.openscreenproject.org/) works out, but there are many challenges for Adobe these days. The Flash Player is far from perfect. Most of us know all too well the problems it has. FP 10.1 should help, but Jobs has a point in that Flash based apps aren't known for their performance. Is HTML 5 going to completely replace Flash? No, but it could take some significant market share. The same holds true for the popular Javascript libraries or the Unity3D engine (http://unity3d.com). To illustrate my point, I used Shockwave years ago, but I can't tell you the last time I opened up Director. Currently, I enjoy using Flex, but I understand that it is very possible I'll be using something else in 10 years. The fact is that technology changes rapidly. Several of the Adobe fan boys have complained that Apple isn't playing fair. My response is simple, they really don't have to. Apple is forcing people into their supported languages and APIs. They simply have the weight to do this. Adobe is the smaller player and has to deal with it. Jobs called the folks at Adobe lazy. My advice to Adobe is very simple - make an intelligent response and prove him wrong!
Andrew Morton wrote on 02/03/10 5:55 PM
"You can compile any C program into Objective-C but that's not currently possible to do with a C++ program."FYI, it is possible to use, compile and mix C and C++ into an Objective-C based code without using any particular system; Objective-C prefixes its own keyword with '@' so compiler know exactly what it has to do. When Apple invited developer to port complex games/application to the iPhone in two weeks, they were able to do it not because they were very fast at converting C++ to Objective-C, but because no conversion is actually require. Most of the games and their relative engines are written in C++/C and use OpenGLES, you need to use Objective-C only to deal with sensors reading or create native UI widgets (buttons, lists etc) otherwise is not required at all (like in games).
Not sure Adobe has been lazy, certainly they pretend to have access to APIs that are precluded to the rest of the world, owing to their very particular needs.