Programming the Web, Pt. II It took the United States eight years to put a man on the Moon. That was time between John F Kennedy’s call to Congress in 1961 and Neil Armstrong getting his boots dirty on the lunar surface, in July 1969 – 45 years ago this month.
Yet it took 17 years, from the start of CSS, to get widespread support for custom fonts in HTML.
You read that right. It was easier to plan and co-ordinate the vast and lumbering military and civilian resources required for a pioneering space flight and to bring a crew back than produce a piece of paper on how web pages should be displayed in a browser.
Even taking into account that much of the delay was related to licensing problems, it doesn’t mark out standards bodies or browser makers as innovators.
Part of the problem is that neither standards bodies nor browser makers are made up of web developers and there's often a considerable disconnect between what developers want and what standards bodies and browser makers focus their attention on.
Even when standards bodies run like well-oiled machines, which is rare, few would argue that they make for a good source of innovation on the web.
Standardisation is, by its very nature, a long, drawn-out process designed to achieve consensus, not drive innovation. In fact, there's an argument to be made that taking 17 years to get support for custom fonts is a feature, not a bug, in the system.
Consensus conschmensus – why can't we just get the job done?
Consensus is needed. Arguments need to be entered into, sensitivities must be catered for, everyone with a vested interest or sensitive ego must be carried along.
Do I sound critical? Consensus is vital to the web and without web standards, we would not have the web we have today, but if web standards were the end of the story there would be no innovation on the web. The standards themselves are not the web. It's people who make the web and it’s the back and forth between developers and those slow-moving standards bodies that make the web a better place.
Web developers, though, want to build new things when they think of them, not wait for standards bodies to get round to endorsing them and for the browser makers to finally get around to shipping them.
The slow pace of new features on the web means the web is constantly playing catch up with proprietary platforms where new features come faster and more regularly.
And for developers, those new features make native platforms more appealing than working on the web. Even if you were going to only support browsers that update every six weeks, like Chrome and Firefox, you’re still waiting a minimum of 24 weeks for new features to progress from experimental builds to actually shipping.
Hey, problem – meet solution
I feel a solution is presenting itself to this problem. It’s a collection of new tools, referred to as Web Components, that promises to put the power of creating new features into the hands of web developers. Ironically, it’s coming to us through yet another standards process – the World Wide Web Consortium (W3C).
Yes, Web Components is a specification that is a catch-all for several interrelated tools designed to make it much easier for anyone to add new elements to HTML. Some of these tools, like the mysterious sounding Shadow DOM, are already making their way into web browsers.
Others, particularly Custom Elements, let you define your own HTML elements and their behaviour, and are just starting to arrive. All of them will hopefully be available in all the major desktop and mobile web browsers within the next 12 to 18 months.
Developers seem prone to hyperbole when talking about Custom Elements and Web Components in general - and with good reason. Web Components let you create, package and reuse your own HTML elements.
- Google AI
- Google Cloud Platform
- Google Nest
- Internet Explorer
- Microsoft 365
- Microsoft Build
- Microsoft Edge
- Microsoft Office
- Microsoft Surface
- Microsoft Teams
- Office 365
- Patch Tuesday
- SQL Server
- Tavis Ormandy
- Visual Studio
- Visual Studio Code
- Windows 10
- Windows 11
- Windows 7
- Windows 8
- Windows Server
- Windows Server 2003
- Windows Server 2008
- Windows Server 2012
- Windows Server 2013
- Windows Server 2016
- Windows XP
- Xbox 360