Joel Spolsky has an seminal article entitled Don't Let Architecture Astronauts Scare You where he wrote
A recent example illustrates this. Your typical architecture
astronaut will take a fact like "Napster is a peer-to-peer service for
downloading music" and ignore everything but the architecture, thinking
it's interesting because it's peer to peer, completely missing the
point that it's interesting because you can type the name of a song and
listen to it right away.
All they'll talk about is peer-to-peer this, that, and the other
thing. Suddenly you have peer-to-peer conferences, peer-to-peer venture
capital funds, and even peer-to-peer backlash with the imbecile
business journalists dripping with glee as they copy each other's
stories: "Peer To Peer: Dead!"
The Architecture Astronauts will say things like: "Can you imagine a program like Napster where you can download anything, not just songs?" Then they'll build applications like Groove that they think are more
general than Napster, but which seem to have neglected that wee little
feature that lets you type the name of a song and then listen to it --
the feature we wanted in the first place. Talk about missing the point.
If Napster wasn't peer-to-peer but it did let you type the name of a song and then listen to it, it would have been just as popular.
This article is relevant because I recently wrote a series of posts explaining why Web developers have begun to favor JSON over XML in Web Services. My motivation for writing this article were conversations I'd had with former co-workers who seemed intent on "abstracting" the discussion and comparing whether JSON was a better data format than XML in all the cases that XML is used today instead of understanding the context in which JSON has become popular.
In the past two weeks, I've seen three different posts from various XML heavy hitters committing this very sin
- JSON and XML by Tim Bray - This kicked it off and starts off by firing some easily refutable allegations about the extensibility and unicode capabilities of JSON as a general data transfer format.
- Tim Bray on JSON and XML by Don Box - Refutes the allegations by Tim Bray above but still misses the point.
- All markup ends up looking like XML by David Megginson - argues that XML is just like JSON except with the former we use angle brackets and in the latter we use curly braces + square brackets. Thus they are "Turing" equivalent. Academically interesting but not terribly useful information if you are a Web developer trying to get things done.
This is my plea to you, if you are an XML guru and you aren't sure why JSON seems to have come out of nowhere to threaten your precious XML, go read JSON vs. XML: Browser Security Model and JSON vs. XML: Browser Programming Models then let's have the discussion.
If you're too busy to read them, here's the executive summary. JSON is a better fit for Web services that power Web mashups and AJAX widgets due to the fact it gets around the cross domain limitations put in place by browsers that hamper XMLHttpRequest and that it is essentially serialized Javascript objects which makes it fit better client side scripting which is primarily done in Javascript. That's it. XML will never fit the bill as well for these scenarios without changes to the existing browser ecosystem which I doubt are forthcoming anytime soon.
Update: See comments by David Megginson and Steve Marx below.