As a counterpoint to Mason's example, my experience with the [Session Initiation Protocol][1] was that while different stacks would interpret the relevant RFCs differently (and I suspect this happens with _every_ standard ever written), being (moderately) liberal in what you accept means that you can actually make calls between two devices. Because these devices are usual physical things as opposed to pieces of software on a desktop, you simply have to be liberal in what you accept, or your phone can't call another phone of a particular make. That doesn't make your phone look good!

But if you're writing a library, you probably don't have the problem of multiple parties interpreting a common standard in mutually incompatible ways. In that case, I'd say be strict in what you accept, because it removes ambiguities.

The Jargon File also has a [horror story][2] on "guessing" a user's intent.


  [1]: https://www.rfc-editor.org/rfc/rfc3261
  [2]: http://www.catb.org/~esr/jargon/html/D/DWIM.html