<?xml version="1.0" encoding="UTF-8"?>
<?rfc compact="yes" ?><?rfc strict="no" ?><?rfc symrefs="yes" ?><?rfc toc="yes" ?><rfc ipr="trust200902" docName="draft-petithuguenin-running-code-considerations-00" category="bcp">
	<front>
		<title abbrev="Running Code">Running Code Considerations Section in RFCs</title>

		<author initials="M.P.H" surname="Petit-Huguenin" fullname="Marc Petit-Huguenin">
			<organization>(Unaffiliated)</organization>

			<address>
				<email>petithug@acm.org</email>
			</address>
		</author>

		<author initials="H.S." surname="Sinnreich" fullname="Henry Sinnreich">
			<organization>Adobe</organization>

			<address>
				<email>henrys@adobe.com</email>
			</address>
		</author>

		<date year="2009"/>

		<abstract>
			<t>This document provides guidelines to IETF authors on the text that must be included in documents to reference running code and measurements.</t>
		</abstract>
	</front>

	<middle>
		<section title="Introduction">
			<t>
				One of the motto of the IETF is <xref target="RFC4677">"We believe in rough consensus and running code"</xref>.
				It is difficult to evaluate a protocol under development in a series of Internet-Draft documents without been able to verify the existence and conformance of the running code developed for this protocol.
				This document describes how the references to such running code must be documented during the lifetime of an Internet-Draft.
			</t>

			<t>
				Been able to have access to running code during the development of a protocol is important for multiple reasons.
				First of all an existing implementation proves that the protocol is implementable but because code can be considered as a formal description of a protocol, it is also useful to detect early any design flaws.
			</t>

			<t>
				A second major reason for running code is to assess the interest in and validity of a new protocol.
				A protocol that will never be implemented is a waste of IETF resources.
				An Internet-Draft that cannot collect at least two independent implementations after few iterations should be abandoned if no more interest can be found.
			</t>

			<t>
				The "running" part in "running code" means that the code must be complete and executable, so a code snippet does not fulfill the requirement for running code.
				The "code" part must be understood as source code, as binary code is useless to evaluate the difficulties created when implementing the protocol.
				Note that this does not mean that the code source must be available under a free or open source license.
				The minimum rights that should be granted for this source code are the right to duplicate it for purpose of reading it and the right to execute it or generate the binary code to execute it.
				Other rights, like the right to integrate it as part of another software or distribute modified versions can be useful but are not needed for the purpose of evaluating the protocol.
			</t>

			<t>
				The development of <xref target="RFC3261">SIP</xref> provides useful examples and the incentive to write this memo.
				There is a wealth of published code for SIP servers and SIP User Agents and this explains in large part the success of SIP.
				On the other hand, more complex aspects of SIP networks, such as routing between numerous servers and other network elements and NAT traversal have not been backed up by public available routing code.
				This has caused very large numbers of I-D revisions and sheer endless discussions between experts in the IETF.
				Some of these discussions have not been concluded as of this writing, due to the lack of available code to inspect and the lack of measurements to prove the assumptions.
			</t>

			<t>New protocols that have performance implications or protocol extensions aimed at improvements of performance or where competing protocols already exist must also be accompanied by a discussion of the metrics for performance and measurements that prove the performance of the protocol.</t>

			<t>
				Writing and maintaining running code during the development of a new protocol is a difficult task so code authors and eventual sponsors must be clearly cited in all the versions of the document as a way to recognize their contribution.
				Even if the code is no longer maintained and compatible with subsequent versions of the document, its authors and sponsors must still be acknowledged in the Running Code Considerations section for the whole lifetime of the document.
			</t>

			<t>
				Note that there is no compatibility guaranteed between two versions of an Internet-Draft.
				Even with early implementations, Internet-Draft authors should not hesitate to break compability if it improves the protocol.
			</t>
		</section>

		<section title="Terminology">
			<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"/>.</t>
		</section>

		<section title="Content of the Running Code Considerations Section">
			<t>
				The "Running Code Considerations" section MUST be present in all Internet-Draft and SHOULD be inserted after the Security Considerations and IANA Considerations sections.
				This section MUST be present even if the document does not describe an implementable protocol and should contain in this case a text explaining why this section is irrelevant.
				The RFC Editor can remove this "Running Code Considerations" section before publication as RFC.
			</t>

			<t>
				The "Running Code Considerations" section MUST contain the list of all protocol implementations starting with the oldest, with the author(s) and eventually sponsor(s) names, the URL to where the source code can be retrieved and the version(s) of the document that this code implements.
				In the case a specific code implements multiple versions of the document, the URL MUST point to the latest version available but the text MUST contain the complete list of versions supported.
			</t>
		</section>

		<section anchor="security" title="Security Considerations">
			<t>
				Adding a Running Code Considerations section does not increase the security risks in a protocol but can help to detect security issues early in the development cycle of this protocol.
			</t>
		</section>

		<section title="IANA Considerations">
			<t>There are no IANA considerations.</t>
		</section>

		<section title="Running Code Considerations">
			<t>
				<list style="symbols">
					<t>
						<eref target="http://ietf.implementers.org/idnits-2.11.05a.tgz">idnits code modified to verify the presence of a Running Code Consideration Section</eref>.
						Marc Petit-Huguenin &lt;petithug@acm.org&gt;.
						Implements version -00.
					</t>
				</list>
			</t>
		</section>

		<section title="Acknowledgements">
			
			<t>This document was written with the xml2rfc tool described in <xref target="RFC2629"/>.</t>
		</section>
	</middle>

	<back>
		<references xmlns:xi="http://www.w3.org/2001/XInclude" title="Normative References">
			<reference anchor="RFC2119" xml:base="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">

<front>
<title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials="S." surname="Bradner" fullname="Scott Bradner">
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date year="1997" month="March"/>
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in
      RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<format type="TXT" octets="4723" target="ftp://ftp.isi.edu/in-notes/rfc2119.txt"/>
<format type="HTML" octets="17491" target="http://xml.resource.org/public/rfc/html/rfc2119.html"/>
<format type="XML" octets="5777" target="http://xml.resource.org/public/rfc/xml/rfc2119.xml"/>
</reference>
		</references>

		<references xmlns:xi="http://www.w3.org/2001/XInclude" title="Informative References">
			<reference anchor="RFC2629" xml:base="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">

<front>
<title>Writing I-Ds and RFCs using XML</title>
<author initials="M.T." surname="Rose" fullname="Marshall T. Rose">
<organization>Invisible Worlds, Inc.</organization>
<address>
<postal>
<street>660 York Street</street>
<city>San Francisco</city>
<region>CA</region>
<code>94110</code>
<country>US</country></postal>
<phone>+1 415 695 3975</phone>
<email>mrose@not.invisible.net</email>
<uri>http://invisible.net/</uri></address></author>
<date year="1999" month="June"/>
<area>General</area>
<keyword>RFC</keyword>
<keyword>Request for Comments</keyword>
<keyword>I-D</keyword>
<keyword>Internet-Draft</keyword>
<keyword>XML</keyword>
<keyword>Extensible Markup Language</keyword>
<abstract>
<t>This memo presents a technique for using XML
(Extensible Markup Language)
as a source format for documents in the Internet-Drafts (I-Ds) and
Request for Comments (RFC) series.</t></abstract></front>

<seriesInfo name="RFC" value="2629"/>
<format type="TXT" octets="48677" target="ftp://ftp.isi.edu/in-notes/rfc2629.txt"/>
<format type="HTML" octets="71741" target="http://xml.resource.org/public/rfc/html/rfc2629.html"/>
<format type="XML" octets="53481" target="http://xml.resource.org/public/rfc/xml/rfc2629.xml"/>
</reference>
			<reference anchor="RFC3261" xml:base="http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml">

<front>
<title>SIP: Session Initiation Protocol</title>
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg">
<organization/></author>
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne">
<organization/></author>
<author initials="G." surname="Camarillo" fullname="G. Camarillo">
<organization/></author>
<author initials="A." surname="Johnston" fullname="A. Johnston">
<organization/></author>
<author initials="J." surname="Peterson" fullname="J. Peterson">
<organization/></author>
<author initials="R." surname="Sparks" fullname="R. Sparks">
<organization/></author>
<author initials="M." surname="Handley" fullname="M. Handley">
<organization/></author>
<author initials="E." surname="Schooler" fullname="E. Schooler">
<organization/></author>
<date year="2002" month="June"/>
<abstract>
<t>This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants.  These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences. [STANDARDS TRACK]</t></abstract></front>

<seriesInfo name="RFC" value="3261"/>
<format type="TXT" octets="647976" target="ftp://ftp.isi.edu/in-notes/rfc3261.txt"/>
</reference>
			<reference anchor="RFC4677" xml:base="http://xml.resource.org/public/rfc/bibxml/reference.RFC.4677.xml">

<front>
<title>The Tao of IETF - A Novice's Guide to the Internet Engineering Task Force</title>
<author initials="P." surname="Hoffman" fullname="P. Hoffman">
<organization/></author>
<author initials="S." surname="Harris" fullname="S. Harris">
<organization/></author>
<date year="2006" month="September"/>
<abstract>
<t>This document describes the inner workings of IETF meetings and Working Groups, discusses organizations related to the IETF, and introduces the standards process.  It is not a formal IETF process document but instead an informational overview.  This memo provides information for the Internet community.</t></abstract></front>

<seriesInfo name="RFC" value="4677"/>
<format type="TXT" octets="127383" target="ftp://ftp.isi.edu/in-notes/rfc4677.txt"/>
</reference>
		</references>

		<section title="Release notes">
			<t>This section must be removed before publication as an RFC.</t>

			

			

			<section title="TODO List">
				<t>(Empty)
					
				</t>
			</section>
		</section>
	</back>
</rfc>
