Robustness principle
Appearance
The Internet Engineering Task Force (IETF) has a numbered series of Requests for Comments (RFCs) that define the protocols that make up the Internet. In the RFC that defines the Transmission Control Protocol, RFC 793, Jon Postel defined the Robustness Principle (also known as Postel's Law). It says, "be conservative in what you do, be liberal in what you accept from others." This principle recommends that Internet software developers write software that adheres to the RFCs as carefully as possible while accepting input that does not strictly follow the RFCs.
A later RFC (RFC 3117) points out that this principle can lead to deployment problems:
- "Counter-intuitively, Postel's robustness principle ("be conservative in what you send, liberal in what you accept") often leads to deployment problems. Why? When a new implementation is initially fielded, it is likely that it will encounter only a subset of existing implementations. If those implementations follow the robustness principle, then errors in the new implementation will likely go undetected. The new implementation then sees some, but not widespread deployment. This process repeats for several new implementations. Eventually, the not-quite-correct implementations run into other implementations that are less liberal than the initial set of implementations. The reader should be able to figure out what happens next."