It’s easy to get confused what one means by “open” these days. Ted Leung has stirred an excellent conversation ( follow ups ) about the openness (or lack thereof) of Adobe’s Flex and Apollo technologies. Ted argues for an open environment with at least three characteristics:
Brendan at Mozilla discusses another aspect of openness. He calls it open standards, and that’s certainly part of it, but the technologies he describes aren’t just open, they’re transparent. One can easily inspect them without any special tools and from the outside. Opaque software (or as Yegge put it, hardware ), like Flash or Java bytecode, may still have intrinsic introspection, but to everything on the outside it’s a closed system. Brendan looks for REST-friendly technologies that are “hyper-linkable or indexable by search-engines.” This sort of openness (or transparency) is different from the openness for which Ted contends.
I completely agree with Ted’s concerns about the openness of Adobe’s RIA platform. I’m worried that we’ll have to go through the whole Java song and dance once again. In fact, I can’t express it much better than Ted already has, so I won’t try.
At the same time, I don’t share Brendon’s concern about Flex’s transparency. If Adobe provided an open environment for Flex and Apollo, that would be good enough for me. Why? Because rich internet applications are different beasts from websites. Period.
Let me elaborate. As far as I’m concerned, GMail is no more transparent than a Flash client. Where’s the hyper-linkability or the search-engine friendliness? Any openness is due to features of the application, not the underlying technology (have you looked at that Javascript?!) Better yet, where’s the linkability in say, Adobe Photoshop? Or Emacs or Eclipse or Skype? These are all applications, one of them just happens to be delivered over the web and uses the browser as its platform instead of some virtual machine or operating system. And let me go on record as saying the browser is a horrible operating system. Mozilla is great and getting better but when you target the web as your platform, then you have to work with IE and a host other browsers and the incompatibilities between them. The web just can’t easily support some applications to the same degree that an operating system or virtual machine can.
Ryan Stewart brings this up in Stop Thinking of Flex As a Browser Technology. Seriously. Stop It. I couldn’t agree more. The web was designed for hyperlinked documents. The core specifications are about resources and data, not applications (despite supporting code-on-demand). Just because we can turn a series of HTML documents into an application doesn’t mean we always should. Or that all applications can be turned into a series of forms and documents.
What web applications can do, however, is provide a web friendly view in addition to a rich client. Applications can provide open RESTful APIs that serve data in transparent formats like Atom or RDF. I would much rather work with a web application that actually behaved like an application but then also provided internet-friendly interfaces on the server. That’s a transparent and open approach.
I truly believe that, as Brendon suggests, the web can evolve to deliver rich applications using open, transparent technologies. I believe that Mozilla will be key to that realization. In the mean time, if you need a solution today, then you’re going to consider Flex. Since it isn’t a transparent technology, it’s all the more critical that it be an open one.
Commentary