Levels of abstraction and stylesheets (A CSS Lover's Lament) In 1995 a number of interested parties met near Versailles in France to discuss the possibilities of defining stylesheets for the web. The problem was that browser makers were adding presentation markup to HTML, and that was wrong. We needed to act fast to stop HTML being pushed in the wrong direction. The required solution had to be easy to implement, simple to use, with an upward development path. The result of that meeting was CSS, which was released as a recommendation only a year later. Now we are more than a decade on, and we can conclude that CSS has been a success, at least in its adoption. But it is beginning to show its age: it was designed in an age of static pages, where presentation possibilities were too meagre and people had to resort to using images for styling, even for fonts. Modern website builders are having to resort too much to scripting to achieve effects that could easily be available in stylesheets. But there is also a question of levels of abstraction. The author of a book looking at a contract from a publisher will have a different view of what is content and what is styling from the publisher, who is likely to consider the content to be the name of the author and the royalties offered, and the rest to be presentation. This talk will analyse what the needs of modern styling are, where we should consider the levels of abstractions to be, and where CSS fails to meet these needs, and how we might approach finding a solution. === - Berlin talk about essence. Linux levels of hardware abstraction Some problems Layout facilities Blocky No proper reordering of elements Authoring No definition mechanism No constants Matrix of elements to properties problem Selectors A mess Accessibility Pixel perfection Image replacement problems: only hacks Lack of Fonts Implementability Taken too long to get interoperability Acid test a sign of failure Slow development Essentially stopped Alternate stylesheets not sticky as you click through Should apply html page to css not v.v.