Home > General, Programming > The End of Design By Committee

The End of Design By Committee

The W3C always had great intentions. The goal has always been to create great standards encompassing for all possible situations and respecting all special needs. In the early days, great standards still living today were created, like HTML and CSS. Of course, there were problems. It took years for standards to be supported correctly because of ambiguities. Facing those problems, they decided not to make standards official until they were fully supported by enough implementations. XHTML 2, CSS 3 never saw the light.

Standards like RDF never became what they were meant to be nearly 10 years after the reccommended proposition. SOAP and WSDL are huge buzzwords in the SOA world, but it never quite works as well as it should. Implementations are still incompatible and subsets of the spec need to be used for communication to be handled properly. Not to mention there are still no traces of XLink, XPointer or XForms anywhere in the ecosystem. All these specifications appeared in the early 2000s or late 1990s. Who were they made for?

The big problem with all of them is that they are so abstract that no one outside the committee who designed them can understand their purpose, let alone any idea of trying to support them. The specifications are too large. Too complicated. Building around XML probably wasn’t the best idea ever. It really is unlike anything else and painful to work with, unless you use even more XML technologies. It does not map well to common programming paradigms. It was only ever similar to HTML and SGML. Maybe those should have been taken as exceptions rather than the rule.

I consider the best specification build around XML is XPath, but only because it removes all the burden of managing XML and it’s not XML-based. CSS is great for formatting HTML, again, not XML-based. XSL-T is not too bad because it plays nice with HTML, but I find some other techniques like Zope’s TAL to be a lot more elegant. It extends XML without adding to the tag soup.

By ignoring all the details, APIs like SimpleXML allow you to read XML seamlessly, but writing it is a completely different task. XML works everywhere, but it’s always alien to the environment.

Recently, I have noticed that the Web started to regain it’s original nature. Standards are emerging rather than cultivated. The days where companies assigned employees to a consortium in order to write a specification are over. The W3C is still working on their specifications, trying to get them out the door, but nothing new started in a long while. During that period, we got to see great standards establishing themselves, not because they were supported by the industry, but because they were good.

Think about JSON and YAML. JSON is a subset of JavaScript that is well specified, easy to understand, easy to read for a machine and easy to write for a machine. YAML is a human readable format that is formal enough to be parsed by a machine. What do they have in common? They map to programming concepts. All scripting languages out there can load them in a single function call into their internal formats and rewrite them just as easily.

In the end, the problem can be distilled down to a single preference. You can either write a complex specification, encompassing for all possible cases, and spend months implementing it and making sure it’s compatible, then spend 5 minutes configuring it to perform all the magic. Or you can have a simple data exchange format, hook it to a scripting language and spend anywhere from 15 minutes to a few hours to do what you need. On the large scale, complex standards are worth it, but in most cases, they are a waste of time.

One of the great aspects of web development is that there are so many problems, there are thousands of people thinking about them. Over the years, a great ecosystem of tools and techniques was built. These days, all you need to do is piece together existing components. HTTP is a good environment to make requests and get responses. Data serialization is available. All you need to choose is decide how to use them. Recently, Identi.ca/Laconi.ca wrote a small specification for open microblogging. OEmbed allows to export the location of images and videos. When you look at those, the first thing that comes to your mind is: Why hasn’t anyone thought about it before?

It doesn’t have to be great. It doesn’t have to be so smart. We only need to agree on something, or do something and get others to follow. There is nothing religious about saying which field name you will use to contain the location or the size of an image. There is no need for namespaces and extendability. It does not even deserves debates or discussions. Just decision making. It’s a simple problem and it deserves a simple solution.

The specifications fit on a few sheets of paper. They can be read and understood by anyone who cares without investing significant efforts. Simple use cases can be illustrated. People get it.

There are so many ways in which different websites can’t talk to each other, which makes it painful to develop applications and forces people to re-implement the same things over and over again. In the new Web-SaaS-driven world, it’s a shame. Especially since the underlying protocol does not prevent anything. It’s just that one took the time to write down the problem and write down the simplest solution that could work.

Sure, you could go out and write something generic that solves everything (it would probably end up looking like RDF). In the end, unless you know what you’re searching for, there is no way you will find it. Abstract tokens don’t help anyone.

I’m currently writing my own spec (more information soon). What are your problems in integrating with other applications?

Note to self: This post contains too many acronyms and references. I should look these up and link in the future.

Categories: General, Programming Tags:
  1. Jean-Nicolas Boulay Desjardins
    August 25th, 2008 at 22:37 | #1

    I agree at 100% about what your saying we need small specs, that are easy, simple… And well documented. The W3C is going out there way with crazy specs that are to hard to learn or take to much time to understand. Lets try to find specs for small problems. This would be more useful. And I bet that it would be better for the Web in general.

    Great article Louis-Philippe.

  2. August 26th, 2008 at 13:32 | #2

    Louis-Philippe,

    I have mixed feelings about this. On one hand, yes, I do think that specs should try to be smaller and dome more incrementally. In fact, the XForms Working Group is working exactly in that direction for XForms 1.2: modularization, and making some of the individual pieces useful independently.

    Now saying that this kind of approach is a good idea is different from saying that the opposite approach is the direct cause of such or such technology failing.

    For example, one can make a very strong (in my opinion totally convincing) argument that the web has stagnated for about 6 years due to Microsoft’s complete domination of the browser market with a product which was no longer developed (IE 6). Check this chart on wikipedia to get a very clear idea of the horror of the situation:

    http://en.wikipedia.org/wiki/Image:Layout_engine_usage_share.svg

    It then took Mozilla years to come back with a product able to compete, slowly gain market share, and finally get to a point where things could get in motion again. The growth of Safari on the Mac started helping as well just recently.

    These years of stagnation coincided with the years W3C developed XHTML and XForms among other technologies. It is pretty simple: during these years, not a *single* new client-side web technology (as in: implemented in the browser) picked up. That’s because none *could* pick up, because there was no browser onto which to deploy those new technologies. Hence BTW the success of Ajax, which could leverage IE 6.

    (As for some other W3C technologies, I for one think that the XPath 2.0 / XSLT 2.0 / XQuery 1.0 are excellent. They are just not mainstream on the web, but they don’t need to. Does that mean they failed? I don’t think so.)

    Food for thoughts.

    -Erik

  3. August 26th, 2008 at 14:15 | #3

    Erik, I fully agree that Microsoft’s dominance did not help the W3C. However, I think the complexity of the standards remain a problem. Fully supporting them is an immense effort and very few are ready to jump in and increase competition. We need web browsers. We are completely dependant on them, but there is too little choice (and too much at the same time when you try to develop multi-browser web apps).

    Splitting up the standards won’t help. They did that with CSS 3 and none of the modules are past working draft over 5 years later.

    For everything that touches the end user/browser, there is no easy solution. Rendering is complicated, the specs have to be huge, compatibility will always be hard. However, for everything that is interoperability related, we have lightweight alternatives, and that was my main point.

  4. August 27th, 2008 at 14:47 | #4

    XForms no where on the ecosystem? I’m not sure which ecosystem you’re looking at… XRX: http://www.oreillynet.com/xml/blog/2008/05/xrx_a_simple_elegant_disruptiv_1.html

  5. August 28th, 2008 at 12:02 | #5

    Sebastian,

    Sorry for taking so long to reply, I wanted to be certain to take enough time to read the article. This is in fact the very first use of XForms I have seen. However, the article does mention it’s not a mature technology. Google also tells me XRX is a poor acronym as the results I get are unrelated (except for the article you pointed out). “XRX XForms” does provide more meaningful results.

    The technology looks promising, definitely something to consider in the future, but I remain sceptical.

    There are a few weak arguments in the article. The comparison with natural translation is very poor. The reason NLP is hard is because machines are currently unable to figure out the underlying meaning, and thus translate it. The problem with “translation” between technologies is mostly change management and human errors.

    I also have the feeling that XQuery is in fact an other procedural language, only that it’s tailored to manipulate XML very well, so XRX does not really remove the need for a procedural language, it just use a simpler one.

    My other main concern is the ability to integrate with other technologies. Coming from a PHP background, I’m used to querying multiple systems, mashing data and performing all sorts of operation. While XRX is very powerful and simple to use to create new applications using a single data store, I am a little worried on how it behaves with other system. It probably works just fine if those export clean XML than can be manipulated (SOAP?), but what about those with legacy interfaces you have no control over?

  6. May 4th, 2010 at 22:05 | #6

    bookmarked=)

  1. No trackbacks yet.