While there are many tools that can be used by I-D authors, there are some that have been specifically developed to support I-D authors and are commonly referred to. This catalog is a reference catalog for these tools and is intended to supplement the task/context-specific mentions of the tools elsewhere in this documentation, not replace it.
The catalog below includes a feature classification which lists the following for each tool:
The tools generally support one or more of the following modes of operation:
The tools generally provide one of more of the following broad operations:
The formats that we are aware of tools supporting include: AsciiDoc, DOCX, EPUB, LaTeX, Markdown, nroff, Org Mode, PDF, plaintext, RFCXML, as well as the formal languages of ABNF, MIB, YANG and SVG.
Some tools only support the previous version of RFCXML (v2) and the format is written as RFCXML(old) in the table where that occurs, as well as "No" in the "Supports v3" column.
Tool | Description |
---|---|
bibtex2rfc | Generates BibXML references from BibTeX citations |
bibxml2md | Generates Markdown references from BibXML references |
bap | Extract and validates ABNF |
id2xml | Generates RFCXML from plain text I-Ds |
idnits | Check plain text I-D for submission nits |
ietf-publisher | A GitHub action that you can use to automate the build of PDF, HTML and TXT versions of an RFC written in Markdown |
kramdown-rfc | Generates RFCXML from Markdown I-Ds |
lyx2rfc | Generates RFCXML from Lyx (LaTeX) I-Ds and then transforms using xml2rfc |
metanorma-ietf | Generates RFCXML from AsciiRFC (AsciiDoc) I-Ds |
mmark | Generates RFCXML from Markdown I-Ds |
nroff2xml | Generates RFCXML from nroff I-Ds |
pyang | Validates and converts YANG modules |
rfcdiff | Side-by-side comparison of an I-D and another version or an RFC |
rfcfold | Handling of long lines in width-bounded text content, e.g., code fragments or example text, in an I-D or RFC |
rfclint | Validates RFCXML documents |
rfcstrip | Extracts code components, YANG modules and SMIv2 modules from RFCs and Internet Drafts, and extracts and unfolds artwork from RFCs and Internet Drafts in XML format |
svgcheck | Validates RFC-specific SVG and generates conformant SVG |
xml2rfc | Validates RFCXML and plain text I-Ds and converts to multiple output formats |
xml2rfc-xxe | A configuration to assist editing RFCXML documents using XMLMind XML Editor |
xym | Extracts YANG modules from I-Ds and RFCs |
YANG validator | Extract and validate YANG modules |
Tool | Modes | Operations | Input formats | Output formats | Supports v3 |
---|---|---|---|---|---|
bibtex2rfc | Build, CLI | Convert | BibTex | BibXML | Yes |
bibxml2md | Build, CLI | Convert | BibXML | RFCXML(old) | No |
bap | Build, CLI | Extract, Validate | ABNF | - | Unknown |
id2xml | Build, CLI | Convert | plaintext | RFCXML | Yes |
idnits | Build, CLI, Web | Validate | plaintext | - | N/A |
ietf-publisher | Build, CLI | Convert | Markdown | PDF, HTML, TXT | ? |
kramdown-rfc | Build, CLI, Web | Convert, Validate | Markdown | RFCXML | Yes |
lyx2rfc | ? | Validate, Convert | LaTeX(Lyx) | ? | No |
metanorma-ietf | Build, CLI | Validate, Convert | AsciiDoc(AsciiRFC) | RFCXML | Yes |
mmark | Validate, Convert | Build, CLI | Markdown | RFCXML | Yes |
nroff2xml | Build, CLI | Convert | nroff | RFCXML(old) | No |
pyang | Build, CLI | Validate, Convert | YANG | ? | N/A |
rfcdiff | Web | Compare | plaintext | - | N/A |
rfcfold | CLI | Convert | plaintext | plaintext | N/A |
rfclint | Build, CLI | Validate | RFCXML | RFCXML | Yes |
rfcstrip | CLI | Extract | plaintext, RFCXML | YANG, SMIv2, plaintext | Yes |
svgcheck | Build, CLI, Web | Validate, Convert | SVG | SVG | Yes |
xml2rfc | Build, CLI, Web | Validate, Convert | RFCXML, RFCXML(old), plaintext | RFCXML Plain text, PDF, HTML, HTMLised, EPUB, nroff | Yes |
xml2rfc-xxe | Editor | Validate, Insert | RFCXML(old) | RFCXML(old) | No |
xym | Build, CLI | Extract | RFCXML | YANG | Yes |
YANG validator | Web | RFCXML | YANG | Yes |
Tool | Author | Ownership | License | Maintained | Maintainer |
---|---|---|---|---|---|
bibtex2rfc | Yaron Sheffer | Yaron Sheffer | Public domain | Yes | Yaron Sheffer |
bibxml2md | Yaron Sheffer | Yaron Sheffer | Public domain | Yes | Yaron Sheffer |
bap | Bill Fenner | Bill Fenner | Unknown | No | None |
id2xml | Henrik Levkowetz | IETF Trust | Revised BSD | Unknown | Unknown |
idnits | Henrik Levkowetz | Henrik Levkowetz | GPL | Yes | Tools Team |
ietf-publisher | Will Hawkins | Will Hawkins | GPLv3 | Yes | Will Hawkins |
kramdown-rfc | Carsten Bormann | Carsten Bormann | MIT | Yes | Carsten Bormann |
lyx2rfc | Nico Williams | Nico Williams | Unknown | No | None |
metanorma-ietf | Ribose | Ribose | Simplified BSD | Yes | Ribose |
mmark | Miek Gieben | Miek Gieben | Simplified BSD | Yes | Miek Gieben |
nroff2xml | Tomek Mrugalski | IETF Trust | Revised BSD | No | None |
pyang | Martin Bjorklund | Martin Bjorklund | ISC | Yes | Martin Bjorklund |
rfcdiff | Henrik Levkowetz | Henrik Levkowetz | Unknown | Unknown | Unknown |
rfcfold | Kent Watsen and Erik Auerswald | IETF Trust | Revised BSD | Yes | Kent Watsen and Erik Auerswald |
rfclint | Jim Schaad | IETF Trust | Revised BSD | Yes | AMS |
rfcstrip | Multiple | Frank Strauss, Technical University of Braunschweig, and other parties | A custom license | Yes | Martin Bjorklund |
svgcheck | Jim Schaad | IETF Trust | Revised BSD | Yes | Tools Team |
xml2rfc | Henrik Levkowetz | IETF Trust | Revised BSD | Yes | Tools Team |
xml2rfc-xxe | Warren Kumari | Warren Kumari | Unknown | No | None |
xym | Multiple | Cisco Systems | Revised BSD | Yes | Einar Nilsen-Nygaard |
YANG validator | Multiple | IETF Trust | Revised BSD | Yes | Pantheon |
There are a number of miscellaneous tools, not directly related to drafting I-Ds and not included in the catalog, that authors may find useful:
ietf-cli
A multi-functional command line tool for manipulating I-Ds and RFCs and local repositories.
print_rfc_or_draft
A simple program that prints an Internet Draft (ID) or RFC. Because of the difference between the number of lines on laser printers and line / dot-matrix printers, each "page" of the draft actually takes up 2 pages and you end up with lots of pages with just a one line footer. This script tries to fix that by downloading the draft, converting it to a PDF and then printing it.
Rewrite IETF ID URLs to Tools or Datatracker
Google Chrome extension that rewrites I-D URLs that point to www.ietf.org to point to datatracker.ietf.org or tools.ietf.org.
RFC-what-I-mean
Checks a list of RFCs to find the most recent list and their dependents. It needs to run with a copy of rfc-index.txt as input.
rfc-mode
A plugin Emacs major mode that provides support for reading RFCs.