Happy 17th Birthday CSS

CSS1 became a W3C Recommendation (one of the very earliest) on this day (if you’re on the appropriate side of the international dateline) back in 1996. 17 years, which is quite a long time in the technology world (it actually predates the W3C’s first HTML specification, HTML 3.2 by about 4 weeks). And what a long way it has come.

I first started exploring CSS sometime in 1996 (possibly 1995, things get a bit hazy at this distance). Internet Explorer 3 had launched in mid 1996 with some support for CSS (while it was limited and buggy, the IE team were working with a specification very much in a state of flux).

Back then, IE was the scrappy little upstart (of sorts) to Netscape’s behemoth. Netscape’s version 4 shipped with CSS support (again, buggy and incomplete) but underneath its CSS was their own technology, JSSS (JavaScript Style Sheets), which Netscape submitted to the W3C a proposed standard, but as history reveals, CSS became the W3C’s standard. One of JSSS’s authors was none other than Brendan Eich, father of JavaScript, and currently Mozilla’s CTO.

Just as an aside, JSSS had traditional imperative programming language constructs such as with statements, if then else statements, expressions (e.g. .5 * document.width) and variables. So Sass and other CSS pre-​​processors have some ancient forebears (which I suspect few folks are aware of).

But CSS was, and remains avowedly a declarative programming language, in my opinion one of its great strengths, and key drivers of its success, both then, and now.

Much has happened, both to CSS and the Web, since those days. But on its 17th birthday, I’d like to acknowledge the creators, custodians and champions of CSS in those early days. These were the days before blogging (in any mainstream sense), twitter, and other social media. Indeed, these were the days of newsgroups, the water cooler of the web for its first decade at least. And many of the most important figures in the development, and success, of CSS (and as a consequence the modern web) are little known, though they are the giants whose shoulders we all stand on. And while I’m sure to leave a few folks out, (please add those you feel have been overlooked as a comment if you have a moment) here are some who really should be acknowledged.

The inventors

Stylesheets weren’t a novel concept in 1996, indeed, there’d even been style sheet languages in browsers before, in particular in the ViolaWWW browser. What was novel about CSS was the cascade.

Bert Bos, co-​​developer of CSS, and its ongoing custodian at the W3C.

Hakon Wium Lie, co-​​developer of CSS, and CTO of OperaSoftware. The concept of the cascade in CSS comes from him.

Browser folk

Chris Wilson, who worked on Mosaic, Internet Explorer and now on Chrome, surely a unique achievement, championed CSS in IE3 (and far beyond).

Tantek Çelik, now working at Mozilla on many standards efforts, and one of the originators of Microformats, lead the development of the Tasman rendering engine, found in IE5 for the Mac. This was in many ways the first modern browser when it came to support for new standards such as the DOM, and CSS. Tasman first introduced the “doctype switch” for rendering content in standards mode (given most web content at the time relied on browser bugs, such as IE’s incorrect box-​​model, this was a huge step forward for CSS).

Update: See also Peter Linss comment on the Gecko engine, and its early support for sophisticated CSS, including the DOCTYPE switch.

Champions and denizens of comp.infosystems.www.authoring.stylesheets

At this time (the late 1990s), the place to learn about and discuss CSS was the stylesheets newsgroup (aka c.i.w.a.s). Numerous folks shared their expertise with newbies, and anyone who was anyone in CSS was there on a daily basis (OK, there was no Twitter, Youtube, Facebook, effectively no blogs, and few other distractions on the Web, so you had to take your fun where you could find it in between weekly arrivals of A List Apart in your inbox). Here are some of the folks at that time who explored CSS, shared their knowledge, and to me are about as important as anyone in its ultimate success.

Eric Meyer is a name most web folk will be aware of, his early work included wonderful articles on CSS, and his important documentation of browser bugs. Eric’s O’Reilly book, CSS the Definitive Guide is still in print all these years later. Eric was also one of the original CSS Samurai (so named because there were 7, an oblique reference to the Kurosawa film, the 7 Samurai), the Web Standards Project’s effort to help, rather than badger, browser developers into better CSS support by documenting the most critical CSS bugs and shortcomings.

But there are many less well known folks, who were equally as important at the time.

Todd Fahrner, who has for many years now run a bike shop in Portland Oregon, moving away from a career on the Web (demonstrating once again just how visionary he was) really was the wise old man of Web design. He was responsible for the original (and as far as I’m concerned only actually useful) Acid test, and The Fahrner Image Replacement (FIR) technique is named for him.

Another who contributed significantly is Sue Sims, who once worked for Opera Software, but of whom I can’t find any current trace of online. She really was a prolific and generous contributor to c.i.w.a.s, and founder of perhaps the first ever, certainly one of the earliest CSS focussed sites, css​.nu (see what they did there?). Similarly important at the time, also a founder of css​.nu, and now also untraceable online is Roland Eriksson. Both Sue and Roland were significant contributors to the CSS Samurai.

Thank you

Thanks to all of you, and the numerous others I’ve failed to mention (please do call out those you think merit mentioning in the comments below). CSS changed my life, for the better, as it changed the Web for the better, and the lives of so many, indeed countless others. I owe those there in its infancy, who contributed so much to its success with no other motivation than their belief that this was an important technology, worthy of wide adoption, a debt of gratitude that will never be repaid. But I try as much as I can to pay it forward.

6 responses to “Happy 17th Birthday CSS”:

  1. Thank you for writing this John. And of course thank you for your own incredible contributions throughout the years too!

    It is great to keep a record of people that have been involved with the creation of technologies such as CSS. They are as important, if not more important, to the history of the web as Sir Tim Berners-​​Lee himself.

    I had completely forgotten about JSSS, came across it at some point when I started (it was probably already dead).

    • By: Chris Wright
    • December 18th, 2013

    Thanks for that history lesson John! There were a lot of names I wasn’t aware of in your article. It was the champions which brought it to me: I owe my initial CSS introduction to Molly Holzschlag, Eric Meyer, Dave Shea, yourself, Jeffrey Zeldman, and Mark Newhouse (whose article on taming lists in ’02 was probably the final nail in the coffin for table based layouts for me). I’m sure there’s a lot of giants I stand on the shoulders of. Thanks for making CSS possible.

  2. Thank you for writing this. It’s nice to learn a little bit about where my job came from!

    • By: Peter Linss
    • December 20th, 2013

    Hi John,

    nice article, it’s good to see people caring about the history of CSS. I was a bit surprised however to not see any mention of Gecko and the role it played getting CSS into the mainstream.

    Back in the late 1990’s, while Chris and Tantek were busy adding CSS to the IE engines, Gecko was also undergoing heavy development with a strong commitment to broad support for CSS. Even though it was a few years before Gecko was used in a mainstream browser, it was the first browser engine to go open source and its public development was a strong motivator for the other engines to keep up with standards support.

    As one of the original architects of Gecko (I actually began its design in 1995, two years before my company was acquired by Netscape), and the primary implementer of it’s style engine through late 1999, I was disappointed to not see credit given where due. Gecko was the first browser engine to seriously commit to doing CSS right, and its architecture of separating content, style, and presentation was designed to make that happen (in addition to supporting dynamic updating of web content in a way that had never been done before). The older engines weren’t able to model CSS properly, which is why only some features were added opportunistically where they could be grafted in, and what led to many of the old bugs and odd behaviors they had.

    My colleague Rick Gessner and I were also the ones who convinced the NS4 developers to drop support for JSSS, as it was so intrinsically bound to the “tag stack” layout model of the old Netscape engine. While it had some interesting aspects, it would have been all-​​but impossible to support it in the modern rendering engine architecture of independent DOM trees, style trees, and geometry trees that we pioneered in Gecko.

    Regards,

    Peter

    P.S. Also a correction, while I do believe the Tasman engine was the first to ship support for DOCTYPE switching in a major release, it was actually implemented in Gecko first. The initial APIs were added in July of 1998[1] and I remember telling Chris and Tantek about it in the November 1998 meeting of the CSS Working Group (to avoid CSS adopting the NS4/​IE quirk of accepting unitless lengths as pixel values as a standard behavior). IIRC they had independently had the idea of introducing a quirk mode, but the initial implementation and the practice of switching it based on the DOCTYPE came from Gecko.

    [1] http://​bonsai​.mozilla​.org/​c​v​s​v​i​e​w​2​.​c​g​i​?​d​i​f​f​_​m​o​d​e​=​c​o​n​t​e​x​t​&​a​m​p​;​w​h​i​t​e​s​p​a​c​e​_​m​o​d​e​=​s​h​o​w​&​a​m​p​;​f​i​l​e​=​n​s​P​r​e​s​C​o​n​t​e​x​t​.​h​&​a​m​p​;​b​r​a​n​c​h​=​3​.​2​1​1​&​a​m​p​;​r​o​o​t​=​/​c​v​s​r​o​o​t​&​a​m​p​;​s​u​b​d​i​r​=​m​o​z​i​l​l​a​/​l​a​y​o​u​t​/​b​a​s​e​&​a​m​p​;​c​o​m​m​a​n​d​=​D​I​F​F​_​F​R​A​M​E​S​E​T​&​a​m​p​;​r​e​v​1​=​3​.​1​3​&​a​m​p​;​r​e​v​2​=​3​.14

    • By: John
    • December 20th, 2013

    Hi Peter,

    thanks for clarifying, and adding your perspective, and a big apology for leaving Gecko out of my admittedly idiosyncratic story. I guess in my defence, that period of the late 1990s I focussed on, saw Navigator effectively stagnate on the older engine (for instance the CSS Samurai decided not to even critique Netscape’s CSS support awaiting the Gecko engines release), and it was really in the early 2000s, or even a little later with Firefox 1, that Moz really became as vitally important as it did (and remains).

    and thanks for the DOCTYPE switch (I should have noted first proposed by Tod Fahrner in 1996 IIRC) — this I definitely did not know!

    john

  3. Thanks for writing such a great article. It’s important to know the history of the tech we use every day in my opinion.