CSS: If Not Now, When?
As we rush forward in an ever-quickening pace euphemistically called "internet time," it's easy to lose track of what's happening. Every so often, therefore, it's a good idea to stop and take a look around-- not only to see where we've been, but also what's going on right now, and what's coming soon. To that end, I'm devoting this month's column to an overview of trends in browser support and CSS specifications.
Browsers: Whither Support?
We're all aware, I imagine, that while CSS is a great idea on paper, the implementations have left much to be desired. Both major browser companies made terrible first stabs at CSS support (I'm referring here to Explorer 3 and Navigator 4), and I don't think you'll get much disagreement from either of them on that point. Explorer 4.x was much, much better with CSS support, especially IE4.5 for the Macintosh.
When Explorer 5 was released for Windows, there were many high hopes that not only would there be many new features, but that the old problems from IE4 would be fixed. Sadly, not so: IE5's support for CSS1 is not significantly different than IE4's. There were additions in IE5's CSS2 support, but that doesn't do much for the gaps and errors in its CSS1 support. (And to those of you who have been wondering, yes, IE5 will be added to the Browser Support Chart in the very near future.)
While most eyes were focused on the Two Titans, a tiny little company in Norway called Opera Software released a new version of their browser, Opera 3.5, and its CSS support was really good. It narrowly edged out IE4 in terms of support, not so much because it implemented more of CSS1, but because the parts it implemented were almost always correct. The few bugs which existed were largely addressed in Opera 3.6, but not much new was added. The one really nice thing about Opera is that its CSS support doesn't extend into CSS2. That's nice because it shows that the programmers there are trying to get CSS1 right before they move onto CSS2, which is a lesson other companies could stand to learn.
As for the future, it's looking much better than ever before. Netscape, having taken mounds of abuse over the broken standards support in Navigator 4.x and prompted by a petition sponsored by the Web Standards Project, announced that Navigator 5 would use the next-generation, standards-compliant Raptor/Gecko engine. As if this weren't enough, about a month ago it was announced by independent observers that the Gecko engine had achieved complete implementation of CSS1, and had very few bugs to boot. Then, just to top things off, Netscape itself recently announced that it would not be providing a "bugwards" compatibility mode for much of its old rendering engine. In other words, authors will be able to concentrate on learning the standards, not the quirkiness of an outdated browser.
Netscape isn't the only company promising a brighter future. In fact, according to Håkon Lie, CTO of Opera Software, there exists an internal version of Opera which is also CSS1-complete, and also implements most or all of the CSS2 selectors. He demonstrated this browser during a talk at the Eighth International World Wide Web Conference (WWW8) this past May, and the brief glimpses we got seemed to indicate significant advancement in Opera's CSS support. Although almost nobody outside Opera has been able to test this version, if Mr. Lie's claims are true, that will mean we could have two browsers which completely and correctly support CSS1-- quite possibly leaving only Microsoft out of the CSS1-complete club-- by the end of this year.
What about support for CSS2? The picture there is much less clear. Neither Opera nor Netscape is saying much about their plans for CSS2 support, preferring instead to concentrate on support for CSS1. Microsoft has implemented parts of CSS2, of course, but has had little to say about what more they plan to do, or whether they plan to fix whatever problems they may have with current CSS2 support. This should not discourage us, though, since implementors have good reason to bide their time on the subject of support beyond CSS1.
The Future of CSS
During the same WWW8 session where we saw the Opera preview, Bert Bos of the World Wide Web Consortium (W3C) gave a talk in which he discussed the future direction of the CSS specification. First and foremost will be the modularization of CSS. This will entail splitting CSS into several mini-specs, each of which covers a specific topic, such as "Colors and Backgrounds," "Selectors and Syntax," or "Printing."
The benefits of this approach, as described by Mr. Bos, are an increased responsiveness on the part of the CSS Working Group, and greater flexibility for implementors. To take the second point first, the fact that CSS will be split into modules will allow implementors to tackle a module at a time, and then claim support for that module once they've correctly implemented the properties and behaviors described in a given module. For example, with positioning in its own module, implementors can claim support for CSS Positioning or Aural Styles, without necessarily having to worry about other modules. This will free implementors from worrying about the fact that the lack of a single property (or set of properties) will keep them from being able to claim, for example, full CSS2 support. Of course, there won't be as much pressure to claim full and complete CSS2 support, because the focus will be more on who has implemented which modules.
The other advantage, which I mentioned above, is that the Working Group can be much more responsive to market changes and user demand. At the present time, the only way to make changes or additions to any part of the CSS specification is to get a new level out the door. For example, if everyone agreed that a new printing property should be added to CSS, it would have to wait until CSS3 were finished and released-- in other words, lots of new features wait for the completion of the entire specification. By concentrating on modules instead, the Working Group will be able to update, correct, and otherwise edit a given module as necessary. If Positioning is suddenly a hot topic, and there are many new ideas and clarifications being discussed, the Working Group can concentrate on that single module. Once the discussions have been finished, a new version of the Positioning module can be released, and the Group can move on to other topics.
This change should have some interesting consequences. In the first place, it should allow the CSS Working Group to be more flexible and responsive to demands for change and clarification. It will also have the effect of showing which areas of the specification are popular, and which are not; the modules which have several revisions being the ones people find interesting. If a module sits for a long time without many changes, it may not be something many people find compelling, or else something which is stable and doesn't need to be changed. Modularization will also allow revisions in one area to be made without their being held up by controversy over a change in another area, which is a definite advantage. Just because there is disagreement over a new type of selector syntax, that won't prevent minor changes to the positioning section from being approved and released.
And what new changes might be in the works? In his talk, Mr. Bos mentioned two things which seemed likely to be added to CSS. First was transparency (or opacity), which is the ability to set a degree of transparency on the foreground of elements. In other words, you could make the text in a paragraph semi-transparent, allowing the background to "shine through" the text (or be composited together, if you prefer graphic-design terminology). The other was multi-column text, although there were no details given on how this feature might be accomplished.
[Late-breaking note: four public drafts of new CSS features have been recently released, with more apparently on the way. These can be found at http://www.w3.org/TR/.]
Between the promised release of two browsers with 100% support for CSS1, and the knowledge that the CSS Working Group is continuing to examine the specification for ways to enhance and improve the utility of CSS, the future of CSS seems better than ever. Most important will be the widespread adoption of specification-conformant browser, of course. The mere fact of their existence will encourage designers to use CSS more widely than ever, and should convince many a doubter that CSS is a technology worth exploring.