You can't deprecate Broadway
Sunday, December 6, 2015 by Dave Winer

Under an earlier post, Shrutarshi Basu asks:

Without being able to deprecate APIs, how do we go about fixing or evolving API specifications? What's a good way for API providers to learn from how developers are actually using (or not using their APIs) and make appropriate changes over time?

The answer is simply "no" you can't do it, there's no way. That's why you should be careful when designing a new format or protocol, because once you deploy, that's it, it's done, move on to something else.

Now that doesn't mean there won't be a competing format or protocol in the future. But I don't generally think this is a good idea. I have a motto "Two ways to do something is worse than one, no matter how much better the second way is." The reason is simple, you'll have to support the old way even if you've come up with a better way to do it. So you might as well just live with the original way. It's simpler for everyone. 

Look at an example in the real world. In NYC we have a famous street called Broadway that runs approximately north-south most of the length of Manhattan, from the southern tip of the island to the Bronx and Westchester County. It's a very strange street in a city that's a grid of east-west streets and north-south avenues that all meet at right angles because Broadway runs on a diagonal. Everywhere it intersects with an avenue is a "square" (which aren't actually square, btw) and a huge traffic mess. It's mostly avenue but it has a bit of street in it too. 

Broadway is weird but it's here to stay. It's an API to the buildings that were built along the street and to the subway lines and the complex of power, water and sewage lines that run underneath it, and more recently phone and computer networks. To deprecate Broadway would cause huge disruption in the city that grew up around it. Even so I imagine at some point early in the history of the city people debated whether such an odd road made sense, and argued that it should be replaced with an API that was more "modern." But it never happened. To this day Broadway, one of the world's most famous streets, thrives and bustles. Skyscrapers rise alongside it at the bottom of the island. Times Square is where the famous New Year's celebration takes place. All the way up to the northern edge of the city and beyond, the oddball road that's neither a street or an avenue occupies a place in the minds of developers and users, and it ain't going nowhere. 

If your format or protocol takes off, you're stuck with it, but that's a good thing! Now we have a way to interop. All software is shitty and that includes formats and protocols. Embrace its weirdness. Because the weirder it is the more likely it is that it's doing its job.

BTW, while Broadway itself stays where it is, the things built around it change all the time! It was originally the Wickquasgeck Trail, used by Native Americans, it wandered through woods and swamps. The road developed when the Dutch first settled Manhattan, when it was called New Amsterdam. Back then it was a dirt road that started in 17th century village. Today there are amazing structures built along Broadway, even in my lifetime the world of Broadway has been transformed several times. 

New York is a city of constant change. But it accomplishes that by holding some things constant. It's a good model for platform evolution.