Request for Comments (RFCs) are the official guiding documents that shape the internet via technical standards, protocols, and procedures. This encompass the following:
-
HyperText Transfer Protocol (HTTP)
-
Transmission Control Protocol (TCP)
-
Internet Protocol (IP)
-
Domain Name System (DNS)
-
Transport Layer Security (TLS)
RFCs are also the primary output of the Internet Engineering Task Force (IETF) which was founded in 1986.
The following will help you stay on top of the ever changing RFC landscape.
Highlights
There are a lot of RFCs to read through. At the time of this writing, there are 10,042 total. We don’t have time to go through them all. That said, here’s a few of my favorites (if not already aware, yourself):
-
RFC 6648 (Deprecating the "X-" Prefix and Similar Constructs in Application Protocols): Specifies avoiding the use of
x-prefixes for custom HTTP headers. If you are using custom header like this, please stop. -
RFC 8288 (Web Linking): Specifies how to provide links, especially, navigation which allows you to provide rich information in HTTP responses for any content, not only APIs.
-
RFC 8615 (Well-Known Uniform Resource Identifiers (URIs)): Specifies the files and formats in the
/.well-known/directory at the root of your site. These are authoritative and machine readable for discovery and information about your site. Sadly, some files don’t adhere to this specification and live at the root of your site. Examples:robots.txt,humans.txt, andsitemap.xml. -
RFC 9110 (HTTP Semantics): Specifies all semantics for making HTTP requests/response especially all verbs and how to use them (see Section 9.3).
-
RFC 9113 (HTTP/2): Lots to read but important to note that header keys must be lower case (see Section 8.2).
-
RFC 9114 (HTTP/3): As mentioned with HTTP/2, above, header keys must be lower case (see Section 4.2).
-
RFC 9264 (Linkset: Media Types and a Link Relation Type for Link Sets): Compliments RFC 8288 by specifying a JSON set of links which is especially handy when the number of links might be large by pointing to a specific, cacheable, document.
-
RFC 9309 (Robots Exclusion Protocol): Specifics how to use
robots.txtthat must be at the root of your site (sadly, does not adhere to RFC 8615). -
RFC 9457 (Problem Details for HTTP APIs): Specifies how to provide structured responses for API errors. If you’re not using this already, definitely start.
-
RFC 9745 (The Deprecation HTTP Response Header Field): Specifies how to indicate to clients that the endpoint is deprecated including a future date/time so you know how long you have to make changes on your end. Plays nice with RFC 8288 (mentioned above).
-
RFC 10008 (The HTTP QUERY Method): Adds the new HTTP QUERY verb which is a hybrid of GET and POST requests which allows you to make idempotent GET requests but with the power of POST to supply a body of search criteria that would otherwise be too much for a GET request.
Gems
Some RFCs can be quite involved in terms of what is needed for compliance. This is where a Ruby gem is a powerful solution in being able to provide an implementation for each specification. This allows you reuse a single implementation across multiple applications. A few of the following projects provide implementations to a couple of the RFCs mentioned above:
-
RFC API Problem: A RFC 9457 Problem Details for HTTP APIs implementation.
-
RFC Web Link: A RFC 8288 Web Linking implementation.
Definitely recommend adding to your stack to enhance your HTTP responses/requests further.
Tools
To augment your workflow, you’ll want tap into the following tools for quick information sourcing including staying on top of the latest changes within the industry:
-
RFC Editor: The primary source of information where you can search and read up on all RFCs as well as subscribe, via syndicated feed, for all of the latest news and information.
-
RFC Explorer: Provides a graphical interface to all RFCs as nodes linked to each other. This allows you to click on each RFC (node) to dive further, zoom in and out, etc. The main interface groups all material by areas of work. Unfortunately, there isn’t a way to quickly search by RFC number.
-
IETF Datatracker: The primary database for authors and maintainers of RFCs. The best part about this tool is a visual timeline at the top of each RFC which provides a clear and quick understanding of the RFC over time.
-
IETF Diff: Handy for comparing and contrasting the changes between document revisions.
-
Pennyworth: For Alfred fans, this gem allows you to quickly access the RFC Editor, search, and fuzzy type to lookup documentation on any RFC.
Syndication
Syndication is a powerful way to stay on top of the changes being introduced. You can subscribe via RSS or Atom by adding the RFC Editor URL to your feed reader and letting it do the work of informing you when new changes are posted.
Conclusion
As software engineer, especially in web development, staying on top of the latest RFCs news and information is critical. Even better, automatically getting the latest updates via syndication allows you to learn about changes within the industry with minimal effort.
Enjoy and may your stack be built upon the wisdom of others.
