Now, of course, we’ve all seen past the crazily naive idea that anything as mundane as the XML meta-format could make any real difference to anything, since it’s just a solution to the easy part of every task (syntax) and leaves the hard part to be done (semantics). No, we’re much more sophisticated than that now. Now we realise that JSON is the metaformat that will make everything suddenly work.
“At least JSON seems to know that it is only a data format”, says Kurt. “XML didn’t know that. Look at a schema like METS.”
But it looks that way because now we’re not just talking about XML, but about specific schemas: applications of XML. Which of course are what you need if XML is going to actually do anything. And in the same way, it’s only applications of JSON that are actually useful.
The big difference between them is this:
In the XML world, there is a fairly mature set of existing schemas, and an expectation that if you use XML you’re going to pick one of those and use it, or adapt it slightly. Whereas that ecosystem doesn’t (yet) exist for JSON. Which gives people the glorious feeling of freedom that they can use whatever the heck format they want, unconstrained by the tedious business of being compatible with anything else.
That’s where we are now. The next inevitable step is that people discover that JSON applications that should be compatible in theory, are actually not — that there’s a need for profiling, and for long, boring documents specifying the semantics of individual fields within a format.
And everyone will be going “Oh, JSON is so heavyweight” …
And we’ll get away from all that, and start using a new, slimline metaformat that doesn’t have “all that baggage”.
Vamp till fade.
This of course is exactly how we got from SGML to XML. XML started out as a simplified, stripped down version of SGML that got rid of “all that complexity that no-one really needs”. Except it turns out that you do need it, so XML started accumulating all sorts of accessory standards like XML Namespaces, and XML Schema, and XPath, and XPattern, and XPointer. And before you know it, it was way more complex and heavyweight than SGML had ever been. Which is where we came in.
Henry Spencer said it best, back in the 1980s or maybe even the 70s: “Those who do not understand Unix are condemned to reinvent it, poorly.”