Robustness

tl;dr Everyone knows that you should be conservative in what you send and liberal in what you accept. What this article presupposes is: maybe you shouldn’t?

I’ve long “known” that one of main reasons the internet succeeded is the robustness principle, or Postel’s law:

Be conservative in what you do, be liberal in what you accept from others.

So it was really interesting to read a take suggesting that the principle is not an unalloyed good. Once again, “it depends” proves itself the only universal in software engineering.

Essentially, the author argues that being tolerant of bad input bakes sloppiness and ambiguity into the protocol. This ambiguity—this undefined behavior—becomes a compounding series of edge cases. Different implementations fill the void in different ways. This cranks up the difficulty for creating a new implementation: you can follow the letter of the spec, and still run afoul of the entrenched bugs of older implementations, which have become the de facto standard. (The implied argument is that having multiple implementations contributes to the health of a protocol’s ecosystem.)

In contrast, an active community will in theory close any gaps, and choke off undefined behavior. Implementations that don’t stay abreast of changes to the protocol will be shunned and abandoned by the community in favor of those that do. And a nifty side effect of having well-defined behavior is that new implementations will have an easier time getting off the ground.

Without an active community, then, Postel’s law makes a lot more sense. If you can’t rely on things to get better, at least you’re capable of dealing with the muck.

Things tend toward entropy, though, and software is definitely no exception. Today’s hot new project is tomorrow’s stagnant backwater. I don’t think these sorts of scenarios—that is, the slow slide towards unpopularity at best and obsolesence at worst—tend to be well managed. It just sort of happens. Thus, Postel’s law must still be taken into account. But if you’ve been rigorous in the early days, maybe you’ll wind up better prepared for the long dark.

The article was a good reminder that even the bestest of practices is worth reconsidering in light of the relevant tradeoffs.