Standards For Standards Sake

This post gets nerdy enough that you might want to steer clear. I also don’t go too out of my way to explain the jargon of the subject, so be forewarned.

A few days ago, it was announced that the W3C was discontinuing work on XHTML2, which was planned to be the next big thing for the web; it was going to bring real semantics to the web while improving the extensibility and accessibility of the content on the web. I say ‘the content on the web’ rather than ‘HTML’ because XHTML2 was not going to be HTML. It was not backwards compatible with HTML. In other words, it was doomed to fail.

People saw the faults of the XHTML2 standard years ago and began working on incremental changes to HTML that would improve the semantics — perhaps not as much as XHTML2 could theoretically improve them — of the HTML content and introduce numerous new APIs that enhance what can be done in the browser while retaining backwards compatibility1. These improvements, along with adjustments to the HTML4 spec to align it to reality, are now known as HTML5.

Perhaps XHTML2 would have been better overall, perhaps not. That is a moot point now. HTML5 is happening, and XHTML2 isn’t.

But Shane McCarron, one of the people who worked on XHTML2 and the associated standards, decided to attack everyone he could in a post filled with a bunch of useless arguments.

The primary design principle for [HTML5] is “codify everything in use on the net, everywhere, no matter how broken, as long as Hixie has seen it at least once and thinks it is useful”.

These sorts of meaningless assertions, with an ad hominem thrown in for good measure, contribute nothing to the discussion. I’ve found Ian Hickson’s attitude on the HTML5 mailing list to be very brusque at times, but that has nothing to do with what the standard is about. Not only that, but the HTML5 spec does much more than codify existing behaviour; certainly it does that, but that is because the earlier specs were underspecified resulting in every browser doing things slightly differently.

But beyond this codification, the spec introduces a background process system for JavaScript execution, canvas elements for advanced graphical rendering, the video and audio elements to allow audio and video to be played in the browser without a plugin, with greater control and more openness, and that’s only a subset of the enhancements HTML5 brings. I don’t see how those things, which were specified before any browser implemented any of it, are mere codification of de facto behaviour.

There are between 5 and 15 actual user agent implementors in the world. There are millions of web content authors. How is it that the 15 (I’m feeling magnaminous) are more important than the millions?

This isn’t even the argument from popularity, it’s the argument from potential popularity. I’m a web content author. I wouldn’t want to write the content using the complexities defined in the XHTML2 spec. I was even one of those people that was fooled by the XHTML1 marketing that XML was somehow inherently better than SGML, and I still blanched at the sight of some of the things coming out of the XHTML2 working group.

In fact, of the millions of web content authors, I’m pretty sure that at most 15 (I’m feeling magnanimous) would be willing to work within the XHTML2 environment.

The people writing most websites are, unsurprisingly, writers. And whether they’re technologically savvy or not, the cognitive load that XHTML2, and all its associated extensions, would place on them is an unnecessary burden.

I know that some of the features of XHTML2 are useful for the machine-readability of websites, but you have to measure that against the extra effort required by content producers, text editors, and everything else involved in creating web content, to generate XHTML2 rather than HTML5. Machines will process things faster a month from now, and can use smarter algorithms to detect and discern human generated content. Humans don’t have that luxury.

But Shane doesn’t seem to understand that:

It was [Tim Berners-Lee] who decided to irreparably damage the brand(s) of the W3C by ceding control of the web to the WHATWG. What [was he] thinking? I assume [he was] under pressure from the browser vendors. I assume those 4 out of your ~400 members were saying “hey, we don’t want to implement XML-based semantic web. It’s haaaaaard (insert whine here)”.

I’m not a browser developer, but if I were I wouldn’t mind switching to a purely XML based system like XHTML2. It’s certainly easier to parse than the mess that is (the underspecified) HTML. Except that if I did that, I would no longer be a browser developer. I’d be someone that writes code, designed to behave as a browser, that is used by no-one.

Vendors possibly preferred to extend HTML4 rather than start over with XHTML2 but the difficulty of it would have been only one facet of the issue.

And developers like writing code. A well-defined spec, a text-editor, and a compiler makes many a developer salivate. And computers will always get faster. Those aren’t the blocking points, in my opinion. The thing that killed XHTML2 was the millions of voices crying out for improvements to the web who were at best amused and most often bemused by the complexities of XHTML2.

There are lots of other cheap shots taken throughout that post, but I’ve already shown you the gravest offenses; pointing out each individual baseless attack, accusation, and logical fallacy would only waste my time.

The facts are these. XHTML2 has been in development since before HTML5 was brought up as an idea. HTML5 is now in use in browsers everywhere with more and more of the spec being implemented with every new browser release. XHTML2 probably has a few experimental features that you can play with in Firefox. XHTML2 lost. You can blame that on the vendors for not implementing your ideas, but the fact is your ideas were shit. If they were good, if they were what users wanted, browser vendors would put more effort into implementing them.

HTML5 is not “shackling the web content developers into the tag-soup architecture of the 90′s.” Tag Soup was never about the language, it was about the philosophy. Did C++ shackle C developers into “goto architecture?” HTML5 was about giving web content developers what they actually want, not a bunch of buzzwords and disingenuous attacks. It’s not as if HTML5 is ready for prime-time. IE still doesn’t support most of HTML5, but people are out there experimenting with HTML5 because it’s cool.

XHTML2 is standards for standards sake. Nobody’s using it. Nobody ever will. So let’s all get over it2.


  1. It does introduce new elements which will not function correctly with an HTML4 browser, but nothing old would be broken. []
  2. I admit that this is a bit of a departure for me. I’ve been one of the silent (but full-throated) proponents of JavaScript2/ECMAScript 4 over ECMAScript 3.1/ECMAScript 5. But there are distinct differences here. First, ES4 was backwards compatible. Second, ES4 brought demonstrable advances to the JavaScript environment, whereas XHTML2 seems to mostly work towards normalizing the substructure of HTML without offering any inherent advances, only allowable advances. That said, the irony of me being such a staunch attacker of XHTML2 while such a staunch defender of ES4 is not lost on me. And it goes without saying that, at this point, I’ve gotten over the ES4/ES5 schism and am happy to be working towards advancing to ES-Harmony. []

[snip]

I’ve spent a fair bit of time on various mailing lists recently, mostly dealing with the development of new software and programming languages, and I’ve come across the most annoying thing ever.

[snip]

> Quoted section of previous e-mail

Quick comment on single aspect of previous e-mail which I've quoted above.

[snip]

We all get that you’re quoting him and that, because you’re quoting a small section of a larger e-mail, we may need to read more of the previous email to understand your comment in context, but that’s why any self-respecting email client supports threading of related e-mails, especially when under the purview of mailing lists.

If we really want to, all we have to do is scroll up a bit and we’ll get the previous posts in the thread. Also, if we’re reading a posting on a mailing list, I think it’s safe to assume that we’ve been reading along and are aware of the context of the discussion.

So please stop snipping. When there are more snips than there are useful contributions to the discussion, you have a problem.

Innovation is not a four-letter word

During a meeting at my job we were discussing the core characteristics we wanted both our company’s public image and its products to exude. Almost everyone in the room decided that we wanted to be innovative. We wanted innovation to be something that mattered and was a core part of the future direction of the company. When I say almost everyone, I mean one person didn’t agree. And that one person had a serious bias against the word “innovation.” In her mind, she felt that innovation was a bad idea. She felt that to be innovative meant to ignore your users. There is some validity to this statement but in so many other ways that’s just dead wrong.

Innovation is so many different things depending on context that it’s an easy word to be scared of if the context is misunderstood. In its absolute simplest description it is merely doing something which has not been done previously. This could be driven by your users but, barring the occasional genius, users aren’t well known for innovation; for one thing, if they truly had something new and innovative they would also be smart enough to develop it themself rather than just give it away. This however does not mean that innovation doesn’t work to the benefit of the user. In that meeting, one of my colleagues stated this idea very succinctly that there is, and must be, a divide between understanding your users and following them.

An excellent example of this would be what is most likely plugged into your computer right now: an iPod. When the iPod first came out, not only was the tech industry generally unimpressed but so too were the Apple users. They didn’t simply want an mp3 player. They wanted something grander, something like they had been discussing and (most likely) requesting from Apple, whatever that was. And today the iPod has changed the face of not only that industry but our culture itself. It was an unwanted innovation which, once used, showed the wisdom of the developers behind it. It wasn’t what the users requested that was made, but what they wanted (whether they realized it at the time or not). They understood their users.

Is striving for innovation dangerous? Hell yes, but so is running a company. You can try to create something no one’s thought of before and end up with a whole new paradigm or you could create a waste of time that no one will ever use. To me, there are only two types of software companies: those who innovate, and those who mimic the innovators. Anyone who wants to be a part of the latter group shouldn’t be a programmer.

Code Refactoring

The project I’m working on right now is just beginning but it’s also a reworking of an older system. So we began by looking at the old code and refactoring what we need out of it and into the new more organized code base. Unfortunately, that means we have to look at the code base. I’m in the process of moving over the UI search result parsing and display code. Unfortunately, the core principle of MVC that the view be as stupid as possible was essentially ignored. It’s not like the page is making database queries on its own but the process by which it obtains the search results is so circuitous and byzantine, I can’t see where the UI ends and the back-end code begins. It’s more complex than the plot line to The Da Vinci Code. Which isn’t to say that the Da Vinci Code was a complex story, but that it was visually complex. As Shakespeare once said of life: it is a tale told by an idiot, full of sound and fury, signifying nothing.

Work Rant

I probably shouldn’t post about my work here but since I’m only going to be here until the end of the summer and I won’t state explicitly where it is I work, I figure I’m relatively safe. My department is devising a search engine with user-editable fields for the businesses found in the search. Combining wiki and search engine but in a really lame way that’s not really a wiki so much as it’s editable fields.

We’re early going in the process right now but I have a huge problem with the way the system interacts with the user database. Essentially, we have a database of users and then we have a site which needs to access that database to add new users, change passwords, log in users, and all those fun things. What’s the problem? My boss wants the whole fucking site to interact with the database through a web service API!

We already have a User class with all the goodies required to do all the stuff we need and we could access that in a very smart way, but then instead of having one middleman to work through we have two! We talk to the web service – through completely open HTTP request! – which talks to the API which talks to the database. Not only is adding in the web service unnecessary but it opens huge holes in the system.

I understand that he wants this to be open to having various other systems all connecting to this but have a simple web service API to access the User class but use the real User class in the actual business logic the main site uses. Otherwise the web service has to have way too many capabilities for something that anybody in the world can access and operate.

Apple Fans…

Please Shut the Fuck Up!

We know you like Mac, and you all want to suck Steve Jobs off, but enough is enough. You continually compare Apple and Microsoft and discuss how Microsoft is dying, yet you fail to realise that they are different companies with different core audiences. Let me repeat that: Apple and Microsoft are going after different people. While there may be overlap in some instances, Apple is a system designed for ultimate homogeneity from the hardware available right up to the GUI; everything fits together because they dictate that it must fit together. Microsoft is a software company; they definately have dipped into the hardware kitty from time to time and will probably try again but first and foremost they are a software company and they let hardware manufacturers worry about their shit.

Mac users haven’t had any issues whatsoever (that I can hear over the fanboy alarums) with constantly changing dependencies and program requirements; as far as I can tell, there isn’t even the concept of backwards compatability in the offices of Apple. While that doesn’t affect many people when the company releasing the OS updates all its programs and the fanboys obsessively update their software, Microsoft can’t rely on those sorts of software updates from its many software developers (developers, developers…). They make an OS with some basic apps and release a few other pieces of software that keep their business running, and they have done it and continue to do it well enough to create and maintain a market share virtual monopoly; however, they do not have complete control over the software in their OS and they don’t want to break many legacy DOS and Win95 apps that many of their business and governments customers may still require. Those customers are not zealots for the hardware and software they use, they use it to increase work flow and they do not want to have to rewrite an internal helper app every time the OS is updated. That is the key to Windows’ obsessive compulsion with backwards compatibility and support of legacy software (if only marginally). Mac doesn’t require this because they are not (in general) targeting the business sector. There are some offices that are Mac based – albeit considerably fewer than the Mac fanboys would choose to believe – but they have different needs than that of typical business.

(I’m now going to break the cardinal rule of denying something before I am accused thereby implicating the negation to be a falsehood but I can tell already what the response to this will be.) Now I’m not a Windows fanboy, in fact I’ve made repeated efforts to wean myself off of Windows and onto Linux, but this on-line Mac hysteria is absurd and I see no way of it stopping until Mac fanboys just accept that both Apple and Microsoft create and steal OS innovations and (gasp!) implement them differently. They both have a focus on making these new features usable for the end user, they just have different ideas about how the end user will use the product because they (sing it again with me) have different target audiences! So please Mac fanboys, grow up and stop being so defensive of your (and offensive to anyone else’s) systems.

PS: I apologize for the number of parenthetical asides in this post. Unless you came here to flame me for my neutral and pragmatic view of the world of OS zealotry.