Bruce's tour of the Sausage Factory

Bruce Lawson

Bruce's tour
of the Sausage Factory

Bruce Lawson

Picture of a woman stirring a huge cauldron in a sausage factory
Bismarck, with quote 'The less men know of the making of laws and sausages, the better they sleep at night.'
metal cooking pot containing a murky brown liquid and some semi-cooked cow placenta
vintage advertisment of a lobster seasoning itself in a pan
Line drawing of an anthropomorphic sausage in chef's hat, with knife and fork
The noisiest of those competitive battles (between suppliers) will be about standards … in the computer industry, new standards can be the source of enormous wealth, or the death of corporate empires. With so much at stake, standards arouse violent passions.
The Economist, 1993
Page from 1908 'Music Trade Review', headlined 'Gathering of the Player Men at Buffalo'
boxes of piano rolls

Dec 10, 1908, Buffalo, NY

Piano player manufacturers gathered to solve the vexed question of the scale to be used for the 88-note players…At present 6 and 9 perforations to the inch represent the two extremes.

Addresses by various representatives who argue[d] that their position is the correct one.

Mr Pletcher
(Melville Clark Piano Co)

six-to-the-inch perforations afforded greater possibilities from a musical standpoint…Mr Pletcher aded, however, that his company were willing to abide by the sense of the convention.

Mr Heyl
(Chase and Baker Co)

spoke at length on the subject. In support of the statement that 88 notes were needed, Mr Heyl offered the following figures: Out of 3,838 compositions, only 1,130 needed only 65 notes; 2,425, 78 notes; 2,542 needed 80 notes; 2,660 required 83 notes, and 3,676 could be cut in an 85-note range.

Mr Votey
(Aeolian Co.)

The new spool has clutches in the end instead of pins…mak[ing] proper tracking a simpler proposition…The Aeolian Co have not, nor will not, patent the clutch, offering it for the free use of other manufacturers.

P.B. Klugh
(Cable Company)

The nine-to-the-inch scale had been adopted by that company and they were not open to argument on the subject as such a size had given entire satisfaction.

9 perforations per inch

…a standard width of 11¼ inches, leaving a margin in each side for future development.

JH Dickinson suggested that the player-piano and music roll manufacturers present effect a permanent organisation for meeting and disucssing such questions.

Line drawing of a sausage dressed as Queen Victoria
Line drawing of a horse-drawn railway captioned 'the first railway coach'
Today, 60% of the world's railways use a gauge of 1,435 mm
(4 ft 8 1⁄2 in), known as standard or international gauge, also  Stephenson gauge after George Stephenson.
Line drawing of a horse-drawn railway, captioned 'the first railway coach'
Line drawing of a horse-drawn railway captioned 'the first railway coach'
Break of gauge would prove to be a nightmare during the American Civil War (1861–1865), often hindering the Confederacy's ability to move goods efficiently over long distances.
Track gauge in the United States (Wikipedia)
Following the Civil War, trade between the South and North grew and the break of gauge became a major economic nuisance. After considerable debate and planning, most of the southern rail network was converted from 5 ft (1,524 mm) gauge to 4 ft 9 in (1,448 mm) gauge, over two remarkable days beginning on Monday, May 31, 1886.
Open standards will give us interoperable software, information and data in government and will reduce costs by encouraging competition, avoiding lock-in to suppliers or products and providing more efficient services.
UK government
three horses' arses
Line drawing of an anthropomorphic sausage dressed as a roman
a fat horse
Fat Horse Slim campaign webpage
A sausage on a skateboard, wearing casual clothing

HTTP referer

The misspelling referer originated in the original proposal by computer scientist Philip Hallam-Baker to incorporate the field into the HTTP specification. The misspelling was set in stone by the time of its incorporation into the Request for Comments standards document RFC 1945.

CSS colours

The first versions of Mosaic and Netscape Navigator used the X11 colors as the basis for the Web colors list, as both were originally X applications. The W3C specifications SVG and CSS level 3 module Color eventually adopted the X11 list with some changes. It is a superset of the 16 “VGA colors” defined in HTML 3.2 and CSS level 1.

X-11 colours

It is not known who originally compiled the list. The list does not show a continuity either in selected color values or in color names, and many color triplets have multiple names. Despite this, graphic designers and others got used to them, making it practically impossible to introduce a different list.

CSS colour…or ...?

CSS colour…or ...?

A sausage dressed as Dr Who, in front of a Tardis

Retrospective standardisation


Special thanks to Richard Williamson for creating the first implementation of canvas in Safari, from which the canvas feature was designed.
WHATWG Web Apps spec: acknowledgements
HTML5 acknowledgements page, 'Bruce Lawson' highlighted

<canvas> sausage

The path to proper standardization wasn’t very smooth. This began with the lack of a proper proposal coming from Apple’s side, resulting in the initial specification being based on reverse engineering works by Ian “Hixie” Hickson, editor of the HTML5 specification.
Thank you, Microsoft; HTML5 Canvas is a go!, June 2010


creepy still from old horror film: sinister shadow walks upstairs


Bruce: What’s the biggest danger to a free, open Web at the moment?
Hixie: Patents.
HTML5 Doctor: Interview with Ian Hickson
email from Apple patent lawyer claiming patent on canvas, 'However, in the event that the Web Applications 1.0 Working Draft, dated March 24, 2005, becomes part of a formalized draft standard at W3C or IETF, for example, Apple is prepared to address the disclosure/licensing rules of such organizations.'
sausage, dead, with an axe in its head. A big letter 'P' is saying 'muhahaha!'

<canvas />

canvas was originally implemented in Safari as an empty tag like img, but standards and other browsers have all gone with making it require an explicit close tag, to support fallback content.
Maciej Stachowiak, WebKit blog, 20 September 2006

Fallback content

When a canvas element represents embedded content, the user can still focus descendants of the canvas element (in the fallback content). When an element is focused, it is the target of keyboard interaction events (even though the element itself is not visible). This allows authors to make an interactive canvas keyboard-accessible.
canvas spec
<video src="foo.vdo">
  <p>Your browser is, like, a massive loser.<p>
  <img src=loser.gif alt="loser!" />
  <p><a href="foo.webm">Download the video.</a><p>

<picture> YAY!

  <source src=…>
  <source src=…>
  <img src=… alt="I'm accessible!">

Why <picture>, not <pic>?

robin says 'it's only 8 bytes', batman hits him saying 'perf matters!
6 pitchers of beer on a bar.

XHTML2 <img>

<img src="W3C.png">


Today the Director announces that when the XHTML 2 Working Group charter expires as scheduled at the end of 2009, the charter will not be renewed.
WC3 July 2, 2009
A sausage, dressed formally as a judge

A really totally brilliant quote by a great thinker about XHTML2

XHTML 2 was a beautiful specification of philosophical purity that had absolutely no resemblance to the real world.
Me (apparently)
Some things are clearer with hindsight of several years. It is necessary to evolve HTML incrementally. The attempt to get the world to switch to XML… all at once didn't work. The large HTML-generating public did not move, largely because the browsers didn't complain.
Reinventing HTML - Timbo 27 Oct 2006

The HTML5 parsing algorithm

HTML5 is not trying to support old browsers. It's trying to support old content.

HTML 3.2 "Wilbur"

Relative to HTML 2.0, HTML 3.2 adds widely deployed features such as tables, applets, text flow around images, superscripts and subscripts.

What happened to HTML3?

HTML 3.0 was a proposal for extending HTML published in March 1995 … However, the difference between HTML 2.0 and HTML 3.0 was so large that standardization and deployment of the whole proposal proved unwieldy. The HTML 3.0 draft has expired, and is not being maintained.

Boring tangent

HTML 3.0 supports the following kinds of fields:

HTML3 spec "forms"

Scribble on image?

These fields allow the user to scribble with a pointing device (such as a mouse or pen) on top of a predefined image … If the user agent can't display images, or can't provide a means for users to scribble on the image, then the field should be treated as a text field.


<FIG SRC="nicodamus.jpeg">
  <CAPTION>Ground dweller: <I>Nicodamus bicolor</I>
  builds silk snares</CAPTION>
  <P>A small hairy spider light
   fleshy red in color with a brown abdomen.

HTML5 <figure>

 <img src="icodamus.jpeg">
 <figcaption>Ground dweller: <I>Nicodamus bicolor</I>
   builds silk snares</figcaption>
 <p>A small hairy spider …
 <small>J. A. L. Cooke/OSF</small>
workers paving a path that is between two 'cowpaths'

HTML 3.2

Widely deployed rendering attributes are included where they have been shown to be interoperable. SCRIPT and STYLE are included to smooth the introduction of client-side scripts and style sheets.
HTML 3.2 DTD comment
A tearful sausage, being shunned by a bug hand pushing it away


man alone at party, surrounded by kissing couples

What's wrong with AppCache?

AppCache is declarative -- you give the browser a manifest and magic happens. This has well-documented limitations.
Alex Russell (sinister mastermind at Google)


The appcache API is another big mistake. It’s the best example of not understanding the problem before designing a solution, and I’m still trying to fix that mess.
screenshot of Jake Archibald's A List Apart article 'appcache is a douchebag'
Service Workers

Service Workers CheatSheet

cutaway diagram of Apollo lunar module
cartoon walrus in front of lunar module
cartoon leg with lampshade on top, next to walrus and lunar module
  ("/*", "/assets/v1/wrkr.js").then(
    function(serviceWorker) {
          // call window.location.reload()
      function(why) {
        console.error("failed!:", why);
browser shows nothing when not connected to web
browser shows site when connected to web worker, even though not connected to web
    function(event) {
  if (event.request.context == 'image'
    && new Date().getDay() == 4) {
    ) // thx @jaffathecake
  } // more:
Slinky-like extensible sausage

Extensible Web Manifesto

Browser vendors should provide new low-level capabilities that expose the possibilities of the underlying platform as closely as possible. They should also seed the discussion of high-level APIs through JavaScript implementations of new features
sausage sitting in cart pulled by snail; sign ssays maximum speed 5 kph

Why are Standards slow?

Why is everything else around us developing so fast, but the web is so slow to adopt anything?
Mark Roberts' email to WHATWG, 10 Oct 2013

Hixie's reply:

  1. Have someone design the feature.
  2. Have someone write a specification for it.
  3. Have some people write tests for it.
  4. Have one browser implement it.
  5. Have another browser implement it.
  6. Have another browser implement it.
  7. Have another browser implement it.
  8. Have people document it.

Compared with…

This is in contrast to "everything else", which just needs:
  1. Someone to implement it.

There's an app API for that

Apple iOS Developer Library — Pre-Release: HealthKit Constants Reference

Fortune 500 firms in 1955 vs. 2014

Almost 88% of the companies from 1955 have either gone bankrupt, merged, or still exist but have fallen from the top Fortune 500 companies.
American Enterprise Institute
Superhero images: Web Component and Shadow DOM
web components' rearranging to its anagram 'spec.own. entomb'

Web Components

Web Components enable Web application authors to define widgets with a level of visual richness and interactivity not possible with CSS alone, and ease of composition and reuse not possible with script libraries today.
Introduction to Web Components

Extend existing HTML elements

var p = Object.create(HTMLButtonElement.prototype);
var FancyButton = document.registerElement
        {extends: 'button', prototype: p});
<button is="fancy-button">
In order for the open web to compete with its walled competitors, there must be a clear path for good ideas by web developers to become part of the infrastructure of the web. We must enable web developers to build the future web.
Virtuous sausage, dressed like an angel

How to participate

Browse, discuss, propose on W3C Specifiction forum.

Use cases > pet proposed syntax. Read and use Mozilla's WebAPI/DesignGuidelines.

sausage dressed as Lord Kitchener, pointing at viewer, strapline reads 'standards need you'

Thanks for help

Image acknowledgments