Be strict when sending and tolerant when receiving.

RFC 1958 § 3.9 reads:

3.9 Be strict when sending and tolerant when receiving.

Implementations must follow specifications precisely when sending to the network, and tolerate faulty input from the network. When in doubt, discard faulty input silently, without returning an error message unless this is required by the specification.

This design philosophy sprang to mind while tightening up some details on an API I was updating (explicitly setting Content-Type: application/json, to be specific).

The more I thought about it, the more I realized this is pretty sound advice everywhere. Tech-wise, not just APIs, but in user experience, and even the design of entire technology architectures. And in real life, anything from conversations to relationships.

What does everyone think? Am I totally insane, or is there some validity here?