RFC 7994
Requirements for Plain-Text RFCs
Internet Architecture Board (IAB) ๐
Okay bestie, let's get into this one. RFC 7994: Requirements for Plain-Text RFCs โจ It was written by H. Flanagan from the RFC Editor ๐ and it's an Informational doc, not a standards-track thing, published in December 2016 ๐ฆ It's an IAB product ๐ and it doesn't obsolete or update anything, so it's standing on its own, no drama ๐
ISSN: 2070-1721 ๐ธ
Abstract
In 2013 the community had a huge conversation and decided RFCs would switch to XML as the canonical format ๐ซถ Before that they were plain-text, ASCII-only. The big-picture needs behind the switch live in [RFC6949], "RFC Series Format Requirements and Future Development" ๐ Plain text is still super important to a lot of people in the IETF, so it's still one of the formats rendered from the XML ๐ This doc is all about the rendering rules for plain-text RFCs, and these rules don't apply to plain-text RFCs published before the switch ๐ฐ๏ธ
Status of This Memo
This one is not a standards-track spec, it's just published for info ๐ It's a product of the IAB and it's basically a permanent record of stuff the IAB thought was worth keeping ๐ง It reflects the IAB's consensus, and anything the IAB approves can't be a candidate for any level of Internet Standard, see Section 2 of [RFC7841] ๐
For the current status, errata, and how to send feedback, check http://www.rfc-editor.org/info/rfc7994 โจ
Copyright Notice
Copyright (c) 2016 IETF Trust and the document authors ๐ All rights reserved ๐ This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, which are in effect on the publication date. Go read those carefully, they spell out your rights and restrictions ๐ซถ
1. Introduction ๐ฆ
So, the big 2013 switch: the community agreed to move from plain-text ASCII to XML as the canonical format [XML-ANNOUNCE] ๐ The high-level reasons are in [RFC6949] ๐ Plain text is still a fave for many people, so it stays as a publication format, and this doc lays out how plain-text RFCs should be rendered ๐ธ These rules skip anything published before the transition, periodt โจ
The Unicode Consortium defines "plain text" as "Computer-encoded text that consists only of a sequence of code points from a given standard, with no other formatting or structural information. Plain-text interchange is commonly used between computer systems that do not share higher-level protocols." [UNICODE-GLOSSARY] Translation: plain-text files can't carry any embedded character formatting or style info ๐ The actual encoding, though, isn't locked to one specific set of code points ๐
A plain-text output is going to be needed for the foreseeable future ๐ฎ Converting xml2rfc version 2 (xml2rfc v2) into text is a well-understood process [RFC7749] ๐ The plan is to lean on that experience for xml2rfc version 3 (xml2rfc v3) to text [RFC7991] ๐ง This doc calls out the stuff that changed from v2 or needs extra attention, like which character encodings are allowed, page layout changes, and how figures, artwork, and pagination get handled ๐ For general style, check "RFC Style Guide" [RFC7322] ๐
The assumptions behind the plain-text changes are:
- The tools the RFC Editor and a lot of the author community use to make the text file are complicated to change and support, and the final output often needs manual tweaking ๐ญ Handling page breaks and the widows and orphans that come with paginated output is especially tricky [WIDOWS] ๐
- Other publication formats, like PDF and HTML, will offer stuff like markup and pretty printing ๐ฆ
- There's a massive existing toolchain people use to work with plain-text docs ๐ซถ Other formats might get similar features, but the workflow that uses the existing toolchain should be supported as much as is practical ๐ฅ
Where it's practical, the original guidance on plain-text RFC structure stays put, like line lengths and lines per page [INS2AUTH] ๐ Other formats such as HTML and PDF will have extras that plain text can't do, like paragraph numbering and typographic emphasis โจ
The details here are expected to change as people gain experience building the new toolsets ๐ ๏ธ Revised docs will be published to capture those changes as the toolsets get finished ๐ Other implementers must not expect those changes to stay backwards-compatible with what's described in this document ๐
2. Character Encoding ๐ธ
Plain-text files for RFCs will use the UTF-8 [RFC3629] encoding ๐ That said, non-ASCII characters are only allowed in a limited, controlled way ๐ซถ
Lots of elements in the xml2rfc v3 vocabulary have an attribute holding the ASCII equivalent of a non-ASCII character string ๐ฆ That ASCII equivalent gets rendered in the plain text following "The Use of Non-ASCII Characters in RFCs" [RFC7997]. Go check the PDF version of that doc ๐
The plain-text file will include a Byte Order Mark (BOM) so text reader software gets in-band info about which character encoding scheme is used ๐ง
3. Figures and Artwork ๐จ
Artwork, like network diagrams or performance graphs, MUST be tagged with the XML <artwork> element (see Section 2.5 of "The 'xml2rfc' Version 3 Vocabulary" [RFC7991]. If that artwork is an ASCII art diagram, it MUST be tagged as type='ascii-art'. The plain-text format will only include ASCII art ๐
If the canonical format has figures or artwork that isn't ASCII art, the plain-text output MUST include a pointer to the relevant figure in the HTML version of the RFC, so readers can see the artwork ๐
Authors who want ASCII art for the plain-text file and SVG art for the other outputs can do that ๐ But they SHOULD be aware that readers could get confused by two different diagrams describing the same content ๐ญ If the publication formats conflict, review the XML and PDF files to sort it out ๐
4. General Page Format Layout ๐
One plain-text output gets made during publication, with basic pagination: a form feed instruction every 58 lines at most, blank lines included ๐ Instructions or a script will be made available by and for the community so people can strip out pagination however they like ๐
4.1. Headers and Footers ๐ธ
The front page front matter (like the RFC number and category) and the last page's back matter (the authors' full names and contact info) keep the structure described in [RFC7841], "RFC Streams, Headers, and Boilerplates" ๐ Running headers and footers won't be added anymore ๐ โโ๏ธ
4.2. Table of Contents ๐
To keep content as similar as possible across the publication formats, the table of contents lists section and subsection numbers and titles, but no page numbers โจ
4.3. Line Width ๐
Each line MUST be limited to 72 characters, followed by the end-of-line (EOL) character sequence ๐ฆ The EOL sequence the RFC Editor uses will be the two-character sequence CR LF (Carriage Return followed by Line Feed) ๐ซถ This limit includes any left-side indentation ๐
Heads up that the RFC Editor's EOL may change with different transports and in different display software ๐
4.4. Line Spacing ๐ท
Use single-spaced text within a paragraph, with one blank line between paragraphs ๐
4.5. Hyphenation ๐
Hyphenated words (e.g., "Internet-Draft") SHOULD NOT be split across successive lines ๐
5. Elements from the xml2rfc v3 Vocabulary ๐ง
The plain-text formatter uses the relevant tags from the xml2rfc v3 source file to build a doc that follows the layout and structure in the full RFC Style Guide [RFC7322], including the updates in the web portion of the Style Guide [STYLEWEB] ๐
6. Security Considerations ๐จ
The requirements for the plain-text format involve no significant security considerations ๐ Here's the plot twist though: as part of the larger format project, unintended changes to the text from the base XML file could corrupt a standard, practice, or critical piece of info about a protocol ๐ฑ๐ That's a real risk, so keep your eyes peeled ๐๐ฅ
7. References ๐
To be continued in part 2 ๐
7.1. Normative References ๐
okay so these are the docs you have to read first, bestie, no skipping ๐ Here's the full list, copied exactly:
[RFC3629] Yergeau, F., "UTF-8, a transformation format of
ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629,
November 2003, <http://www.rfc-editor.org/info/rfc3629>.
[RFC6949] Flanagan, H. and N. Brownlee, "RFC Series Format
Requirements and Future Development", RFC 6949,
DOI 10.17487/RFC6949, May 2013,
<http://www.rfc-editor.org/info/rfc6949>.
[RFC7322] Flanagan, H. and S. Ginoza, "RFC Style Guide", RFC 7322,
DOI 10.17487/RFC7322, September 2014,
<http://www.rfc-editor.org/info/rfc7322>.
[RFC7749] Reschke, J., "The "xml2rfc" Version 2 Vocabulary",
RFC 7749, DOI 10.17487/RFC7749, February 2016,
<http://www.rfc-editor.org/info/rfc7749>.
[RFC7841] Halpern, J., Ed., Daigle, L., Ed., and O. Kolkman, Ed.,
"RFC Streams, Headers, and Boilerplates", RFC 7841,
DOI 10.17487/RFC7841, May 2016,
<http://www.rfc-editor.org/info/rfc7841>.
[RFC7991] Hoffman, P., "The "xml2rfc" Version 3 Vocabulary",
RFC 7991, DOI 10.17487/RFC7991, December 2016,
<http://www.rfc-editor.org/info/rfc7991>.
[RFC7997] Flanagan, H., Ed., "The Use of Non-ASCII Characters in
RFCs", RFC 7997, DOI 10.17487/RFC7997, December 2016,
<http://www.rfc-editor.org/info/rfc7997>.
The big one is [RFC3629], which is all about UTF-8 ๐ธ It's giving foundations, literally the thing everything else is built on ๐ง
7.2. Informative References ๐ฆ
these ones are the extra reading, not required, but ngl they're such good background ๐ค Here's the list, exactly as written:
[INS2AUTH] RFC Editor, "Instructions to Request for Comments (RFC)
Authors", August 2004, <https://www.rfc-editor.org/
materials/instructions2authors.txt>.
[STYLEWEB] RFC Editor, "Web Portion of the Style Guide",
February 2016,
<http://www.rfc-editor.org/styleguide/part2/>.
[UNICODE-GLOSSARY]
The Unicode Consortium, "Glossary of Unicode Terms",
September 2016, <http://www.unicode.org/glossary/>.
[WIDOWS] Wikipedia, "Widows and orphans", September 2016,
<https://en.wikipedia.org/w/
index.php?title=Widows_and_orphans&oldid=738356204>.
[XML-ANNOUNCE]
Flanagan, H., "Subject: Direction of the RFC Format
Development effort", May 2013,
<http://www.rfc-editor.org/pipermail/
rfc-interest/2013-May/005584.html>.
The [WIDOWS] entry is a Wikipedia page, so it's the most relaxed read of the bunch ๐
IAB Members at the Time of Approval ๐
so these are the IAB members who were in the room when this memo got the green light โจ Here's the squad, in alphabetical order:
Jari Arkko
Ralph Droms
Ted Hardie
Joe Hildebrand
Russ Housley
Lee Howard
Erik Nordmark
Robert Sparks
Andrew Sullivan
Dave Thaler
Martin Thomson
Brian Trammell
Suzanne Woolf
Acknowledgements ๐ซถ
this doc owes a HUGE thank-you to the RFC Format Design Team ๐ The people who put in the work are Nevil Brownlee, Tony Hansen, Joe Hildebrand, Paul Hoffman, Ted Lemon, Julian Reschke, Adam Roach, Alice Russo, Robert Sparks, and David Thaler. Iconic behaviour, honestly ๐
Author's Address ๐
the author behind it all is Heather Flanagan, from the RFC Editor ๐
Heather Flanagan
RFC Editor
Email: rse@rfc-editor.org
URI: http://orcid.org/0000-0002-2647-2220
๐ฆ where this page comes from
- ietf: rfc7994 2016-12
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms