RFC 9720

RFC Formats and Versions

πŸ“… published January 2025, from ietf

RFC 9720: RFC Formats and Versions πŸ’–

okay bestie, the title block is giving editor drama πŸŽ€ This one is RFC 9720, called "RFC Formats and Versions," and it's from the Editorial Stream, published January 2025. P. Hoffman (ICANN) and H. Flanagan (Spherical Cow Consulting) wrote it. It's Informational, so it isn't a standards-track spec, and it obsoletes RFC 7990 and updates RFC 9280. The ISSN is 2070-1721 ✨

Abstract

okay so the goal here is making RFCs easier to read while still keeping them archivable πŸ“š The RFC Series moved from plain-text ASCII to XML using the RFCXML vocabulary, and then the different publication versions get rendered from that one base document. This document describes how RFCs are published πŸ¦‹

This document obsoletes RFC 7990. It also updates the stability policy in RFC 9280 🌸

Status of This Memo

this one is not an Internet Standards Track specification, it's just published for informational purposes 🧚

it's a product of the RFC Series Policy Definition Process, and it represents the consensus of the RFC Series Working Group, approved by the RFC Series Approval Board. these docs are not candidates for any level of Internet Standard (see Section 2 of RFC 7841) πŸ’…

if you want the current status, any errata, or a way to give feedback, check https://www.rfc-editor.org/info/rfc9720 πŸ”—

Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved. πŸŽ€

this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication. please actually read those, bestie, because they describe your rights and restrictions for this document πŸ™ˆ

Table of Contents

1.  Introduction
  1.1.  Changes to RFC 7990
  1.2.  Changes to RFC 9280
  1.3.  Key Changes from the Earlier RFC Process
2.  Definitive Version of an RFC
  2.1.  Updating the Definitive Version of an RFC
  2.2.  Expected Updates to RFCXML
3.  Publication Versions
4.  Archived Documents
5.  IANA Considerations
6.  Security Considerations
7.  References
  7.1.  Normative References
  7.2.  Informative References
Acknowledgments
Authors' Addresses

1. Introduction ✨

okay so "RFC Series Format Requirements and Future Development" [RFC6949] talked about how author names and artwork in RFCs needed better display, and how RFCs needed to display properly on all kinds of devices πŸ“± After talking with communities like the IETF, the RFC Series Editor decided to explore changing the format of the Series. [RFC7990] was the culmination of that exploration 🌈

this document is about how RFCs get produced, focusing on the published documents. it does not cover changes to how each stream develops and reviews its submissions (specifically, how Internet-Drafts are developed). I-Ds have a similar set of issues and concerns, but directly addressing those for I-Ds should happen within each document stream πŸ’œ

the details here are expected to keep changing over time as the community and the RFC Production Center (RPC) get more experience implementing these policies πŸ”₯

implementors of these components are advised to avoid assuming that all such changes will be backwards compatible. bestie, don't assume it's all backwards compatible πŸ’€

1.1. Changes to RFC 7990 πŸ¦‹

[RFC7990] defined a framework for how RFCs would be published, including new "publication formats" and a new "canonical format". it talked about "the XML file" like there would only ever be one XML file for an RFC, because that was the expectation at the time [RFC7990] was published. it also described "publication formats" as the versions of HTML, plain text, and PDF derived from the "canonical format" πŸŽ€

after a lot of experience publishing RFCs in the RFCXML format [RFC7991], it's been decided that an RFC's XML file can be updated, but only for narrowly limited purposes. this document changes [RFC7990] in some big ways:

  • It defines four terms that replace the use of the term "canonical" and clarify "format":
    • The "definitive format", which is RFCXML
    • The "definitive version", which is a published RFC in the definitive format
    • A "publication format", which is currently one of HTML, plain text, and PDF
    • A "publication version", which is a published RFC in one of the publication formats
  • It defines a policy governing how the RFCXML format changes.
  • It defines a policy for when the definitive version of an RFC can be updated and older definitive versions archived.
  • It defines a policy for when the publication versions of an RFC can be updated and older publication versions archived.

when you use the new terminology, it's important to know that [RFC7990] used the term "canonical format" to mean two very different things πŸ™ˆ here's what RFC 7990 said:

Canonical format: the authorized, recognized, accepted, and archived version of the document

and

At the highest level, the changes being made to the RFC format involve breaking away from solely ASCII plain text and moving to a canonical format that includes all the information required for rendering a document into a wide variety of publication formats.

this document uses two terms, "definitive version" and "definitive format", for the earlier term "canonical format" πŸ’…

this document also makes these terminology changes:

  • It changes the phrase "xml2rfc version 3" to "RFCXML".
  • It changes the name of the body that publishes RFCs from "RFC Editor" to "RFC Production Center" (RPC).

historical text from [RFC7990] like Section 2 ("Problem Statement"), Section 4 ("Overview of the Decision-Making Process"), and Section 10 ("Transition Plan") was purposely left out of this document. text from [RFC7990] that repeated what was in other RFCs, especially Section 8 ("Figures and Artwork") and Section 9 ("Content and Page Layout"), got removed too 🧚

1.2. Changes to RFC 9280 🌸

Section 7.6 of [RFC9280] says:

Once published, RFC Series documents are not changed.

this document replaces that sentence with:

Once published, RFCs may be reissued, but the semantic content of
publication versions shall be preserved to the greatest extent
possible.

this document also adds a new policy to Section 7 of [RFC9280]:

7.8.  Consistency

   RFCs are copyedited, formatted, and then published.  They may
   be reissued to maintain a consistent presentation.

Sections 2.1 and 3 in this document are based on this policy in [RFC9280] ✨

1.3. Key Changes from the Earlier RFC Process ⭐

the first RFC published under the guidance of the group of RFCs described in [RFC7990] was [RFC8651], published in October 2019. ever since then, every published RFC has followed the general plan from [RFC7990] πŸŽ‰

at the highest level, [RFC7990] changed the RFC format by breaking away from solely ASCII [RFC20] plain text and moving to a definitive format that includes all the information needed for rendering a document into a wide variety of publication formats. the RPC used to be responsible for just the plain-text file and a PDF made from that plain text at publication time. now the RPC creates the definitive version and three publication versions of the RFC to meet the diverse needs of the community πŸ‘‘

the final RFCXML file the RPC produces is the definitive version for RFCs, and it holds all the information intended for an RFC. the RPC also publishes additional publication versions (HTML, plain text, and PDF). the publication formats are fully specified in other RFCs 🌈

2. Definitive Version of an RFC πŸ’œ

the definitive version the RPC produces holds all the information intended for an RFC. the RPC may change the definitive version of an RFC over time (that is, change the XML file), as described in Section 2.1. see [RFC7991] for the original complete description of RFCXML πŸŽ€

the XML may contain SVG line art, as originally described in [RFC7996]. that SVG will also appear in the HTML publication version. the XML may contain non-ASCII characters, as originally described in [RFC7997]. those characters will appear in all the publication versions πŸ¦‹

the definitive version must contain all information necessary to render the specified publication versions. any question about what was intended in the publication will be answered from this file. it's self-contained with all the semantic content known at publication time. for instance, all features that reference externally defined input are expanded. it does not contain src attributes for <artwork> or <sourcecode> elements. it does not contain comments or processing instructions 🫢

2.1. Updating the Definitive Version of an RFC πŸ”₯

RFCs may be reissued, as described in Section 1.2. such changes must preserve the semantics expressed in the original RFC. reasons to make these changes include updates to the RFCXML schema, errors discovered in the XML, and changes to the tooling used to generate the publication versions of the definitive version of the RFC. the RPC will keep a public record of when it reissues any RFC, and it will give a short description of its reasoning for each change πŸ“š

2.2. Expected Updates to RFCXML πŸ“

it's anticipated that [RFC7991] will be updated. updates to the RFCXML specification that get applied to existing RFCs should preserve the semantics expressed in the original RFC to the greatest extent possible. the goal of limiting changes only to syntax is to preserve the semantic meaning encoded in the published document ✨

this policy does not require that updates to RFCXML avoid all risk of introducing semantic changes to existing RFCs. instead, considering the potential for semantic changes, taking steps to understand the risk of a semantic change (either deliberate or inadvertent), and limiting associated risks are the only requirements πŸ’…

3. Publication Versions 🌸

the RPC is permitted but not required to reissue publication versions of an RFC, as described in Section 1.2. when deciding whether to update the publication versions of an RFC, the RPC will take into account both the risk of semantic changes and the consistency of the Series 🧁

XML format errors and better design choices have been found by the community since the first RFCs were published in the RFCXML format πŸ™ˆ when the XML in a definitive version changes, the publication versions may change, even if that doesn't lead to observable differences. similarly, as production tools change, publication versions may be regenerated to keep a consistent presentation 🌈

(part 2 is coming next, bestie πŸ’œ sections 4 through 7, the references, acknowledgments, and author addresses are all still to come!)

4. Archived Documents ✨

okay so the RPC is keeping an archive πŸ—‚οΈ of every definitive version of an RFC, plus archived sets of the publication versions for any RFC that was published before. These archived sets must be available using the same access methods as the current definitive and publication versions πŸ’…. Every archived set shall also record the date that a definitive and/or publication version was created or reissued. timestamps are everything, bestie πŸ•°οΈ

When the RPC archives definitive and publication versions, it does it in a way that lets people find the historical files (as opposed to the current ones) πŸ” main character archive energy πŸŽ€

This document does not specify how archives are maintained or how archived documents might be located or identified. The methods for storage and access will be decided by the RPC in consultation with the technical community 🫢

5. IANA Considerations 🌸

This document has no IANA actions. πŸ™ˆ nothing to see here, no registries to touch ✨

6. Security Considerations πŸ’€

ok this one is serious, so let's be real 😭 Allowing changes to the definitive version and publication versions of RFCs introduces risks. A big one is that unintended changes could sneak into either the definitive version or a publication version because of an editing error. Unintended changes may also get introduced into a publication version when it is regenerated from the definitive version. That could corrupt a standard, a practice, or a critical piece of information about a protocol, and that would seriously harm the reputation of the RFC Series πŸ’”

The RPC is expected to identify, track, and actively mitigate risks introduced by this new policy πŸ›‘οΈ no skipping this one, periodt πŸ‘‘

7. References πŸ“š

7.1. Normative References

[RFC7991]  Hoffman, P., "The "xml2rfc" Version 3 Vocabulary",
           RFC 7991, DOI 10.17487/RFC7991, December 2016,
           <https://www.rfc-editor.org/info/rfc7991>.

[RFC7996]  Brownlee, N., "SVG Drawings for RFCs: SVG 1.2 RFC",
           RFC 7996, DOI 10.17487/RFC7996, December 2016,
           <https://www.rfc-editor.org/info/rfc7996>.

[RFC7997]  Flanagan, H., Ed., "The Use of Non-ASCII Characters in
           RFCs", RFC 7997, DOI 10.17487/RFC7997, December 2016,
           <https://www.rfc-editor.org/info/rfc7997>.

[RFC9280]  Saint-Andre, P., Ed., "RFC Editor Model (Version 3)",
           RFC 9280, DOI 10.17487/RFC9280, June 2022,
           <https://www.rfc-editor.org/info/rfc9280>.

7.2. Informative References

[RFC20]    Cerf, V., "ASCII format for network interchange", STD 80,
           RFC 20, DOI 10.17487/RFC0020, October 1969,
           <https://www.rfc-editor.org/info/rfc20>.

[RFC6949]  Flanagan, H. and N. Brownlee, "RFC Series Format
           Requirements and Future Development", RFC 6949,
           DOI 10.17487/RFC6949, May 2013,
           <https://www.rfc-editor.org/info/rfc6949>.

[RFC7990]  Flanagan, H., "RFC Format Framework", RFC 7990,
           DOI 10.17487/RFC7990, December 2016,
           <https://www.rfc-editor.org/info/rfc7990>.

[RFC8651]  Cheng, B., Wiggins, D., and L. Berger, Ed., "Dynamic Link
           Exchange Protocol (DLEP) Control-Plane-Based Pause
           Extension", RFC 8651, DOI 10.17487/RFC8651, October 2019,
           <https://www.rfc-editor.org/info/rfc8651>.

Acknowledgments 🫢

Martin Thomson wrote a great deal of the significant text here as part of draft-thomson-rswg-syntax-change-01. he's the real MVP πŸ‘‘

This document has greatly benefited from the input of the RSWG. In particular, Alexis Rossi, Brian Carpenter, Eliot Lear, Jay Daley, Jean Mahoney, John Levine, and Pete Resnick provided significant input on the early draft versions of this document πŸ’– so many brilliant people in one thread, iconic 🌈

Authors' Addresses πŸ–ŠοΈ

Paul Hoffman
ICANN
Email: paul.hoffman@icann.org


Heather Flanagan
Spherical Cow Consulting
Email: hlf@sphericalcowconsulting.com
πŸ“¦ where this page comes from