Updated: Jun 25, 2020
A major part of our engineering culture is to take an active part in the global developers’ community by sharing the best of our technical expertise.
In our new podcast you will hear the stories and insights from our very own, alongside some of the most prominent voices in the tech community.
In our first episode, “Stand Up and Fight”, we hear it directly from Håkon Wium Lie, the mind behind the Cascading Style Sheets (CSS), about his own story of one developer’s willingness to fight for the principles he believes in, even against the biggest technology company in the world at the time: Microsoft:
Hi and welcome to the Wix Engineering podcast. My name is Ran Levi.
The internet is an amazing thing to participate in, but the only reason why it’s worth looking at is because of CSS - “Cascading Style Sheets”. CSS usually comes in the form of a text file that accompanies the HTML file, and holds styling directives that define the shape, color and position of the content on a web page. Anybody under 30 probably can’t imagine life without it. To those of us who remember the ‘90s, let’s face it: the web was great--we all loved it--but it wasn’t exactly pretty.
Today, CSS is so ubiquitous that it might seem like things had to have ended up this way. We assume that CSS is a natural outgrowth of the modern internet. But it isn’t.
In fact, CSS nearly didn’t make it at all.
In the early 2000s the digital space was dominated by one company--Microsoft--that wasn’t all too keen on the idea of a style sheet language they weren’t in charge of. It was only because a select group of people fought hard against the powers that be that Cascading Style Sheets became what it is today.
The leader of that group, the individual responsible for first proposing the language in 1994, is our guide for this first episode of The Wix Engineering Culture Podcast.
Håkon Wium Lie: So my name is Håkon Wium Lie. I’m Norwegian and my name is very Norwegian so it’s a bit hard to say in English.
The full significance of CSS is best understood by comparing the internet we’ve had the past ten or fifteen years with the one we had to look at before styling was taken seriously in cyberspace.
Håkon Wium Lie: So before CSS came around, each browser basically had a hard-coded style sheet. For example if you used Mosaic, an early browser, there was some code in there that you could influence a little bit. You could set the font size for example for headlines and such. But it was basically a hardcoded thing that you needed to recompile Mosaic in order to change.
For example the background was always gray, which turned out to be, you know, for the first months of Mosaic, it was like heaven. You could do incredible things with Mosaic. You could click on a link and get to somewhere else, another computer, another continent, another document.
But you got a little tired of those gray backgrounds after a while and those Helvetica fonts that were only available, you wanted to say a little more. Especially designers who came to the web, the first question they asked was, “How do I change the font size?” or “How do I get the background to be white, or black, or red or blue?”. And the answer was “Well, you can’t really do anything about that”. So they were sort of disappointed. You know, “what can we do?”.
And they actually found a way to get around this limitation and that was to create a GIF image. Mosaic introduced support for images and as we know, you can put text into a GIF image and you can set a background in a GIF image. So instead of writing HTML, people started making images and send around, and therefore the web was quickly on its way to become a giant fax machine.
You know, remember fax machines? Fax machines, that’s where you take a picture of a document and you send that picture along. And it’s not a very good idea because compression is terrible and you can’t really do anything in the receiving end except show it to a human being.
You can’t show it to a – you can’t easily give it to a search engine for example and you can’t easily give it to a blind person. It has all these drawbacks.
By 1994 the industry was moving away from, rather than towards, more advanced styling. Mosaic--the browser which possessed a functional monopoly in the months leading up to Håkon’s CSS proposal--was what we might call a fashion crime. It allowed users to change some colors and font types on their web pages, but little else.
In Håkon’s book “Cascading Syle Sheets, design for the Web,” he quotes one of Mosaic’s own programmers in 1994 who, perhaps better than anyone, summed up the problem. Quote:
it has been a constant source of delight for me over the past year to get to continually tell hordes (literally) of people who want to -- strap yourselves in, here it comes -- control what their documents look like in ways that would be trivial in TeX, Microsoft Word, and every other common text processing environment: "Sorry, you're screwed."
Håkon Wium Lie: So, therefore, instead of heading down the image path, I proposed CSS as a way of keeping HTML around to make sure people wrote HTML code properly and then did the styling outside of HTML, so that you could set the font sizes and the colors and the backgrounds and everything you wanted. But you did it outside of HTML.
This was crucial. CSS effectively separated the content and presentation layers of the web. Handling presentation on its own terms allows for all kinds of powers that the old, integrated paradigm, didn’t allow for. For example, it allows reuse of styling elements across different web pages, and keeping the presentation layer separate from the content means it’s easier to modify the presentation without introducing new bugs in the content layer. It also allows for greater flexibility in presentation, and the ability to adjust to different devices and screens.
Håkon wasn’t the first person to think of separating content from presentation. Steve Jobs’ NeXT browser/editor, for example, allowed for style sheets but did not specify their syntax. A couple of smaller browsers had their own primitive styling languages, but that was about it.
What made CSS different wasn’t that it was the first to distinguish a presentation layer of the web. It wasn’t that CSS was so superior to the other styling languages of the time--actually, Håkon’s first proposal wasn’t fully developed yet, and only somewhat resembles what CSS would eventually turn into.
What really made CSS different was one, simple concept: “cascading.”
The basic idea of a ‘cascade’ in web design is that the styling of each element in a page is determined by several different style sheets - and a system of rules that define which stylesheet takes precedence over the others.
Here’s an analogy you might find familiar if you’re old enough. I have three kids, and they all have tablets and smartphones. The rule of the house is no smartphones, computers or tablets after 8pm. I return home one evening, say at 9pm, and I find one of the kids playing Brawl Stars on his phone. I say ‘Hey! What gives?! We’ve got a rule in this house, mister!’. After all, I am The Dad, and I make the rules in this establishment. And then the kid says, ‘Mom said I can.’ and that’s the end of it.
Similarly, a browser might have a default stylesheet that defines, for example, a white background for all webpages. Then, the author of a specific page might define another stylesheet with a different color - say, blue - and that new stylesheet takes precedence over the default one for that specific page. This cascading flow of styles and rules of precedence has great benefits for both designers and users. For example, if the website you’re creating is for a large organization with many different stakeholders with vastly different style needs - CSS allows you to define one default style for the entire website, and different stylesheets for say, different departments that affect only their part of the website. Or if you’re a user who needs bigger fonts, CSS allows you to define your own font size, regardless of the size defined by the page’s author.
In other words, the CSS proposal recognized how styling on the internet is not static, but determined between developers and users in unison. Its values were not set in stone, but ordered according to their precedence and applied situationally. Håkon demonstrated the power of this simple paradigm during “Developer’s Day” at Chicago’s November 1994 “Mosaic and the Web” conference, with a made-up slider that could theoretically adjust a page’s presentation according to a user or author’s preferences.
But it wasn’t entirely obvious--even to smart people at this stage in the process--that this new format was anything more than a pretty good idea.
Håkon Wium Lie: It was quite well-received. There was an active group of people discussing web development at the time. It wasn’t a lot of people, maybe 50 or 100 people on that mailing list. But these were smart people. These were people who had stumbled across the web at an early age, so to say, and they were – many of them didn’t care about styling at all. But some did. And I met Bert Bos there - he joined me in designing what came about as a CSS recommendation a couple of years later.
What began as one man’s post on a small mailing list soon turned into a community-wide effort. The journey in transforming CSS from a rough idea into an effective web standard was long and laborious.
Håkon Wium Lie: Yeah, that’s a good question. I was working for CERN at the time and I shared office with Tim Berners-Lee.
The Tim Berners-Lee best known for, you know, inventing the World Wide Web.
Håkon Wium Lie: So I was a little bit closer to power than most people. At the same time, it wasn’t – there were no standard organizations at that time. Tim started the World Wide Web Consortium a little later and when he did, I was invited in and I was actually the first employee in Europe.
So I was able to continue my proposal within the W3C. But you can’t – as a staff member, you don’t have power to decide anything. It’s all being decided by the members and thankfully, member companies that were also browser vendors stepped up and in particular Microsoft was very eager to do CSS, to do styling.
Like every good rivalry story, Håkon and Microsoft started off as the best of friends. The internet’s biggest company was CSS’ biggest champion, in those early days.
Håkon Wium Lie: Well, it was great. It was Thomas Reardon. He was the program manager for the Internet Explorer browser. He was kind of the man leading that effort and saying “this is something we gotta do”, and he had good programmers, Chris Wilson for example, come along and do the implementation.
So I was very excited about that and I was happy to work with Microsoft.
So they implemented CSS even before it became a recommendation. They did so in IE3. I don’t think you have many users using IE3 anymore. But it was a very early, very important browser, the first browser from Microsoft. And by implementing CSS they sent a strong signal about standards to the other browser vendors like Netscape that this is where we’re heading.
Then it meant that the others – the other browser vendors - also came along because Microsoft, you know, is a big player. You want to follow what they’re doing. You can’t let them surpass you. And thankfully we were able to gather support from all of them, Netscape, Microsoft, even Opera, which I later joined, implemented CSS. So it was kind of a consensus-building process there and in 1996, it was turned into a recommendation.
Not two full years after first proposed, CSS was already on its way to becoming a universal standard. Having it in Netscape, Internet Explorer 3 and some of the other, smaller browsers meant that nearly everybody on the internet would soon be using CSS-enabled browsers.
Except, if everything was going to go this well, we’d have a pretty boring podcast on our hands.
Håkon and the small community of developers around him had just stepped into the middle of a war.
During the years when Håkon Lie was first developing and marketing CSS, the market for internet browsers was fluctuating wildly. At the beginning of 1994, Mosaic held a nearly 100 percent market share in internet browsing. Netscape entered the market that spring, and by the fall Mosaic lost an entire third of its base. Cut to april ‘96 and Netscape owned approximately 90 percent of the market. But, just as quickly, Microsoft licensed Mosaic in building Internet Explorer. The world’s foremost browser died, and in its wake came the browser that would eventually kill off its killer.
Imagine being in the middle of all this chaos. Browsers were living and dying in cycles of two, three years. The companies that supported them were eating each other, and getting eaten.
Håkon Wium Lie: I do think it’s very important that if you’re going to claim to support a specification, you have to do it honestly, realistically and you have to fulfill most of what’s in there.
And it turned out that both Microsoft and Netscape didn’t really want to do standards right. They wanted to have the checkbox item. But they had other concerns. They were competing very hard with each other... And we try to push this – you should see standards as kind of a common foundation and then you should do the competition on top of that.
The problem wasn’t that Netscape was fighting with Microsoft, but that their fight incentivized each side to ruin the very thing that would make CSS so useful to web developers.
To fulfill its destiny, CSS had to work uniformly, equivalently, across the whole web. The word we use for this is “interoperability.” But this uniformity also means that users could potentially switch between different browsers seamlessly - and that’s something that both companies weren’t exactly thrilled about, to put it mildly. Both wanted to keep their users, and making it easier to switch browsers wasn’t in their best interest.
But If some browsers didn’t integrate CSS, or integrated it differently than other browsers, creators of web pages would be the ones to suffer.
Håkon Wium Lie: You quickly run into interoperability problem where you have to write one style sheet for Internet Explorer and another for Netscape.
That was not a good place to be in for web developers. You obviously – unless you’re charging by the hour, you don’t really want to sit down and write X number of style sheets or various HTML files for a document.
Even if you’re charged by the hour, it’s very boring work. So you don’t want to do it. So there was also a community effort to try to make all browsers comply with the standards and by that time, Microsoft’s Internet Explorer was the dominant browser.
Put these factors together and you have a recipe for disaster. The community’s desire for interoperability, and the oppositional corporate interests of the major internet companies were in direct opposition. Netscape and Microsoft were looking for any edge they could get on one another.
It was as if Håkon had stepped into the middle of World War II, and asked -
“Can’t we all just get along?...”
Between 1998 and 2000, Internet Explorer’s market share more than doubled.
Netscape held less than 20 percent market share by the turn of the millennium, and less than four percent just two years later. Microsoft had won the war, in a rout.
This solved the problem of having to deal with two competing internet giants. But it introduced a whole new problem that was, frankly, even worse. This new problem forced Håkon Lie to stand up against the world’s biggest tech company, and the world’s richest man.
That’s where we’ll pick up in the next episode of our podcast. Thanks for listening!
The Wix Engineering Podcast is produced by PI Media, written by Nate Nelson, edited by Guy Bin Noun and narrated by me, Ran Levi. See you in the next episode, bye bye.
For more engineering updates and insights: