[proposed] Several of the key Internet RFCs, especially 1122 and 791 contain a piece of advice due to Jon Postel, which is most often stated as:
Be liberal in what you accept, and conservative in what you
send.
That is, a well-engineered implementation of any of the Internet protocols should be willing to deal with marginal and imperfectly-formed inputs, but should not assume that the program on the other end (that is, the program dealing with the well-engineered implementation's output) will be anything other than rigid and inflexible, and perhaps even incomplete or downright buggy.
This property is valuable because a network of programs adhering to it will be much more robust in the presence of any uncertainties in the protocol specifications, or any individual implementor's failure to understand those specifications perfectly. Though the policy does tend to accommodate broken implementations it is held to more important to get the communication flowing than to immediately (but terminally) diagnose the broken implementations at the expense of the people trying to use them.
The principle is a well-known one in the design of programs
that handle Internet wire protocols, especially network
relays and servers, and it is regularly applied by extension
in any situation where two or more separately-implemented
pieces of software are supposed to interoperate even though the
various implementors have never talked to each other and have
absolutely nothing whatsoever in common other than having
all read the same protocol specification. The principle travels
under several different names, including the Internet credo
,
the IETF maxim
, the Internet Engineering
Principle
, and
the liberal/conservative rule
; the [proposed] term
Postel' Prescription
is a tribute to its inventor, the first
RFC editor
and (until his untimely death) probably the single most respected
individual in the Internet engineering community.