Of Cisterns, Spigots, and Pipes
© 30 Oct 2012 Luther Tychonievich
Licensed under Creative Commons: CC BY-NC-ND 3.0
other posts

reuse

Thoughts on kinds and scopes of standardization.

 

I have recently devoted some effort to the world of genealogical technology. In so doing I have become fairly certain that the BetterGEDCOM initiative, though laudable in its aims and possessing many invested partners, will fail. Reflecting on this led me to think about the topic of this post: standardization.

Kinds of Standards

There are many kinds of standards in the world.

Some standards, like the distance between train rails or the frequency of alternating current, are more-or-less arbitrary and present simply because some standard is needed. They point to the central role of standards: reuse and sharing of tools. Standardization makes life easier because it provides a single way for many things to interact.

Sometimes the need for a standard overtakes the ability to plan a rational standard. These less-than-ideal standards I term inertial. Why do browsers support Javascript? Because that’s what web pages use. Why do web pages use it? Because that’s what browsers support. It is pretty widely accepted that Javascript is not one of computing’s cleverest designs, but efforts to replace it have not had much, if any, success.

At the other extreme are prescriptive standards that try to codify and encourage best practices. HTML’s ongoing efforts to deprecate all presentation-level tags is a fine example. Initially, HTML mostly consisted of little easy-to-type descriptions of how things should look, like <b>bold</b> and <i>italic</i> tags. But with HTML 4 there was a push to make such tags non-normative and encourage <span class="example">concept-oriented</span> tags instead.

An example of a very permissive standard is C++, which has monotonically increased over the years until just about anything you might want it to do has at least half a dozen “‍correct‍” implementations and even long-time professional C++ programmers often have aspects of the standard they’ve never touched.

Another useful distinction between standards is the evident tension between completeness and elegance. This distinction deserves its own section.

What to Standardize

Consider, for a moment, plumbing. The behind-the-wall network of pipes is pretty well standardized. The way fluid gets into and out of the pipes is much less standard. My current apartment, for example, has seven distinct ways of controlling water flow distributed between only nine water outlets. Every standard has such boundaries, lines below and above which the standard does not apply.

I find plumbing to be an illuminating example when thinking about standards. Move either line and you are pretty clearly in unwise territory. If we standardized water sources we’d either need to enumerate every possible cistern, well, reservoir, spring, and filtration system (an impossible task) or we’d end up excluding some percentage of users and not be a standard at all. If we standardize spigots we’d not lose the ability to support people, but we would lose the freedom to pick pleasing visible elements of fixtures. A smaller standard—say, not including the threading of pipes, for example—would result in a plumbing dongle explosion.

The quintessential example of a well-selected standardization boundaries is mathematics. Just numbers and sets and operators and other symbolic notations, nothing about measuring and nothing about acting on mathematical results. With this near-perfect separation comes near-perfect reusability; there are very few endeavors that do not benefit from mathematics. This standard is so perfectly split off of the rest of the fields of human endeavor that most people don’t even realize it is a standard or consider that it could have been different.

In the region between the lines where standardization lives there are good designs and bad; but the lines themselves are key. HTML will never survive if it tries to dictate document grammar or computer hardware and arithmetic will never survive if it leaves multiplication to user discretion.

Discussion

The scope of standards is interesting in its own right, but it also applies in other areas of life.

The hardest part of writing technical papers for me is the introduction and conclusion. The plumbing of the middle part is relatively straightforward, but figuring out how to say “‍this hooks up to parts of the real world you care about‍” when I don’t know what they care about is an ongoing challenge. I don’t know their cisterns and spigots so I either have to know the standard fittings (“‍here’s my bit on problem X‍” for some known X) or I need to try to guess, enumerating enough connections that they’ll believe my claim “‍this has broad applicability.‍”

Communication is difficult in part because of standards. There is a standard in my culture, for example, that “‍how are you‍” means “‍hi‍” and the response is “‍fine.‍” Missing that standard is only vaguely annoying, education but in education it can be much worse; notions such as “‍expert blind spot‍” can be modeled as a teacher who assumes students have a standard they do not, in fact, have.

What are the standards you use every day? Do they have the right boundaries?




Looking for comments…



Loading user comment form…