Lessons of standardization

Stefan Tilkov tipped me off to Adam Bosworth's lessons learned in creating standards:

  1. Keep the standard as simple and stupid as possible.

  2. The data being exchanged should be human readable and easy to understand.

  3. Standards work best when they are focused.

  4. Standards should have precise encodings.

  5. Always have real implementations that are actually being used as part of design of any standard.

  6. Put in hysteresis for the unexpected.

  7. Make the spec itself free, public on the web, and include lots of simple examples on the web site.

Bosworth goes into each of these in detail, I've only reproduced the first sentence.

I feel like we achieved these well for GeoJSON. It's a simple, readable, precise, and stupid format. For example, coordinates are represented in [x, y] pairs instead of arrays of x and arrays of y like you'd implement for software optimized for performance. Stupid in that sense, but much more transparent. The lack of feature attribute schemas and feature classes also seems pretty stupid to some people, but that's fine.

GeoJSON focuses on serialization of basic GIS features. It doesn't create any new protocols. It doesn't require any new abstract models of the world. The spec is plain HTML with links so you can refer to sections when you throw the book at someone, short and sweet, has clear examples, and no bizarre click-through license agreement. Not everything in GeoJSON had a real implementation before publication, but most elements of it had several independent implementations.

Update (2009-11-10): Dale Lutz has blogged this too.