<?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.0.30 -->

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

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>

<rfc ipr="trust200902" docName="draft-sheffer-rfc6982bis-02" category="bcp" obsoletes="6982">

  <front>
    <title abbrev="Running Code">Improving Awareness of Running Code: The Implementation Status Section</title>

    <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Farrel" fullname="Adrian Farrel">
      <organization>Juniper Networks</organization>
      <address>
        <email>adrian@olddog.co.uk</email>
      </address>
    </author>

    <date year="2016" month="June" day="02"/>

    <area>General</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document describes a simple process that allows authors of
   Internet-Drafts to record the status of known implementations by
   including an Implementation Status section.  This will allow
   reviewers and working groups to assign due consideration to documents
   that have the benefit of running code, which may serve as evidence of
   valuable experimentation and feedback that have made the implemented
   protocols more mature.</t>

<t>This process is not mandatory. Authors of
   Internet-Drafts are encouraged to consider using the process for
   their documents, and working groups are invited to think about
   applying the process to all of their protocol specifications.
   This document obsoletes RFC 6982, advancing it to a
   Best Current Practice.</t>



    </abstract>


  </front>

  <middle>


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

<t>Most IETF participants are familiar with the saying “rough consensus
   and running code” <xref target="Tao"></xref> and can identify with its pragmatic approach.
   However, implementation is not a requirement for publication as an
   RFC.  There are many examples of Internet-Drafts containing protocol
   specification that have gone through to publication as Proposed
   Standard RFCs without implementation.  Some of them may never get
   implemented.</t>

<t>Over time, a variety of policies have been applied within the IETF to
   consider running code.  In the Routing Area, it used to be a
   requirement that one or more implementations must exist before an
   Internet-Draft could be published as a Proposed Standard RFC
   <xref target="RFC1264"></xref>.  That RFC was later obsoleted and the requirement for
   implementation was lifted, but each working group was given the
   authority to impose its own implementation requirements <xref target="RFC4794"></xref> and
   at least one working group, Inter-Domain Routing (IDR), continues to
   require two independent implementations.</t>

<t>The hypothesis behind the current document is that there are benefits
   to the IETF standardization process of producing implementations of
   protocol specifications before publication as RFCs.  These benefits,
   which include determining that the specification is comprehensible
   and that there is sufficient interest to implement, are further
   discussed in <xref target="benefits"/>.</t>

<t>This document describes a simple mechanism that allows authors of
   Internet-Drafts to record and publicize the status of known
   implementations by including an Implementation Status section.  The
   document defines (quite informally) the contents of this section to
   ensure that the relevant information is included.  This will allow
   reviewers and working groups to assign due consideration to documents
   that have the benefit of running code, which may serve as evidence of
   valuable experimentation and feedback that have made the implemented
   protocols more mature.</t>

<t>It is up to the individual working groups to use this information as
   they see fit, but one result might be the preferential treatment of
   documents, resulting in them being processed more rapidly. We
   recommend that the Implementation Status section should be removed
   from Internet-Drafts before they are published as RFCs.  As a result,
   we do not envisage changes to this section after approval of the
   document for publication, while the document sits in the RFC-editor 
   queue, e.g., the RFC errata process does not apply.</t>

<t>This process is not mandatory.  Authors of Internet-Drafts
are encouraged to consider using the process for their
   documents, and working groups are invited to think about applying the
   process to all of their protocol specifications.</t>

<t>The scope of this process is all Internet-Drafts (I-Ds)
   that contain implementable specifications, whether produced within
   IETF working groups or outside working groups but intended for IETF
   consensus.  I-Ds published on the Independent Stream are explicitly
   out of scope.  It is expected that the greatest benefit
   will be seen with Standards Track documents developed
   within working groups.</t>

<t>This process was initially proposed as an experiment in
   <xref target="RFC6982"></xref>. That document is now obsoleted, and the
   process advanced to Best Current Practice.</t>

<t>Historically there have been other ways for experience based on protocol implementations
to feed back into the IETF process. Many “implementation reports” have been published,
in some cases several years after the protocol was
originally published. Providing feedback to published protocols is a related goal,
but different from the current document’s
focus. Two notable examples of published implementation reports
are <xref target="RFC1369"/> and <xref target="RFC5080"/>.</t>

</section>
<section anchor="the-implementation-status-section" title="The “Implementation Status” Section">

<t>Each Internet-Draft may contain a section entitled “Implementation
   Status”.  This section, if it appears, should be located just before
   the “Security Considerations” section and contain, for each existing
   implementation, some or all of the following:</t>

<t><list style="symbols">
  <t>The organization responsible for the implementation, if any.</t>
  <t>The implementation’s name and/or a link to a web page where the implementation
or a description of it can be found.</t>
  <t>A brief general description.</t>
  <t>The implementation’s level of maturity: research, prototype,
alpha, beta, production, widely used, etc.</t>
  <t>Coverage: which parts of the protocol specification are
implemented and which versions of the Internet-Draft were
implemented.</t>
  <t>Licensing: the terms under which the implementation can be used.
For example: proprietary, royalty licensing, freely distributable
with acknowledgement (BSD style), freely distributable with
requirement to redistribute source (General Public License (GPL)
style), and other (specify).</t>
  <t>Implementation experience: any useful information the implementers
want to share with the community.</t>
  <t>Contact information: ideally a person’s name and email address,
but possibly just a URL or mailing list.</t>
  <t>The date when information about this particular implementation was
last updated.</t>
</list></t>

<t>In addition, this section can contain information about the
   interoperability of any or all of the implementations, including
   references to test-case descriptions and interoperability reports,
   when such exist.</t>

<t>Working group chairs and area directors (ADs) are requested to ensure
   that this section is not used as a marketing venue for specific
   implementations.</t>

<t>Since this information is necessarily time dependent, it is
   inappropriate for inclusion in a published RFC.  The authors should
   include a note to the RFC Editor requesting that the section be
   removed before publication.</t>

<section anchor="introductory-text" title="Introductory Text">

<t>The following boilerplate text is proposed to head the Implementation
   Status section:</t>

<figure><artwork><![CDATA[
  This section records the status of known implementations of the
  protocol defined by this specification at the time of posting of
  this Internet-Draft, and is based on a proposal described in RFC
  [[RFC Editor: replace by RFC number]].
  The description of implementations in this section is
  intended to assist the IETF in its decision processes in
  progressing drafts to RFCs.  Please note that the listing of any
  individual implementation here does not imply endorsement by the
  IETF.  Furthermore, no effort has been spent to verify the
  information presented here that was supplied by IETF contributors.
  This is not intended as, and must not be construed to be, a
  catalog of available implementations or their features.  Readers
  are advised to note that other implementations may exist.

  According to RFC [[RFC Editor: replace by RFC number]],
  "this will allow reviewers and working
  groups to assign due consideration to documents that have the
  benefit of running code, which may serve as evidence of valuable
  experimentation and feedback that have made the implemented
  protocols more mature.  It is up to the individual working groups
  to use this information as they see fit".
]]></artwork></figure>

<t>Authors are requested to add a note to the RFC Editor at the top of
   this section, advising the Editor to remove the entire section before
   publication, as well as the reference to
   RFC [[RFC Editor: replace by RFC number]].</t>

</section>
</section>
<section anchor="alternative-formats" title="Alternative Formats">

<t>Sometimes it can be advantageous to publish the implementation status
   separately from the base Internet-Draft, e.g., on the IETF wiki:</t>

<t><list style="symbols">
  <t>When the Implementation Status section becomes too large to be
conveniently managed within the document.</t>
  <t>When a working group decides to have implementors, rather than
authors, keep the status of their implementations current.</t>
  <t>When a working group already maintains an active wiki and prefers
to use it for this purpose.</t>
  <t>If the working group decides that the information is still
valuable (and needs to be kept current) after the I-D is published
as an RFC, and the Implementation Status section had been removed
from it.</t>
</list></t>

<t>It is highly desirable for all readers of the Internet-Draft to be
   made aware of this information.  Initially, this can be done by
   replacing the Implementation Status section’s contents with a URL
   pointing to the wiki.  Later, the IETF Tools may support this
   functionality, e.g., by including such a link in the HTML file of the
   document, similar to the IPR link.</t>

<t>If the implementation status is published separately from the I-D,
   then this information needs to be openly available without requiring
   authentication, registration, or access controls if it is to have any
   useful effects.</t>

</section>
<section anchor="benefits" title="Benefits">

<t>Publishing the information about implementations provides the working
   group with several benefits:</t>

<t><list style="symbols">
  <t>Working group members, chairs, and ADs may use the information
provided to help prioritize the progress of I-Ds, e.g., when there
are several competing proposals to solve a particular problem.</t>
  <t>Similarly, the information is useful when deciding whether the
document should be progressed on a different track (individual
submission, Experimental, etc.).</t>
  <t>Making this information public and an explicit part of WG
deliberations will motivate participants to implement protocol
proposals, which in turn helps in discovering protocol flaws at an
early stage.</t>
  <t>Other participants can use the software to evaluate the usefulness
of protocol features, its correctness (to some degree), and other
properties, such as resilience and scalability.</t>
  <t>WG members may choose to perform interoperability testing with
known implementations, especially when they are publicly
available.</t>
  <t>In the case of open source, people may want to study the code to
better understand the protocol and its limitations, determine if
the implementation matches the protocol specification, and whether
the protocol specification has omissions or ambiguities.</t>
  <t>And lastly, some protocol features may be hard to understand, and
for such features, the mere assurance that they can be implemented
is beneficial.  We note though that code should never be used in
lieu of a clear specification.</t>
</list></t>

<t>We do not specify here whether and to what degree working groups are
   expected to prefer proposals that have “running code” associated with
   them, over others that do not.</t>

<t>Working group chairs are invited to suggest this
   mechanism to document editors in their working groups, and to draw
   the attention of their working group participants to Implementation
   Status sections where they exist.</t>

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

<t>This is a process document; therefore, it does not have a direct
   effect on the security of any particular IETF protocol.  However,
   better-reviewed protocols are likely to also be more secure.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>We would like to thank Stephen Farrell, who reawakened community
   interest in this topic.  Several reviewers provided important input,
   including Loa Andersson, Dave Crocker, Ned Freed, Joel M. Halpern,
   Christer Holmberg,
   Denis Ovsienko, and Curtis Villamizar.</t>

<t>This document was originally prepared using the lyx2rfc tool, and we
   would like to thank Nico Williams, its author.</t>

</section>


  </middle>

  <back>


    <references title='Informative References'>





<reference  anchor='RFC1264' target='http://www.rfc-editor.org/info/rfc1264'>
<front>
<title>Internet Engineering Task Force Internet Routing Protocol Standardization Criteria</title>
<author initials='R.M.' surname='Hinden' fullname='R.M. Hinden'><organization /></author>
<date year='1991' month='October' />
<abstract><t>This informational RFC presents procedures for creating and documenting Internet standards on routing protocols.  These procedures have been established by the Internet Activities Board (IAB) in consultation with the Internet Engineering Steering Group (IESG). This memo provides information for the Internet community. It does not specifiy an Internet standard.</t></abstract>
</front>
<seriesInfo name='RFC' value='1264'/>
<seriesInfo name='DOI' value='10.17487/RFC1264'/>
</reference>



<reference  anchor='RFC1369' target='http://www.rfc-editor.org/info/rfc1369'>
<front>
<title>Implementation Notes and Experience for the Internet Ethernet MIB</title>
<author initials='F.' surname='Kastenholz' fullname='F. Kastenholz'><organization /></author>
<date year='1992' month='October' />
<abstract><t>This document reflects the currently known status of 11 different implementations of the MIB by 7 different vendors on 7 different Ethernet interface chips.  This memo provides information for the Internet community.  It does not specify an Internet standard.</t></abstract>
</front>
<seriesInfo name='RFC' value='1369'/>
<seriesInfo name='DOI' value='10.17487/RFC1369'/>
</reference>



<reference  anchor='RFC4794' target='http://www.rfc-editor.org/info/rfc4794'>
<front>
<title>RFC 1264 Is Obsolete</title>
<author initials='B.' surname='Fenner' fullname='B. Fenner'><organization /></author>
<date year='2006' month='December' />
<abstract><t>RFC 1264 was written during what was effectively a completely different time in the life of the Internet.  It prescribed rules to protect the Internet against new routing protocols that may have various undesirable properties.  In today's Internet, there are so many other pressures against deploying unreasonable protocols that we believe that existing controls suffice, and the RFC 1264 rules just get in the way.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='4794'/>
<seriesInfo name='DOI' value='10.17487/RFC4794'/>
</reference>



<reference  anchor='RFC5080' target='http://www.rfc-editor.org/info/rfc5080'>
<front>
<title>Common Remote Authentication Dial In User Service (RADIUS) Implementation Issues and Suggested Fixes</title>
<author initials='D.' surname='Nelson' fullname='D. Nelson'><organization /></author>
<author initials='A.' surname='DeKok' fullname='A. DeKok'><organization /></author>
<date year='2007' month='December' />
<abstract><t>This document describes common issues seen in Remote Authentication Dial In User Service (RADIUS) implementations and suggests some fixes. Where applicable, ambiguities and errors in previous RADIUS specifications are clarified.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5080'/>
<seriesInfo name='DOI' value='10.17487/RFC5080'/>
</reference>



<reference  anchor='RFC6982' target='http://www.rfc-editor.org/info/rfc6982'>
<front>
<title>Improving Awareness of Running Code: The Implementation Status Section</title>
<author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></author>
<author initials='A.' surname='Farrel' fullname='A. Farrel'><organization /></author>
<date year='2013' month='July' />
<abstract><t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section.  This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t><t>The process in this document is offered as an experiment.  Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications.  The authors of this document intend to collate experiences with this experiment and to report them to the community.</t></abstract>
</front>
<seriesInfo name='RFC' value='6982'/>
<seriesInfo name='DOI' value='10.17487/RFC6982'/>
</reference>


<reference anchor="Tao" target="http://www.ietf.org/tao.html">
  <front>
    <title>"The Tao of IETF: A Novice's Guide to the Internet Engineering Task Force"</title>
    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization></organization>
    </author>
    <date year="2012"/>
  </front>
</reference>


    </references>


<section anchor="document-history" title="Document History">

<section anchor="draft-sheffer-rfc6982bis-02" title="draft-sheffer-rfc6982bis-02">

<t><list style="symbols">
  <t>Implemented IESG review comments.</t>
</list></t>

</section>
<section anchor="draft-sheffer-rfc6982bis-01" title="draft-sheffer-rfc6982bis-01">

<t><list style="symbols">
  <t>Removed the IANA Considerations section.</t>
  <t>Implemented GENART comments.</t>
</list></t>

</section>
<section anchor="draft-sheffer-rfc6982bis-00" title="draft-sheffer-rfc6982bis-00">

<t>Initial version. RFC 6982 as-is, without the experiment sections.</t>

</section>
</section>


  </back>
</rfc>

