Please leave your sense of logic at the door, thanks!

Archive for July, 2011

HTML Editing APIs specification ready for implementer feedback

Wednesday, July 27th, 2011

(This is a cross-post from the mailing list, reformatted as HTML.)

Since February, I've been working on writing a detailed specification for browser editing, primarily the document.execCommand() and document.queryCommand*() methods. These were created by Microsoft in the 1990s and were subsequently adopted in some form by all other browsers, and today browsers have to implement them to be compatible with web content, but no detailed specification ever existed. Interoperability is practically nonexistent as a result, which has driven all major content editing frameworks away from using execCommand(). (For instance, I began typing this in WordPress' WYSIWYG editor, which uses TinyMCE – a major editor that avoids execCommand() entirely.) Hopefully we can start to fix that and make these APIs a part of the web platform that just works.

The current version of the specification is about fifty pages printed, and supersedes the Editing APIs section of HTML (which is more like two pages). In the style of modern web specs, it is phrased in terms of algorithms that attempt to cover all corner cases unambiguously and leave no behavior undefined, and it tries to match the behavior of existing browsers to the greatest extent possible. At this point, it's stable and complete enough that I believe it's ready for serious review by implementers, and I would like as much detailed feedback as possible.

There is a basically complete JavaScript implementation, which is used to produce expected results for a largely undocumented and entirely ad hoc test suite. I used the tests as an aid to writing the spec, and they probably aren't well suited to aid implementers in implementing it. I will probably get around to porting them to something like testharness.js at some point. I haven't tried testing my implementation on real-world sites, only on artificial input, so I don't know at this point how implementable it really is, but the JS implementation means that it at least has large parts that make sense.

Anyone reviewing the spec should be advised that I put extensive rationale in HTML comments. If you want to know why the spec says what it does, check the HTML source. I plan to change this to use <details> or such in the near future. There are lots of minor known issues still left, but none that I thought was important enough that it needs to delay review. Feedback can be sent to the whatwg list, CCing me, with [editing] in the subject. (I'm also fine receiving feedback on public-html or public-webapps, but I don't know if the chairs would be okay with that, since it's off-topic.) I should be available to respond to all feedback promptly at least through the end of August. After that, I can't make specific guarantees about my availability, but I do plan to continue maintaining the spec in the long term.

Posted in WHATWG | 3 Comments »

WHATWG Weekly: End of HTML5 Last Call

Monday, July 25th, 2011

Next week Wednesday, August 3, the W3C HTML5 Last Call review period ends. Consider taking another look and giving some feedback!

Here is a quick rundown of what happened last week:

Since the summer causes a slowdown of everything standards, the next WHATWG Weekly is in two weeks.

Posted in WHATWG | Comments Off on WHATWG Weekly: End of HTML5 Last Call

WHATWG Weekly: RTC API and a download attribute

Monday, July 18th, 2011

The bits of HTML the W3C is publishing as HTML5 are getting ever more stable. Ian Hickson continued addressing feedback throughout last week. There are still some three hundred odd bugs outstanding, but mostly these are relatively minor problems. This does not mean that major changes might not happen of course. One discussion currently ongoing is whether the time element should be replaced with a more generic data element.

On the front of new features, Cisco and Mozilla put forward a new RTC API proposal. They also outlined how it is different from what is in the WHATWG specification. A long thread discussing the details followed. Video conferencing is the next big thing the web platform is going to tackle. Allowing for Chatroulette and Google+ Hangouts without plugins.

Ian Fette from Google proposed a new rel attribute value, attachment. A long thread led to the proposal of a new download attribute instead for the a element which allows specifying a filename. The attribute allows for specifying an implied Content-Disposition header on the retrieved resource. Darin Fisher outlines some of the advantages.

Posted in Weekly Review | Comments Off on WHATWG Weekly: RTC API and a download attribute

WHATWG Weekly: Microdata, WebSocket protocol, Web IDL

Monday, July 11th, 2011

The debate on what to do with mutation events is still ongoing, Web IDL and the WebSocket protocol are heading towards Last Call, HTML5 still is in Last Call, and Karl is still providing an alternative view on things in the Open Web Platform Weekly Summary.

Changes to the specification

While the W3C is still working on setting up another one of its Task Forces to sort out whether should use distributed extensibility via RDFa or Microdata, Ian Hickson wrote a lengthy email addressing Microdata feedback from the last month. This resulted in numerous changes to the specification.


For better or worse (I personally like it) Web IDL is the language to design APIs for the web. Thanks to heycam (and Mozilla for employing him to do this) it has been moving forward again and will probably be published as W3C Last Call Working Draft soon. The significance for web developers is that every specification that defines APIs of some kind (and everything cool but CSS does these days) uses it, so knowing how it works is useful.

The WebSocket protocol

Salvatore Loreto, co-chair of the IETF group responsible for developing the WebSocket protocol, announced on their mailing list that the protocol will go for IETF Last Call today. Implementations are still all over the place. Most browser implementations are still not further than one of the input documents to the IETF group. Firefox 6 will likely ship an updated version, using a vendor prefix. Plans from other vendors are less clear. However, I would expect them all to rather rapidly adopt this as it gives such a huge advantage in terms of speed on sites that use it.


Posted in Weekly Review | Comments Off on WHATWG Weekly: Microdata, WebSocket protocol, Web IDL

WHATWG Weekly: Web Component Model and replacing Mutation Events

Monday, July 4th, 2011

Last week in standards world was about a component model for the web and mutation events, mostly. As a reminder, there is also the Open Web Platform Weekly Summary written by Karl.

Changes to the specification

There were only two changes this week. In response to feedback the way audioTracks and videoTracks (media captioning features) work has been changed.

The second change was purely editorial. Reorganizing the rendering section of the specification. The rendering section prescribes how HTML ought to be rendered in interactive desktop user agents (i.e. browsers), up to and including the nitty gritty details of quirks mode.

Outside the WHATWG

Dimitri Glazkov (Google) shared his work on a component model for the web. Maciej Stachowiak (Apple) outlined a number of a concerns with it. It seems still in the early stages, but this will eventually allow for better control of styling form controls and creation of your own controls (i.e. reusable components).

Olli Pettay (Mozilla) put forward a proposal to replace mutation events. Everyone is in favor of replacing mutation events because of their complexity, but exactly how is still under discussion. Rafael Weinstein (Google) explained why ideally he would prefer an alternative approach using an observer for mutations. He would be happy with the proposal Olli put forward though. After a lot of discussion Boris Zbarsky (Mozilla) considers that we might need both APIs.

WHATWG mailing list

Posted in Weekly Review | Comments Off on WHATWG Weekly: Web Component Model and replacing Mutation Events