Don't Invent XML Languages
The X in XML stands for "Extensible"; one big selling point is that you can invent your own XML languages to help you solve your own problems. But I've become convinced, over the last couple of years, that you shouldn't. Unless you really have to. This piece explains why.
Context & Ripple Effects
Bray's argument lands at the end of a year in which the feed ecosystem was actively litigating format choices: Microsoft's RSS team had pressed the case that feeds must be well-formed XML if they were going to be consumed by anything beyond a browser, while EirePreneur traced how OPML kept spreading as the de facto interchange format for outlines precisely because nobody had to agree to adopt it. A parallel rant from Smalltalk Tidbits had already made the blunter point that someone simply has to say these things out loud.
Against that backdrop, the essay is a norm-setting move from one of XML's co-editors: the 'X' sold extensibility, but Bray now argues the default should be reusing an existing vocabulary — Atom or RSS for syndication-shaped problems — and inventing a language only when nothing fits.
First-order effects
- Developers weighing a custom XML dialect for a new project get an explicit argument — from inside the XML establishment itself — that reuse of established vocabularies is the correct default, which shifts the burden of proof onto anyone proposing a new schema.
Second-order effects
- Format authors who might otherwise have shipped bespoke dialects face pressure to extend existing ones instead, concentrating mindshare and tooling investment on a smaller set of shared vocabularies like the feed formats already contested through 2005.
Third-order effects
- If the pattern holds, XML ecosystems consolidate around a few core languages with disciplined extension mechanisms rather than a long tail of one-off dialects — making interoperability, not expressiveness, the measure of a good format decision.
The trend: Data-format design is moving from per-project vocabulary invention toward reuse and extension of a small set of shared standards, with respected spec authors increasingly policing the temptation to roll your own.