Brad Neuberg, of the Gears team, took a stab at defining the “Open Web”. We at SitePen are very strongly in favor of the Open Web concept, because it’s the Open Web that has gotten us what we have today and will ultimately lead us to the best “web of the future”. I think that Brad does a good job laying out the characteristics that have made the web successful thus far.
The one thing that I disagree with is this part of “Transparency”:
An Open Web should have transparency at all levels. This includes being able to view the source of web pages;
Though I understand how useful “View Source” has been over time, and I’ve certainly used it, I don’t think the ability to view source is a requirement. For example, people can get pretty aggressive with JavaScript optimization today in an effort to make things perform well. Take a look at the JavaScript source for Gmail. Not only has not-very-readable source had zero impact on Gmail’s adoption by end users, it has also not prevented people from reverse engineering Gmail to the point where there are many add-on tools available.
I agree with every other requirement, though. People should be free to create what they want, and the tools they use should be open for interoperability and competition.
Brad set a careful boundary around his definition:
Today the above philosophy is instantiated using a particular set of technologies, including URLs, HTTP, HTML, CSS, JavaScript, etc. However, if we define the Open Web in terms of these technologies, then we risk losing sight of what makes the web special and being able to have the intellectual nimbleness to evolve the infrastructure of the web.
Not only do we expect all of these technologies to evolve, but we also expect that entirely new ones will grow up to give us new capabilities.
Which brings me to Adobe Flash, its close relative Flex, and Microsoft Silverlight. These tools are trying to reshape the landscape of the web, but are they part of the “Open Web”?
Adobe Flash
Adobe Flash grew up by filling the void for sound, animation and, later, video on the web. Flash is the de facto standard for video delivery on the web. It’s hard to argue against that, given that even MSN Video delivers videos via a Flash player.
In the context of playing video, Flash does not really change the shape of the Open Web. It’s just a mechanism for displaying a particular content type within the browser, and it even provides hooks to control the playback via standard JavaScript.
Adobe Flex
The “is it the Open Web?” question comes up with Adobe Flex. One could always build entire sites in Flash, but doing so was almost entirely filled with downsides. As people have been working to build increasingly sophisticated applications in the browser, Flex has stepped up to provide a way to build complete applications using modern practices, and then deploy those applications within the Flash plugin that people already have in their browsers.
An interesting note about Flex with respect to Brad’s Open Web definition is that it can be seen as an evolution of the web, specifically with applications in mind. Flex uses CSS for styling and the ActionScript 3 language is a JavaScript-like language with extensions (some of which appear in the current ECMAScript 4 work). Rather than using HTML, Flex uses MXML as a format for instantiating Flex components, which can also be instantiated via ActionScript. Flex is certainly heavily influenced by the way the web works.
As of Flex 3, the Flex compiler is open source. Adobe has also opened up their Action Message Format (AMF) for speedy client/server communication. Flex is about as open as can be.
But, it still deploys to Flash. Adobe provides a specification for Flash’s SWF file format, but only if you agree not to make a “player” for SWF files. With that requirement, Flash as more than a video file format cannot be considered part of the Open Web.
There is an open source Flash player called Gnash. At present Gnash is listed as supporting “SWF v7+”. Adobe has evolved SWF considerably since then and Flex 2 and above require SWF v9. It will likely take a while for the Gnash developers to get up to v9, and by then Adobe will have likely moved onto v10 or 11. Because of Adobe’s licensing terms, the only tool for forward progress at the Gnash developers’ disposal is reverse engineering.
With Adobe providing free Flash players for Windows, Mac and Linux, the tempting question to ask is “why care if SWF is open?”
Why Open Is Important
Openness matters because the ability for an independent implementation to come along and shine is a key to continuing evolution. Consider the case of web browsers, which are based on standards that anyone can implement. Netscape had the #1 browser by far in the mid-90s and was eventually crushed by Internet Explorer both because of monopolistic practices and a better browsing experience. After Microsoft won that round, however, they disbanded the IE team. Since then, the state of the art has been pushed forward by Firefox, Safari/WebKit and Opera, among others. The work of those browser teams forced Microsoft to put an IE team together and start building a better browser.
As Joe Walker mentioned a couple months back, total monopolies can be bad and the only real escape route is having multiple implementations that the open market can choose from. Many open source projects and companies operate under a form of “Benevolent Dictator”. Think Linux and Apple. It’s only natural the market leaders appear. But, as long as there is open competition you can choose the leader because it’s a good choice and not because it’s the only choice.
Here’s something else to consider regarding the Flash Player: currently, you can’t have an application that is completely driven by Flash with HTML content displayed by your browser’s engine in the middle. That’s because the Flash plugin has control over the window’s drawing area. If SWF were open, I can imagine browser makers providing SWF rendering with the ability to have full HTML rendering capabilities available from within those SWFs. As it stands now, only Adobe could provide such functionality.
In the end, it’s all about the ability to ensure that the web will evolve in a way that serves the end users well.
Adobe does deserve credit for all of their moves to open up over the past couple of years. As of today, however, the most critical part is still closed off: the SWF file.
Microsoft Silverlight
Microsoft Silverlight is a much more recent attempt to extend the fabric of the web. Silverlight targets precisely the same areas that Flash and Flex do: media (1.0) and applications (2.0), and offers similar features.
Microsoft’s earlier monopolistic practices have earned them a fair bit of distrust. However, over the past few years Microsoft has faced stiff competition for developers, and they have made big changes over earlier practices to keep developers and attract more. Much of their .NET framework has been standardized with ECMA. It’s open enough that there is an open source implementation (Mono) available.
This is relevant for Silverlight, which is built on .NET technologies. Within weeks of Silverlight’s announcement, the Mono project had a working prototype called Moonlight. Microsoft then went further and announced collaboration with Novell to help the Mono project get Moonlight up to speed.
It’s worth stressing that a key difference between Silverlight and Flash with respect to the Open Web is that it is possible to create alternative implementation of the Silverlight “player”. The open source Moonlight project is proof of that.
Silverlight offers something interesting in addition to what Flash offers: because it uses .NET’s infrastructure, Silverlight apps can be developed in the developer’s language of choice. Microsoft offers open source Python and Ruby implementations, as well as a closed-source JavaScript implementation.
At this point, in April 2008, Silverlight’s problem doesn’t seem to be its openness. Silverlight’s problem is its installed base, or lack thereof. The only statistic I was able to find was a Microsoft claim of 1.5 million downloads per day. It’s hard to compare that with the study commissioned by Adobe listing Flash 9 penetration at better than 95%, but clearly the installed base Microsoft is looking for is not yet there, given that MSN Video is still Flash-based.
Dojo and Gears
The vast majority of web applications built today and being built today are not using Flex or Silverlight. They’re using the current form of the Open Web: HTML 4, CSS and JavaScript. Over the past two years, the Open Web has evolved significantly.
Dojo and other JavaScript toolkits have progressed impressively. You can now get attractive widgets and powerful layout management all running in the standard browsers that people are used to.
Firefox, Safari and Opera have pushed the browser state of the art forward with support for newer standards, better debugging tools and vastly improved JavaScript performance. To compete with all of that development, Microsoft has been working hard on Internet Explorer 8, though we’ll have to wait a bit more to see how competitive that new browser really is.
Adobe has helped to support the current Open Web by donating the Tamarin virtual machine code to Mozilla. This should help speed up JavaScript execution in Firefox 4 and smooth the path to the JavaScript 2 implementation.
And, finally, there’s Gears. Gears is a cross-platform, cross-browser, open source plugin sponsored by Google that extends the existing infrastructure rather than providing an entirely new application environment inside the browser. It provides application developers with a bunch of new tools today, and more are in development. Since Gears requires a plugin, many applications will have to wait for it to become as ubiquitous as Flash before they’ll add Gears’ features.
HTML, CSS and JavaScript have the biggest installed base of both browsers and developers. That is a significant advantage over any entirely new technology that is out to displace the currently dominant form of the Open Web.
Free Market at Work
There is no standards body that can truly dictate what the web of tomorrow looks like. Developers will choose their tools as they build their apps, and users will pick the apps that they like the best. For those of us who are web developers, we should strive to ensure that the web of tomorrow remains open so that we have freedom in how we build our apps.