A tale from 30 years of HTML
In a few days the Hypertext Markup Language known to most simply as “HTML” will turn 30 years old. After the release of its first version back on November 3rd, 1992 its come a long way. A very long way.
“Back in my days, we used to stuff the HTML code as resources into our CGI applications. Frontend development was a thing everyone just did.” — Annonymous programmer from the 90s
Although released in 1992, it took HTML and the world wide web quite a while to gain some traction. It took all the way up to 1995 and ‘96 for the world wide web to take off. Before then, it was pretty much a thing for a couple of geeks, programmers and tech enthusiasts.
Browsing the world wide web was already an adventure and took quite some time and patience to setup. Building websites wasn’t really a thing and if you wanted to build commercial applications, you’d still had to make the choice between the Web, France’s Minitel or Germany’s BTX. And I would also want to leave an honorable mention of the Gopher protocol here.
How to build a website — 90s style
The very first challenge in the mid-90s was to find someone to host your website. Registering a domain was a completely different story back then. Assuming you had your own server or found someone to host your website, they’d probably just give you FTP access to a Unix machine that would store your HTML and some nice GIF images to serve to anyone that wanted it.
If you wanted to build a meaningful interactive website that users could not just browse, but actually interact with — like a chat for example — you’d pretty much end up using CGI (the “Common Gateway Interface”) or build your own web server software. Building your own web server wasn’t that uncommon back in the old days. Most of the people however used CGI. What CGI essentially did, and still does, is forward the HTTP request to the application and the application would return the headers and the HTML code or whatever content it would serve. Perl, C and C++ were the most common languages to build your CGI application for your webserver. It was very cumbersome and basically anything interactive had to be done on the server. Session handling and session management, as there were no cookies, was mostly done through the URL’s path component using unique identifiers for each user or session.
And given the performance of computers back in the mid-90s with CPU clock speeds between 25 and 180 Mhz, running interactive web servers was expensive. Sun Microsystem’s SPARC CPUs and their systems were commonly used for that purpose. And those didn’t come cheap at the time.
’95, ’96 and the boom
The year ’95 and ’96 were milestones for the world-wide-web and the Internet as we know it today. Usage took off and services flourished, from free web hosters like Yahoo’s GeoCities, auction platforms like eBay and online stores like Amazon.com. Specifically software like Microsoft Frontpage, the WWW Artist from Sierra and many others made it way easier to build your own HTML pages and upload them with FTP.
Building website layouts back then was however still all table-layouts. So everything was wrapped inside numerous tables and tables with tables of tables. Internet updates weren’t a thing, so it was not unusual to encounter quite dated web browsers. Due to the browser wars from ’95 to ’98, cross-browser support was a headache, so using tables was the safest way to go. Apart from that animated GIF telling people what browser you built your site for. Styles for elements were just the style attributes the elements had. If you wanted to go for very fancy styles, you ultimately had to use images, image maps and images wrapped in (guess what?) tables. If you were building web pages you were basically fiddling with tables all day and night.
Given the super-slow speed of most connections back in ‘95–’98 which were somewere at 56k or 7 kilobytes per second, it would also take ages for images to load. So these awesome animated GIFs promoting your favourite browser each mostly took 2 seconds to load. Not unusual to wait 30 seconds for a website to finally show up. Content delivery networks weren’t a thing and latency added to the “experience”. And an experience it was.
’97 to 2000 and beyond
Up until the early 2000s, many websites however were still table layouts and it was not uncommon to see old browsers like Internet Explorer 3.0 out in the wild. However, websites became more interactive and more media-rich over the years. For builders and users alike, it meant fiddling with plugins such as Flash, Java applets or the Real Player plugin. For users it meant permanently having to update plugins and install new plugins. At download speeds well below an acceptable level even at the time.
The late 90s saw the first video and music streaming services, although in a quality were even “broadband” users with more than a megabit per second could hardly experience anything. But it was new and fancy. Not to mention that software like the products from Real Networks were very expensive compared to today’s Open Source world.
WML in ‘98 — the mobile web was born and died
The Wireless Application Protocol (WAP) used the Wireless Markup Language (WML) and could organise different pages (called “cards”) in a set of cards. This would reduce the amount of data transferred since multiple pages could be transferred to the client at once. A bit like modern frontend frameworks do today — Déjà vu again? Given the horrible pricing the mobile network operators had, WAP and the mobile browser quickly became a frightining experience since they would rack up hefty bills in seconds. Users did not like it that much, to say the least.
Subsequently, the WAP and WML quickly died. Although technically quite interesting, the commercial environment they were put in ultimately led to their demise. More capable mobile browser such as the Mobile Internet Explorer on Pocket PC 2002 or later Windows Mobile and many other mobile browsers, made WAP obsolete. Several approaches to the mobile web were made by Palm, Nokia and many others. Most, if not all of them failed.
2002 — Say hello to Windows XP, IE 6 & Firefox
With the appearance of applications like Google Maps, the modern “Web 2.0” showed its capability to deploy full-scale applications that were previously only possible as Desktop applications like Microsoft AutoRoute. With Wikipedia as an interactive encyclopedia, server farms now also had sufficient database, storage and compute capacity to run large-scale interactive websites.
2008 — the mobile web is born again
Since it’s birth in the mid-90s, the mobile web basically always had two significant problems that blocked it from growing and becoming a real thing that people would use every day.
- the horrible pricing of the mobile network operators
- websites that weren’t optimized for small screens and fat fingers
What many people sometimes forget is that Apple had struck a deal with mobile network operators and that Wi-Fi became mainstream in mobile devices. Also Google’s Android saw the light of the day. With these things changing, more webmasters and developers starting building mobile websites. In the early days of the mobile Internet, mobile devices would often be redirect to stripped down mobile websites. Often under domains like wap.mydomain.com with those who kept their WAP service and slowly transitioned to the new mobile web (like CNN for example).
2020, 2021, 2022 and beyond
The browser is also becoming more and more integrated into the operation systems itself with ChromeOS, Android, iOS and Windows. While at the same time more and more applications are making massive use of the Web and HTML to display content and provide services. With the rise of Software-as-a-Service modern businesses applications are also quickly transitioning to the browser, taking the burden of installation and complicated licensing off the user.
Challenges that still remain
Back in the old days, browser testing was a pain. And it still is. Although Internet Explorer is a thing of the past now, the variety of mobile devices, different form factors and varying support of HTML5 or Web APIs remains a challenge. However modern development environments are very good at keeping up. With Chrome, Safari and Firefox, the differences between these browsers both on desktop as well as mobile devices aren’t as severe as Internet Explorer and Netscape Navigator were in the early days.
Today’s web applications have to deal with mobile networks, devices roaming across multiple networks and connections that may suddenly drop due to a loss of network coverage. So in some form or another, the challenges of networking remain.
The introduction of z-index manipulation also brought up the grandchildren of the popup window. With centered layers blocking the user access to the actual content of the website. History is surely repeating itself here. Did people not learn from the popup crisis?
Recap and outlook
There are a lot more things on the roadmap of the W3C for the web and the W3C continues to prove its capabilities to solve very complicated challenges in standardization. It has never been more flexible and more complex to build web applications than today.
Some people today tend to differentiate between Frontend (building the actual web app) and Backend (building the server-side components the app communicates with) while the history of the Web has proven this to be a flawed approach. Back in the days, because HTML was very often generated on the server-side and today, because many operations that used to reside on the server (like video and image editing) now quickly move to the browser-side.
“Those that fail to learn from history are doomed to repeat it.”
— Sir Winston Churchill