<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.1.1 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-thomson-postel-was-wrong-01" category="info">

  <front>
    <title abbrev="Elephants Out, Donkeys In">The Harmful Consequences of Postel's Maxim</title>

    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>martin.thomson@gmail.com</email>
      </address>
    </author>

    <date year="2017" month="June" day="12"/>

    
    
    

    <abstract>


<t>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.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Of the great many contributions Jon Postel made to the Internet, his remarkable
technical achievements are often ignored in favor of the design and
implementation philosophy that he first captured in the original IPv4
specification <xref target="RFC0760"></xref>:</t>

<t><list style='empty'>
  <t>In general, an implementation should be conservative in its sending behavior,
  and liberal in its receiving behavior.</t>
</list></t>

<t>In comparison, his contributions to the underpinnings of the Internet, which are
in many respects more significant, enjoy less conscious recognition.  Postel’s
principle has been hugely influential in shaping the Internet and the systems
that use Internet protocols.  Many consider this principle to be instrumental in
the success of the Internet as well as the design of interoperable protocols in
general.</t>

<t>Over time, considerable changes have occurred in both the scale of the Internet
and the level of skill and experience available to protocol and software
designers.  Much of that experience is with protocols that were designed,
informed by Postel’s maxim, in the early phases of the Internet.</t>

<t>That experience shows that there are negative long-term consequences to
interoperability if an implementation applies Postel’s advice.  Correcting the
problems caused by divergent behavior in implementations can be difficult.</t>

<t>It might be suggested that the posture Postel advocates was indeed necessary
during the formative years of the Internet, and even key to its success.  This
document takes no position on that claim.</t>

<t>This document instead describes the negative consequences of the application of
Postel’s principle to the modern Internet.  A replacement design principle is
suggested.</t>

<t>There is good evidence to suggest that designers of protocols in the IETF widely
understand the limitations of Postel’s principle.  This document serves
primarily as a record of the shortcomings of His principle for the wider
community.</t>

</section>
<section anchor="time" title="Protocol Decay">

<t>Divergent implementations of a specification emerge over time.  When
variations occur in the interpretation or expression of semantic components,
implementations cease to be perfectly interoperable.</t>

<t>Implementation bugs are often identified as the cause of variation, though it is
often a combination of factors.  Application of a protocol to new and
unanticipated uses, and ambiguities or errors in the specification are often
confounding factors.</t>

<t>Of course, situations where two peers disagree are common, and should be
expected over the lifetime of a protocol.  Even with the best intentions, the
pressure to interoperate can be significant.  No implementation can hope to
avoid having to trade correctness for interoperability indefinitely.</t>

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

<t><list style="symbols">
  <t>Over time, implementations progressively add new code to constrain how data is
transmitted, or to permit variations in what is received.</t>
  <t>Errors in implementations, or confusion about semantics can thereby be masked.</t>
  <t>These errors can become entrenched, forcing other implementations to be
tolerant of those errors.</t>
</list></t>

<t>For example, the original JSON specification <xref target="RFC4627"/> omitted critical
details on a range of points including Unicode handling, ordering and
duplication of object members, and number encoding.  Consequently, a range of
interpretations were used by implementations.  An update <xref target="RFC7159"/> was
unable to correct these errors, instead concentrating on defining the
interoperable subset of JSON.  I-JSON <xref target="RFC7493"/> defines a new format that is
substantially similar to JSON without the interoperability flaws. I-JSON also
intentionally omits some interoperability: an I-JSON implementation will fail
to accept some valid JSON texts.  Consequently, most JSON parsers do not
implement I-JSON.</t>

<t>An entrenched flaw can become a de facto standard.  Any implementation of the
protocol is required to replicate the aberrant behavior, or it is not
interoperable.  This is both a consequence of applying Postel’s advice, and a
product of a natural reluctance to avoid fatal error conditions.  This is
colloquially referred to as being “bug for bug compatible”.</t>

<t>It is debatable as to whether decay can be completely avoided, but Postel’s
maxim encourages a reaction that compounds this issue.</t>

</section>
<section anchor="the-long-term-costs" title="The Long Term Costs">

<t>Once deviations become entrenched, there is little that can be done to rectify
the situation.</t>

<t>For widely used protocols, the massive scale of the Internet makes large-scale
interoperability testing infeasible for all but a privileged few.  Without good
maintenance, new implementations can be restricted to niche uses, where the
problems arising from interoperability issues can be more closely managed.</t>

<t>This has a negative impact on the ecosystem of a protocol.  New implementations
are important in ensuring the continued viability of a protocol.  New protocol
implementations are also more likely to be developed for new and diverse use
cases and often are the origin of features and capabilities that can be of
benefit to existing users.  These problems also reduce the ability of
established implementations to change.</t>

<t>Protocol maintenance can help by carefully documenting divergence and
recommending limits on what is both acceptable and interoperable.  The
time-consuming process of documenting the actual protocol - rather than the
protocol as it was originally conceived - can restore the ability to create and
maintain interoperable implementations.</t>

<t>Such a process was undertaken for HTTP/1.1 <xref target="RFC7230"></xref>. This effort took more than
6 years to document protocol variations and describe what has - over time -
become a far more complex protocol.</t>

</section>
<section anchor="a-new-design-principle" title="A New Design Principle">

<t>The following principle applies not just to the implementation of a protocol,
but to the design and specification of the protocol.</t>

<t><list style='empty'>
  <t>Protocol designs and implementations should fail noisily in response to
  bad or undefined inputs.</t>
</list></t>

<t>Though less pithy than Postel’s formulation, this principle is based on the
lessons of protocol deployment.  The principle is also based on valuing early
feedback, a practice central to modern engineering discipline.</t>

<section anchor="fail-fast-and-hard" title="Fail Fast and Hard">

<t>Protocols need to include error reporting mechanisms that ensure errors are
surfaced in a visible and expedient fashion.</t>

<t>Generating fatal errors in place of recovering from a possible fault is
preferred, especially if there is any risk that the error represents an
implementation flaw.  A fatal error provides excellent motivation for
addressing problems.</t>

<t>In contrast, generating warnings provide no incentive to fix a problem as the
system remains operational.  Users can become inured to frequent use of
warnings and thus systematically ignore them, whereas a fatal error can only
happen once and will demand attention.</t>

<t>On the whole, implementations already have ample motivation to prefer
interoperability over correctness.  The primary function of a specification is
to proscribe behavior in the interest of interoperability.  Specifications
should mandate fast failure where possible.</t>

</section>
<section anchor="implementations-are-ultimately-responsible" title="Implementations Are Ultimately Responsible">

<t>Implementers are encouraged to expose errors immediately and prominently,
especially in cases of underspecification.</t>

<t>Exposing errors is particularly important for early implementations of a
protocol.  If preexisting implementations generate errors in response to
divergent behaviour, then new implementations will be able to detect and correct
their own flaws quickly.</t>

<t>An implementer that discovers a scenario that is not covered by the
specification does the community a greater service by generating a fatal error
than by attempted to interpret and adapt.  Hiding errors can cause long-term
problems.  Ideally, specification shortcomings are taken to protocol
maintainers.</t>

<t>Unreasoning strictness can be detrimental.  Protocol designers and implementers
expected to exercise judgment in determining what level of strictness is
ultimately appropriate.  In every case, documenting the decision to deviate from
what is specified can avoid later issues.</t>

</section>
<section anchor="protocol-maintenance-is-important" title="Protocol Maintenance is Important">

<t>Protocol designers are strongly encouraged to continue to maintain and evolve
protocols beyond their initial inception and definition.  If protocol
implementations are less tolerant of variation, protocol maintenance becomes
critical.  Good extensibility <xref target="RFC6709"></xref> can relieve some of the pressure on
maintenance.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>Sloppy implementations, lax interpretations of specifications, and uncoordinated
extrapolation of requirements to cover gaps in specification can result in
security problems.  Hiding the consequences of protocol variations encourages
the hiding of issues, which can conceal bugs and make them difficult to
discover.</t>

<t>Designers and implementers of security protocols generally understand these
concerns.  However, general-purpose protocols are not exempt from careful
consideration of security issues.  Furthermore, because general-purpose
protocols tend to deal with flaws or obsolescence in a less urgent fashion than
security protocols, there can be fewer opportunities to correct problems in
protocols that develop interoperability problems.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


    <references title='Informative References'>





<reference  anchor="RFC0760" target='http://www.rfc-editor.org/info/rfc760'>
<front>
<title>DoD standard Internet Protocol</title>
<author initials='J.' surname='Postel' fullname='J. Postel'><organization /></author>
<date year='1980' month='January' />
</front>
<seriesInfo name='RFC' value='760'/>
<seriesInfo name='DOI' value='10.17487/RFC0760'/>
</reference>



<reference  anchor="RFC6709" target='http://www.rfc-editor.org/info/rfc6709'>
<front>
<title>Design Considerations for Protocol Extensions</title>
<author initials='B.' surname='Carpenter' fullname='B. Carpenter'><organization /></author>
<author initials='B.' surname='Aboba' fullname='B. Aboba' role='editor'><organization /></author>
<author initials='S.' surname='Cheshire' fullname='S. Cheshire'><organization /></author>
<date year='2012' month='September' />
<abstract><t>This document discusses architectural issues related to the extensibility of Internet protocols, with a focus on design considerations.  It is intended to assist designers of both base protocols and extensions.  Case studies are included.  A companion document, RFC 4775 (BCP 125), discusses procedures relating to the extensibility of IETF protocols.  This document is not an  Internet Standards Track specification; it is published for informational  purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='6709'/>
<seriesInfo name='DOI' value='10.17487/RFC6709'/>
</reference>



<reference  anchor="RFC7230" target='http://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC4627" target='http://www.rfc-editor.org/info/rfc4627'>
<front>
<title>The application/json Media Type for JavaScript Object Notation (JSON)</title>
<author initials='D.' surname='Crockford' fullname='D. Crockford'><organization /></author>
<date year='2006' month='July' />
<abstract><t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='4627'/>
<seriesInfo name='DOI' value='10.17487/RFC4627'/>
</reference>



<reference  anchor="RFC7159" target='http://www.rfc-editor.org/info/rfc7159'>
<front>
<title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
<author initials='T.' surname='Bray' fullname='T. Bray' role='editor'><organization /></author>
<date year='2014' month='March' />
<abstract><t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t><t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t></abstract>
</front>
<seriesInfo name='RFC' value='7159'/>
<seriesInfo name='DOI' value='10.17487/RFC7159'/>
</reference>



<reference  anchor="RFC7493" target='http://www.rfc-editor.org/info/rfc7493'>
<front>
<title>The I-JSON Message Format</title>
<author initials='T.' surname='Bray' fullname='T. Bray' role='editor'><organization /></author>
<date year='2015' month='March' />
<abstract><t>I-JSON (short for &quot;Internet JSON&quot;) is a restricted profile of JSON designed to maximize interoperability and increase confidence that software can process it successfully with predictable results.</t></abstract>
</front>
<seriesInfo name='RFC' value='7493'/>
<seriesInfo name='DOI' value='10.17487/RFC7493'/>
</reference>




    </references>



  </back>

<!-- ##markdown-source:
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
lE0itKY8qTM4vPt/s9ADCqYnAAA=

-->

</rfc>

