JSON is to XML as what is to Node?
Wednesday, November 18, 2015 by Dave Winer

When Adam Bosworth evangelized me on using XML in 1998 it was simply a way of representing data in a text-based format. Data in XML could go anywhere that text could, and that was a big deal, because the web was booming, and the thing it was best at was transmitting text.

I was reluctant to get involved, because it was being run by a bunch of big companies, and I had recently seen what they can do to simple ideas with the OpenDoc consortium. All of a sudden they become confusing messes when they get involved. They have their reasons, I don't want to get into that now. 

I was told no matter what, I could use XML in the simple mode, with no schema or query languages, just as a way of transmitting data over text.

Sure enough the complexities came, but I held the line, with three simple formats: XML-RPC, RSS and OPML -- none of which built on the architecture astronaut protocols invented by the W3C working groups.

17 years later I would be in a meeting with people I really respect and they said loudly and passionately that they hate XML, for all the reasons I was concerned about in 1998. My point is and was, we've done a lot of building on XML, and the way we use it is exactly as if it were JSON, so really we're doing the same thing with XML that we're now doing with JSON. (All my new formats are JSON, but there's a huge base of continually updating data that's in the XML formats we use.)

The moral of the story is this. Watch out when you commit to a platform that has a major flaw. The flaw in XML was that it was being run by a consortium of large companies. And in Node it's the the way we do async calls, which I've come to love, the same way a smoker loves the way smoke burns his throat (spoken as a former smoker) and a victim of Stockholm Syndrome comes to love his tormentor. 

I think I've done more complex async stuff in Node than 99.999 percent of the people who use it. I am kind of proud of this, though I know as a language implementor myself, none of it is necessary. The underlying OS could hide the messy details from the programmer. And get this, I have no doubt that a replacement will come along, very different from Node in every way, so none of our code works, but it will solve this problem in a neat way, burying the async stuff in an OS layer where it belongs, and all of a sudden we'll be using a backwater, semi-obsolete environment. I worry about this a lot. 

In tech we love to throw the baby out with the bathwater, and I have left a trail of hard-won victories behind me. It would be a lot easier if there was only one syntax that does what basic XML does. But we have two. And for the same reason, I see trouble ahead for Node. 


  • See also this piece saying that XML and JSON aren't comparable. I disagree, as you can see in the piece above.