Web Intents
» see webintents.org as it lived, on the wayback machine
~ the last words ~
Android solved a problem in 2008 that the web never has. An app declares that it can handle sharing, or picking a contact, the system keeps a list of who declared what, and when some other app needs that job done the user gets a menu of installed candidates. No app has to know the name of any other app. Paul Kinlan of Google announced Web Intents in December 2010 to bring that arrangement to pages, and put a prototype on GitHub shortly after.
The shape was faithful to the original. A service page registered itself with a tag naming an action and a MIME type, something like share with image/*. A client page constructed an intent for that action and handed it to the browser, which opened a picker of every service the user had registered for it. The verbs lived at webintents.org as URLs, so share was literally http://webintents.org/share, which meant the vocabulary was extensible by anybody willing to publish a page at an address.
In 2012 I was writing code for a living and I never once registered an intent handler. Very few people did. A feature that ships carrying an experimental label and no production users is a feature most working programmers never actually meet, and Web Intents spent its whole life in that condition: native in Chrome 18 through 23, with an experimental label on it the entire time.
~ the record ~
| Born | December 2010, announced by Paul Kinlan with a prototype pushed to GitHub |
|---|---|
| Peak | native in Chrome 18 through 23, with a W3C task force and a Mozilla counterpart |
| Killed | 1 November 2012 |
| Lifespan | just under two years |
| Made by | Google, alongside a W3C Web Intents task force |
| Killed by | an API developers found too hard to wire up, and a picker users never asked for |
~ what it was supposed to fix ~
The use case everybody reached for first was sharing. In 2012 a share button was a row of hardcoded logos, and every one of those logos was a decision somebody at the publisher had made about which four companies existed. Web Intents replaced the row with a verb. Your page said it had a thing worth sharing and the browser produced whatever the reader had already said they used, including services the publisher had never heard of.
Underneath the demos, the wiring was the problem. Services and clients talked over postMessage, and Kinlan was blunt about it years later, calling the developer experience of building a service on that API incredibly complex. There was also a cold start nobody had an answer for: a picker is worthless until the reader has registered services, and readers register services only when a picker is useful. Nothing in the design broke that loop.
~ the day it died ~
At 11:47 on the morning of Thursday 1 November 2012, Greg Billock posted to [email protected] under the subject "Status of web intents in Chrome." The whole message runs to one paragraph. Google had shipped the experiment to gather data, and having gathered enough, had disabled it as of version 24. He named "a number of areas for development in both the API and specific user experience in Chrome," then signed off with "We're still interested in this problem space and will continue to explore it."
That was the announcement. There was no deprecation period and no migration guide, because there was nothing in production to migrate. Mozilla had been building Web Activities for Firefox OS against the same problem and the two camps had talked about unifying; neither survived its parent platform's attention span. webintents.org stopped resolving some years later and does not come back.
~ the inheritance ~
The idea was correct and the packaging was wrong, which is why pieces of it kept returning under other names. The Web Share API arrived a few years on and did the sharing case properly by handing off to the operating system's own picker instead of building a second one inside the browser. Web Share Target lets an installed web app appear in that list. Neither is as general as an intent registry, and both work, which is roughly the trade every successful version of this idea has made.
Kinlan came back to it in August 2017 with a post about rebuilding the whole concept on top of a tiny message-passing library, opening with the observation that interprocess communication and service discovery have never been solved on the web. That was five years after the shutdown note, from the person who started it, about a problem still sitting exactly where he left it.
~ leave a rose ~
an anonymous tribute. one rose per visitor per day.
@}-->-- ... roses left here
~ leave a wreath ~
a rose fades by morning. a wreath stays on this grave for good, with your name on it.
from $1, paid once through stripe. it keeps the graveyard running: the hosting and the nightly digging. adopt it and the headstone reads "maintained in memory by" you. the groundskeeper plants new wreaths at the next tending, usually within a day.
» one email a week: new graves and the anniversaries of the dead. subscribe
other protocols: SSL 3.0, Qube, Usenet (the ISP-bundled era), OpenBitTorrent
also died in 2010-2014: S3 Graphics, AnimeNation, Facebook Camera
~ leave a note ~
visitors before you have left these graveside notes. anonymous welcome.