I have been involved with W3C’s Web Application Format (WAF) Working Group(WG). WAF has been working on “widget” for about one year. Marcos Caceres, a smart recent PhD graduate from Australia, has been doing some good work here.
A year ago, I was neutral about WAF’s widget effort, even supportive primarily due to technical merits of some of the work Marcos did. I do have my own share of guilt though. Like most WAF working group members, I didn’t pay enough attention to it. However, during the last many months, the market has evolved and my understanding of widget has evolved as well. As I started to pay more attention to “mashup” and “widget”,WAF seems to be going the wrong way to me. My opinion could be wrong, but it is a good idea to write it up to stimulate some conversation.
1. WAF does its work around its own definition of “widget”. It defines “widget” as “install-once” mini apps. Here are the two definitions that WAF has created:
- WAF defintion #1: Widget is “an end-user’s conceptualization of an interactive single purpose application for displaying and/or updating local data or data on the Web, packaged in a way to allow a single download and installation on a user’s machine or mobile device.”
- WAF defintion #2: Widget “is a zip file with an optional metadata file and one file that MAY serve as an user interface and/or provide some runtime logic”.
It is true that W3C can define things and the world would follow – at least some W3C working group members think so. However, the market has evolved to a stage that there are well accepted terminology and definitions in this area. Unfortunately they are different from what WAF wants them to be.
1.1>According to Wikipedia (source: http://en.wikipedia.org/wiki/Widget), there are four different kinds of widgets::
- Web Widget
- Desktop Widget (under widget engine)
- Mobile Widget
- GUI widget
1.2>let’s see what the definition of “widget” is then. According to Wikipedia (http://en.wikipedia.org/wiki/Web_widget), A widget is “embeddable chunks of code”. Contrary to the WAF definition, widget is orthogonal to “zip file” or “download/installation”. Wikipedia seems to be much in line with the rest of the world (for example, The Year of the Widget, http://www.msnbc.msn.com/id/16329739/site/newsweek/, etc). More precisely, Wikipedia says:
“A widget is anything that can be embedded within a page of HTML, i.e. a web page. A widget adds some content to that page that is not static. Generally widgets are third party originated, though they can be home made. Widgets are also known as modules, snippets, and plug-ins. Widgets can be written in HTML, but also in JavaScript, flash and other scripting languages that will be run when the page is called.”
2. If WAF wants the world to accept its definition of widget, WAF would have to make changes at Wikipedia first -however, the very fact that WAF differs from the general understanding shows how WAF is probably looking at things from the wrong angle.
3. “Widget” is impacting billions of people’s life today. “Mashup”, in particular, “Enterprise Mashup”, is changing the way we think about software. Through my job at Nexaweb (Nexaweb provides software runtime and tools for customers to build and deploy Enterprise mashup applications that connects and consumes disparate content, data and resources from a variety of sources) , I witnessed significant number of mission critical applications in both commercial sector and public sectors being built using “widget” and mashup concepts . No, these applications are not your typical social networking ones. They are serious business applications. Some people at W3C dismiss “widget” and “mashup” as PR crap. I wouldn’t argue why they are not PR crap here, but rather to point out a few substantial challenges that our industry is struggling with:
- 3.1 Security: security is big problem in the context of mashups. The typical usage of widgets today, like the typical ways of embedding GoogleMap, is fairly bad from a security of view. What is the proper model, standard and best practice here?
- 3.2 Interoperability: in the context of enterprise mashups, if different widgets are being pulled together, how to avoid things like name collision? How to enable different widgets to “co-exist” with each other in a secure fashion?
- 3.3 Interaction: how do different widgets interact with each other when they are being pulled together, where page creators don’t know the widget authors?
- 3.4 Metadata: how do widgets communicate its capability to other widgets, page authors and mashup tools? How can events, properties, messages and other attributes associated with widgets can be communicated using some open format?
- 3.5 Accessibility: How should widgets be accessible? What does accessibility mean in a “mashup” context?
- 3.6 Mobile Ajax Widget - (this is very nascent, but iPhone etc are enabling web widgets to run zero-install on mobile devices. So it is worthy of paying attentions to.)
The above challenges require the industry to collaborate in an open fashion. So if W3C is going to do something with “widget”, isn’t it right for us to address these more pressing issues first?
4. So according to Wikipedia, WAF’s widget work is not about “widget”. It is really about “desktop widget”. Why did we choose to focus only on desktop widget? The last time I checked, WAF still stands for “web application format” instead of “desktop application format”.
5. On the other side, if someone is really interested in working on “desktop widget”, that is fine, but why not calling it as what it is?
6. Even for “desktop widget”, how much support is WAF getting from the significant players in the widget space (except for Opera whose spec is the basis for the WAF effort )? Lack of sufficient support from significant number of vendors can be telling (just to be clear, I do not oppose desktop widgets, especially if Google/Yahoo/IBM etc are involved. I see the importance of desktop widget, but I think the general widgets are having much bigger impact than desktop widgets and thus deserves higher priority).
7. Finally, it brings up the question of why WAF is working on “desktop widget”. WAF is not “Desktop Application Format” and the charter of WAF didn’t mention “widget”. More importantly, which kind of process, market research, statistics, facts etc that WAF group went through to justify committing a working group onto such a topic? I have to admit my own guilt of not asking these questions earlier. I myself am relatively new to W3C and I found myself wondering how W3C works sometimes.
Let me be clear that I think Marcos does great work and solute to him for his contributions so far. However, I think the market is evolving fairly rapidly and standardization effort can not be done in an ivory tower. Even for desktop widgets, APIs are still rapidly changing and technologies (JavaScript to Java to .NET to Silverlight) are still undergoing major innovations (didn’t we just hear about JavaFX a few months ago?). Further, there are more fundamental questions to be asked and answered (e.g., what is a widget? What justification did WAF WG have to work on desktop widget? What was the process?). WAF WG claims to be working on “widget” but in reality, it is only “desktop widget” (or maybe a little bit mobile widget too) -then WAF WG wants to redefine “widget” to fit its work?
Then from a technical point of view, why not taking a wholistic approach? why not addressing the key challenges with “widget” (security, interoperability, interaction, communications, etc) instead of focusing on a specific branch while ignoring the rest of this big tree?
Finally, is WAF WG the right organization to work on such issues?
Again, my opinion can be totally wrong, and I stand ready to be persuaded. Your feedback is welcome.