Sunday, August 23, 2015

The Harmful Consequences of Postel’s Maxim

Martin Thomson (via Pieter Hintjens):

Jon Postel’s famous statement in RFC 1122 of “Be liberal in what you accept, and conservative in what you send” - is a principle that has long guided the design of Internet protocols and implementations of those protocols. The posture this statement advocates might promote interoperability in the short term, but that short term advantage is outweighed by negative consequences that affect the long term maintenance of a protocol and its ecosystem.


An implementation that reacts to variations in the manner advised by Postel sets up a feedback cycle:

  • Over time, implementations progressively add new code to constrain how data is transmitted, or to permit variations what is received.
  • Errors in implementations, or confusion about semantics can thereby be masked.
  • As a result, errors can become entrenched, forcing other implementations to be tolerant of those errors.

4 Comments RSS · Twitter

[…] Source: Michael Tsai – Blog – The Harmful Consequences of Postel’s Maxim […]

I agree in principle, but in practice this will prove difficult.

The problem with being maximally strict is it does not work for a newcomer. You must interoperate with existing systems. And each new entrant adds their own bugs and deviations from the spec that the next newcomer has to interoperate with.

One can still aim to be loosely "maximally" strict, in the form of "maximally strict such that I can interoperate with existing services", but it still leads to a proliferation of deviations over time.

To quote C. A. R. Hoare: "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult."

The only reason Postel's Law exists in the first place because W3C et al are not only fundamentally incapable of the first but actively delights in indulging the second as much as [in]humanly possible. Heck, most RFCs aren't even comprehensible to mere mortals; and that's just the user documentation, never mind the actual implementation to deliver the service itself.

One need only compare the original HTTP spec against HTTP 2.0, or count the number of utterly inappropriate (and even dangerous) kitchen sinks bolted onto HTML5, to see that not only do these geniuses not understand the serious mistakes and pointless redundancies of their own works, they do not even understand or know how to use correctly the existing specifications upon which their own are ostensibly built.

The entire web infrastructure has already been hijacked to form the world's greatest playground for narcissistic technobullshitters, pathological OCD martinets, and cash-grabbing hucksters, and everything else trickles down from there. If the results still happen to serve anyone else's needs then that's merely an accidental side-effect of their giant self-congratulatory circle-jerk - though will no doubt corrected by their next RFC update.

p.s. While I appreciate Thompson's intent, I expect his own RFC will only exacerbate the problem even more, by confirming every Internet Control Freak's already existing belief that how everyone else uses the Internet is far too important a decision to be left to Them, and it is up to Him to make Them use it Right.

Leave a Comment