Tuesday, June 17, 2014

Examples are not Normative

Once, when I still had the energy, I was reading an Open Geospatial Consortium specification document, and found an inconsistency between a directive stated in the text, and the examples provided to illustrate the directive. This seemed pretty important, since most "Humans" use the examples and ignore the text, so I raised it with the author, who replied to me:

"Examples are not normative"

To me, this seemed to summarize in four words everything there was to dislike about the standards community: dismissive, self-referential ("normative"? really?), and unconcerned with real-world practice. One of the reasons I no longer have the energy.


randy said...

I value your input and have always appreciated your insight on most things GIS related. Please don't get discouraged.

Craig Ringer said...

The Java EE community is afflicted by similar issues - standards designed in isolation from reality, by people who'll never use the technology and haven't built real apps in a long time.

The result is often monstrosities like the JSF2 specification, which is nearly unreadable, partially duplicates functionality from other parts of Java EE 6 that were developed concurrently, conflicts with other parts of Java EE 6, and uses an outmodeled postback flow. "AJAX" support was retrofitted via DOM subtree replacement with server-side processed component subtrees.

Meanwhile, standards driven by real world needs, built by people who engage with real world apps, tend to actually work and make sense. Witness CDI, also part of Java EE 6, but "organically" produced to meet specific and focused needs by developers engaged in real world activity. (It was still super-buggy for the first year, but that's Java EE).

I'm sure you're familar with how the SQL standard can be similar. Why use simple functional notation when we can make up a whole new syntax for this feature! Lets add some random noise-words to make parsing harder! I know, we need more keywords! Lets specify something so insanely hard to implement that no two products will do it the same way!


For all that, so long as we pick and choose standards and are willing to disregard the stupid parts, they're still a lot better than no standards at all.

The main lesson for me, over time, has been that standards need to be driven by real needs, real technology, and real experience. They also need to be flexible and regularly revised.

In the case of examples: If examples aren't normative, don't put them in at all. If they're there, they should be correct. Mistakes happen, but the correct response is "We'll fix the example and document it in the errata of the next update of the standard document".

I completely agree with the total detachment from the real world. A good example here is JPA (the Java Persistence API), which is a great tool ... for very simple uses. In reality you quickly need per-query control over object graph fetching, and there just isn't any. You need a way to handle database specific data types, but there's no extensibility mechanism. You have to break through into underlying provider features to do almost anything "real world" - at which point the standard becomes of very limited value.

Garen said...

ISO documents also use this terminology. If you look at the footnotes in the ISO C or C++ standards for example, the content there is considered "not normative". They're helpful, but not precise descriptions that considered prescriptive parts of the standard itself.

(I first encountered this standards-speak stuff when sending an email to Dennis Ritchie about 15 years ago who informed me that there was in fact not a defect in the K&R C book--but was sorry that I had been confused by a footnote that was "not normative". :))

That said, examples are precise descriptions, and if they occur within the body of a standards document they should be considered normative. This has been true in my experience with ISO, IEE and ECMA standards FWIW.

Mateusz Łoskot said...

Excellent summary!

Mateusz Łoskot said...
This comment has been removed by the author.

About Me

My Photo
Victoria, British Columbia, Canada


Blog Archive


bc (31) it (26) postgis (17) icm (10) sprint (9) enterprise IT (8) open source (8) osgeo (8) video (8) management (6) cio (5) enterprise (5) foippa (5) gis (5) spatial it (5) foi (4) mapserver (4) outsourcing (4) bcesis (3) foss4g (3) oracle (3) politics (3) architecture (2) boundless (2) esri (2) idm (2) natural resources (2) ogc (2) open data (2) opengeo (2) openstudent (2) postgresql (2) rant (2) technology (2) vendor (2) web (2) 1.4.0 (1) COTS (1) HR (1) access to information (1) accounting (1) agile (1) aspen (1) benchmark (1) buffer (1) build vs buy (1) business (1) business process (1) cathedral (1) cloud (1) code (1) common sense (1) consulting (1) contracting (1) core review (1) crm (1) custom (1) data warehouse (1) deloitte (1) design (1) digital (1) email (1) essentials (1) evil (1) exadata (1) fcuk (1) fgdb (1) fme (1) foocamp (1) foss4g2007 (1) ftp (1) gds (1) geocortex (1) geometry (1) geoserver (1) google (1) google earth (1) government (1) grass (1) hp (1) iaas (1) icio (1) industry (1) innovation (1) integrated case management (1) introversion (1) iso (1) isss (1) isvalid (1) javascript (1) jts (1) lawyers (1) mapping (1) mcfd (1) microsoft (1) mysql (1) new it (1) nosql (1) opengis (1) openlayers (1) oss (1) paas (1) pirates (1) policy (1) portal (1) proprietary software (1) qgis (1) rdbms (1) recursion (1) regression (1) rfc (1) right to information (1) saas (1) salesforce (1) sardonic (1) seibel (1) sermon (1) siebel (1) snark (1) spatial (1) standards (1) svr (1) tempest (1) texas (1) tired (1) transit (1) twitter (1) udig (1) uk (1) uk gds (1) verbal culture (1) victoria (1) waterfall (1) wfs (1) where (1) with recursive (1) wkb (1)