365 RFCs

Commenting on one RFC a day in honor of the 50th anniversary of the first RFC.

by Darius Kazemi, Jan 8 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

An attempt at synthesis

RFC-8 is the first RFC in the official archives that is only available in scanned form. It was never typeset. It is hand written.

At least the title page is typed on a typewriter, so we know without a doubt that it's called “ARPA Network Functional Specifications”, dated May 5th 1969, and authored by Gérard Deloche of UCLA, also the author of RFC-7. You'll recall that RFC-7 has a note apologizing for the fact that the handwriting is atrocious and it was very difficult to transcribe. This one is too, but this time we get to enjoy squinting at the handwriting ourselves.

For reference, this is what we're dealing with:

a bunch of squiggly hand writing

Not the worst it could be but... not great.

The technical content

The document spells out the math for HOST-to-HOST checksums (error checking). It mentions that IMP-to-IMP checksums exist but that it's a BB&N thing so not relevant to this working group right now.

It reiterates what was already said in RFC-1 and RFC-2 about the link system between hosts: 32 links, 0 is a control link, these are TTY-style connections.

There's a summary of the Decode-Encode Language as defined in RFC-5, and a repeat of a bunch of the information in RFC-7.

Analysis

This seems to be a synthesis document: an attempt to lay out what a connection from UCLA to SRI using DEL to do interactive remote applications on SRI's cool graphical operating system NLS would look like. The only thing “new” I can find in here is the actual HOST-to-HOST checksum math. Plus a cool stick figure.

an actually totally normal looking stick figure

Further reading

This is an aside, but the scanned copy appears to be Jon Postel's copy of the RFC. Postel was the editor of the RFC series from almost the very beginning of the series until his untimely death in 1998. Postel was also in charge of top level domain assignment and IP addresses before ICANN was established right around the time of his death. For many years Postel essentially was the internet. There's a lot of information about him at USC's Postel Center and RFC-2468 is a remembrance of Postel by Vint Cerf.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi

In 2019 I read one RFC a day in chronological order starting from the very first one. More on this project here.

Introduction RFC-1: Setting the stage RFC-2: A mystery, so soon?? RFC-3: Buckle up, it's about to get meta RFC-4: Planning the project RFC-5: DEL – the rich application layer that never was RFC-6: Syncing with BB&N RFC-7: Too long; didn't read RFC-8: An attempt at synthesis RFC-9: Host software, take 3

RFC-10: Shuffling the deck RFC-11: GORDO and the IMP RFC-12: Flowcharts RFC-13: End of file RFC-14: Miss Zarves RFC-15: Proposing TELNET RFC-16: M.I.T. RFC-17: Like email but slower RFC-18: Reducing congestion RFC-19: Some suggestions

RFC-20: ASCII RFC-21: Meeting minutes RFC-22: Revisions RFC-23: Multiple messages Update: scans of early RFCs RFC-24: Adding MITRE RFC-25: Link hygiene RFC-26: No RFC RFC-27: Adding Raytheon RFC-28: Time might be useful RFC-29: Milliseconds

RFC-30: Adding Stanford and Carnegie Mellon RFC-31: Down with long boxes RFC-32: Crystals RFC-33: New concepts for the network RFC-34: Absolute and relative time RFC-35: Save the date RFC-36: Updates to the protocol RFC-37: Meeting notes RFC-38: Multiplexing RFC-39: Error and status

RFC-40: Detailed errors and statuses RFC-41: Please provide timestamps RFC-42: A proposal for typed messages RFC-43: A meeting at Lincoln Laboratory RFC-44: A word from SDC RFC-45: See you in Atlantic City RFC-46: A power move RFC-47: Potential embarrassment RFC-48: Plateaus RFC-49: Levels

RFC-50: Converging on a protocol RFC-51: NIL RFC-52: More universities RFC-53: Making things official RFC-54: A proffering RFC-55: Squishy amoebas RFC-56: A bit of a hit-and-run RFC-57: Edge cases RFC-58: A big box of paper RFC-59: The case for perfect

RFC-60: A simpler NCP RFC-61: Another shot at interprocess communication RFC-62: A revision of another shot at interprocess communication RFC-63: Belated RFC-64: Marking considered harmful RFC-65: More marking RFC-66: Levels RFC-67: Wildly enthusiastic RFC-68: Acknowledging ACK RFC-69: Please unsubscribe

RFC-70: Padding math RFC-71: Enter the CCN RFC-72: Proposed moratorium RFC-73: Unnecessary changes RFC-74: A working NCP RFC-75: See you in Astroworld RFC-76: A new kind of Host RFC-77: A three-day meeting RFC-78: Human factors RFC-79: A conflict

RFC-80: Adaptive mechanisms RFC-81: Please send reading materials RFC-82: A fly on the wall RFC-83: A Language-Machine RFC-84: Reddy Dively RFC-85: Quarterly meetings RFC-86: A simple drawing format RFC-87: A network graphics meeting RFC-88: Punch cards and printers RFC-89: Historic moments

RFC-90: A resource to be shared RFC-91: Thinking about users RFC-92: Not issued RFC-93: Code zero RFC-94: Graphics suggestions RFC-95: Paper RFC-96: An experiment RFC-97: A Telnet protocol RFC-98: Logging in RFC-99: Atlantic City again

Fifty Years of RFCs

RFC-100: A catalog RFC-101: A winter meeting RFC-102: The Glitch Cleaning Committee RFC-103: Interrupting interrupts RFC-104: A reserved link RFC-105: Remote jobs RFC-106: A questionnaire RFC-107: An ultimatum RFC-108: Urbana attendance RFC-109: Connecting to Lincoln Lab

RFC-110: I have no characters yet I must type RFC-111: Under pressure RFC-112: Questionnaire results RFC-113: A success and some bugs RFC-114: FTP RFC-115: The NIC RFC-116: Atlantic City efficiency RFC-117: Glitches the Cleaning Committee missed RFC-118: One hundred copies RFC-119: Fortran subroutines

RFC-120: PL1 subroutines RFC-121: On-line operators RFC-122: Simple-minded RFC-123: Leading by example RFC-124: Found a typo RFC-125: A late reply from NASA RFC-126: NASA graphics RFC-127: Missing algorithm RFC-128: Bytes RFC-129: Socket names

RFC-130: Waiting on Telnet RFC-131: VIEWs on the network RFC-132: Off by one RFC-133: Sorry, forget it RFC-134: Endicott House RFC-135: Correspondence models RFC-136: Accounting RFC-137: Telnet for Atlantic City RFC-138: Data reconfiguration for Atlantic City RFC-139: Discussion of TELNET Protocol

RFC-140: Atlantic City agenda RFC-141: Nine comments on file transfer RFC-142: Time out RFC-143: Race conditions RFC-144: Data sharing RFC-145: Initial connection correction RFC-146: A data sharing committee RFC-147: Sockets RFC-148: Severe strains RFC-149: Accommodating Dr. Roberts

RFC-150: Interprocess communication RFC-151: Conflicts between levels RFC-152: Artificial intelligence online RFC-153: NIC Status RFC-154: Defensive pedantry RFC-155: More addressees RFC-156: Illinois status RFC-157: Optimization invitation RFC-158: Another pass at Telnet RFC-159: No RFC

RFC-160: A not-so-brief list RFC-161: Extra sockets RFC-162: NETBUGGER3 RFC-163: Notes from SJCC RFC-164: Extensive notes from SJCC RFC-165: A corrected ICP RFC-166: FML RFC-167: Sockets, reconsidered RFC-168: Air mail RFC-169: Other networks

RFC-170: Another list RFC-171: DTP RFC-172: FTP, again RFC-173: Sharing, or management? RFC-174: Wands, tablets, and fisheyes RFC-175: Socket length concerns RFC-176: The correct view RFC-177: Another crack at a graphics interface RFC-178: Interactive graphics RFC-179: New link numbers

RFC-180: Tell us about your file system RFC-181: Fractional displacements RFC-182: Compilations RFC-183: Character correspondences RFC-184: Supercomputer graphics RFC-185: Bring enough for the whole class RFC-186: Rotating cubes on the network RFC-187: An experimental network RFC-188: Data management meeting RFC-189: Some compliance with standards

RFC-190: Even more graphics description RFC-191: Split screens RFC-192: Graphics: the big picture RFC-193: Checking the boxes RFC-194: Stack machine RFC-195: Assumptions and their consequences RFC-196: Mail box RFC-197: Further ICP consideration RFC-198: Lincoln Labs checks in RFC-199: Data tablets

RFC-200: Another RFC list RFC-201: Not issued RFC-202: Deadlock RFC-203: Error-resistant communication RFC-204: The socket czar's opening gambit RFC-205: Telnet for text editors RFC-206: A Telnet client RFC-207: Meeting at Project MAC RFC-208: Addresses from the future RFC-209: Sorry about that, but also it's your fault

RFC-210: Fractions are bad RFC-211: More distribution lists RFC-212: Scheduling conflict RFC-213: BBN is walking on eggshells RFC-214: Checking more boxes RFC-215: TIP tips RFC-216: Putting two keyboards in one RFC-217: Changes to UCSB services RFC-218: Fake host RFC-219: The datacomputer

RFC-220: Not issued RFC-221: FTP for mail RFC-222: Grueling workshop RFC-223: Nine to five RFC-224: Renting mail boxes RFC-225: On-Line from afar RFC-226: Gee, this is swell Document: Gee Host Names and Numbers are Swell RFC-227: Transfer speed RFC-228: Someone's been reading the code RFC-229: Eight characters are better than six

RFC-230: Enter the minicomputer RFC-231: Let's keep standardizing RFC-232: Postponement RFC-233: Four characters is enough RFC-234: Map of MIT RFC-235: Mostly dead RFC-236: Programmers are lazy RFC-237: The NIC weighs in RFC-238: Encouraging explanations RFC-239: Combative about naming

RFC-240: Corrected statistics RFC-241: Our previous verbal comments RFC-242: A proposal from IBM RFC-243: A bibliography from IBM RFC-244: Not issued RFC-245: Group discounts RFC-246: New dates RFC-247: Actual comments RFC-248: Not issued RFC-249: Group discounts

RFC-250: Colliding ideas RFC-251: Weather data RFC-252: New week, same numbers RFC-253: Golden Pavillion RFC-254: A handbook RFC-255: An improvement RFC-256: IMP tests you RFC-257: Not issued RFC-258: Not issued RFC-259: Not issued

RFC-260: Not issued RFC-261: Not issued RFC-262: Not issued RFC-263: Long distances RFC-264: Data Transfer Protocol revisions RFC-265: File Transfer Protocol revisions RFC-266: Incremental improvement RFC-267: A new PDP-10 appears RFC-268: Requesting handbook information RFC-269: Simple minded experience

RFC-270: Missing attachment RFC-271: Reverting a change RFC-272: Not issued RFC-273: Let's settle this issue RFC-274: Another guidebook RFC-275: Not issued RFC-276: Online System course RFC-277: Not issued RFC-278: Electronic mail: potentially useful RFC-279: Not issued

RFC-280: Closure at last? RFC-281: Restart RFC-282: Quite hampering RFC-283: Jobs for TIPs RFC-284: Not issued RFC-285: Think creatively RFC-286: Network all the libraries RFC-287: Dismal results RFC-288: More dismal results RFC-289: Hope

RFC-290: More papers RFC-291: Speakers and protocols RFC-292: First pass at graphics RFC-293: More numbers RFC-294: Negotiating data types RFC-295: Protocols RFC-296: A computer that never was RFC-297: Stop your groaning RFC-298: Halfway online RFC-299: Information Management

RFC-300: List management RFC-301: IMP Goes Down RFC-302: A user test RFC-303: List management RFC-304: Data control facility RFC-305: Ghost hosts RFC-306: Network status RFC-307: A remote job frontend RFC-308: ARPANET Online RFC-309: Settling file transfer

RFC-310: Reconsidering FTP RFC-311: Graphics terminals RFC-312: Better Host-IMP error messages RFC-313: Computer based instruction RFC-314: Network graphics and cherry blossoms RFC-315: Network status RFC-316: Data management applications RFC-317: Reserving more links for measurement RFC-318: Neither clear nor succinct RFC-319: Network status

RFC-320: Network status RFC-321: Turtles RFC-322: Well known RFC-323: A ridiculously long discussion RFC-324: Meeting at UCLA RFC-325: An RJS client at Utah RFC-326: Network status RFC-327: Bye DTP RFC-328: Simplifying Telnet RFC-329: List management

RFC-330: Network status RFC-331: Distant hosts RFC-332: Network status RFC-333: Messaging switching: not just for IMPS anymore RFC-334: ARPA stress test RFC-335: Upgrading the rat's nest RFC-336: Level 0 graphics input RFC-337: Not issued RFC-338: The real world of users and servers RFC-339: Multiplexed Telnet

RFC-340: Telnet changes RFC-341: Not issued RFC-342: Network status RFC-343: No network on Tuesdays RFC-344: Network status RFC-345: Let's share the cost RFC-346: The network: in space! RFC-347: Echo process RFC-348: Discard process RFC-349: The socket czar

RFC-350: Accounting RFC-351: Graphics questionnaire RFC-352: TIP questionnaire RFC-353: Network status RFC-354: A fourth revision of FTP RFC-355: Re: satellites RFC-356: 24/7 support RFC-357: Remote controlled echoing RFC-358: Not issued RFC-359: Continued failure to upgrade

RFC-360: Finally, an RJE protocol RFC-361: Deamons [sic] RFC-362: Network status RFC-363: List management RFC-364: Our documentation sucks RFC-365: A letter

by Darius Kazemi, Jan 7 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here.

Too long; didn't read

RFC-7 is dated May 1969 and titled “HOST-IMP Interface”. It's authored by one Gérard Deloche, a Frenchman who was a graduate student in Computer Science at UCLA. The version hosted at the IETF opens with this note:

[The original of RFC 7 was hand-written, and only partially illegible copies exist. RFC 7 was later typed int NLS by the Augmentation Research Center (ARC) at SRI. The following is the best reconstruction we could do. RFC Editor.]

As a result there are sections transcribed as “(unreadable)” in the document.

We also know that Deloche is described as “somewhat independent” of the working group in RFC-1 by Steve Crocker.

If you'll recall from my reading of RFC-1, the HOST is basically a server on the network and the IMP is close to what we'd consider a router today. The IMPs were made by BB&N in New England. The HOSTs could be pretty much any computer in existence.

The technical content

The document states that “This study is based upon a study of the BBN Report No. 763”. I'm 90% sure this is an error, either in transcription or in the original document, and they are referring to BBN Report No. 1763, which is a monster 82-page document released in January 1969 titled “Initial Design for Interface Message Processors for the ARPA Computer Network”. According to Hobbes' Internet Timeline, January 1969 is when BB&N was awarded the APRA packet switching contract. It seems like this document would have been part of the proposal process. Perhaps parts of it were. In one version of the document I was able to find (linked in “Further reading” below) there was a preface missing from the bitsavers version I link above:

A contract was recently awarded to Bolt Beranek and Newman Inc (BBN) for the implementation of a four-node group of interface message processors (IMPs) for the ARPA computer network. This document describes our preliminary design plans for the IMPs and the network protocol.

Since implementation is only just beginning, some aspects of this design will probably change. This document is for information only and should not be construed as a firm specification.

Cambridge, Mass.

January 6, 1969

The summary lays out the same 16-bit header that I describe in my reading of RFC-1. Maximum length of a single message is 1006 bytes (for reference this is roughly 2 short paragraphs of a plain text document), so your HOST had better be able to break up bigger messages than that into a series of multipart messages. It talks about how after the header there is a 16-bit demarcator word that indicates the text of the message is about to begin.

That's basically it — if you read the BB&N report you'll see that once the IMP gets the packet it starts to add more complex headers than that for IMP-IMP communication, and a whole bunch of other stuff, but since this RFC is written for HOST implementors who just want to get their data over to the IMPs, they can skip all of that info.

Analysis

I choose to interpret “This study is based upon a study of the BBN Report” as “all of these RFCs so far have been like 5 pages long and none of you want to read a damn 80 page document so here's the TL;DR of how IMPs are designed.” This RFC is longer than most RFCs so far, but is also about 1/10th the size of the original report that it summarizes.

In a way this document is a “black boxing” of the IMP system. If all you care about is the IMP/HOST interface, why bother reading 82 pages of documentation where only 5-10 of them are relevant to that particular interface? This is specialization of expertise in action.

The RFC also mentions “Gordo documentation” — it seems GORDO was the operating system of the HOST at UCLA in 1969. But I couldn't find any more information about it, outside of RFCs, aside from a missing reference on a Wikipedia disambiguation page! I found a listing of the Leonard Kleinrock papers that implies there was a meeting some time in late 1969 or early 1970 where GORDO's name was changed to... SEX (Sigma EXchange system).

SPADE Admin Note 20: SPADE Meeting note (name change GORDO to SEX, Sigma EXchange System)

Good job guys, GORDO was just too silly of a name for an operating system, realy glad you changed it to SEX.

At any rate, this OS ran on the SDS Sigma 7 at UCLA and my best guess is that it was probably a one-off OS that only ever ran on that machine.

There is one conflicting report on this. Most sources say UCLA ran GORDO/SEX on an SDS Sigma 7, but the book Netizens by Ronda Hauben claims it was an SDS 940 running GORDO/SEX at SRI, whereas UCLA ran an SDS Sigma 7 running GENIE. I strongly suspect this source is wrong, and multiple other sources seem to show that they swapped GORDO and GENIE between the two institutions. Even RFC-11 claims that “GORDO is a time-sharing system implemented on SDS Sigma 7”, and I've only seen it associated with UCLA.

Further reading

BBN Report No 1763. There is another edition with the preface that I quote above at this US Department of Defense website.

RFC-11 has a lot of information about GORDO from August 1969, before it was renamed to SEX. (Sorry, I can't get over that name change.)

This excellent page of IMP documents is from Dave Walden, who worked at BB&N at this time. Includes some original IMP source code, which apparently people have managed to get running on emulated IMPs!

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 6 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here.

Syncing with BB&N

RFC-6 is from April 10th, 1969 and titled “Conversation with Bob Kahn”. This puts it one day after the reported publication of RFC-2, but two months before the publication of RFC-5. Yes these things are chronologically out of order, which I was not expecting. I think it has to do with the fact that RFCs were formalized well after these first ones were written so there's a lot of backdating and that kind of thing.

This RFC consists of notes on an informal conversation Steve Crocker had with BB&N's Bob Kahn (known as the co-inventor of TCP/IP).

The technical content

This is a very short document but the main point is that BB&N was willing to convert characters to 8-bit ASCII for transmission over the network.

Crocker also briefly summarizes the kinds of messages that can be sent between HOSTs and IMPs, and presumably this was important information to have confirmed by someone at BB&N (the makers of the IMP).

Analysis

The conversation happened “yesterday” which means it must have happened on April 9th, the date of publication of RFC-2. We know Kahn hadn't read any of the RFCs yet because this RFC closes with the note “I also summarized for Bob the contents of Network Notes 1, 2, and 3.” “Network notes” were what they were calling RFCs casually back then. RFC-3 was probably not published at this point but Crocker was its author and could have easily summarized his work in progress to Kahn.

Also interesting is how rapidly these early RFCs came out and how much emphasis there was placed on a kind of dialogue, or at least documenting the dialogue. As Elizabeth “Jake” Feinler would reminisce in RFC-2555, with the RFC system “a swath was instantly cut through miles of red tape and pedantic process. Was this radical for the times or what!!”

Further reading

ASCII was formalized as an information encoding standard in 1961 and President Johnson signed a memorandum saying US federal computers needed to use ASCII to communicate in 1968. Since ARPA was a US military network I guess it made ASCII the only real choice for the job. From the memorandum:

All computers and related equipment configurations brought into the Federal Government inventory on and after July 1, 1969, must have the capability to use the Standard Code for Information Interchange and the formats prescribed by the magnetic tape and paper tape standards when these media are used.

Full memorandum text is here.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 5 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here.

DEL – the rich application layer that never was

RFC-5 was published June 2, 1969 and authored by Jeff Rulifson of Stanford Research Institute. It's a really interesting one to me. It's the first RFC that I would call extremely technical, in that it appears to be the distribution of a technical paper that was presented by Rulifson on February 13 of that year. The paper is about DEL, the Decode-Encode Language.

But what is DEL? Well, it makes a lot more sense in the context of RFC-1, which describes the problem that DEL is trying to solve. Since sending a message over the network was estimated to take a half-second delay, if you naively sent every keystroke to a remote computer, you would need to wait at least a half second between every keystroke in an interactive console. So instead of naively sending every keystroke over the network in its own message:

A better solution would be to have the front-end of the remote program — that is the part scanning for <- and <CR> — be resident in our computer. In that case, only one five character message would be sent, i.e., H E L P <CR>, and the screen would be managed locally.

We propose to implement this solution by creating a language for console control. This language, current named DEL, would be used by subsystem designers to specify what components are needed in a terminal and how the terminal is to respond to inputs from its keyboard, Lincoln Wand, etc. Then, as a part of the initial protocol, the remote HOST would send to the local HOST, the source language text of the program which controls the console.

(Above quoted from RFC-1.) The idea is to not send data until the carriage return (<CR>, what would would call the Enter or Return key today) is pressed and then send that data all at once to the remote computer. Basically it batches local interactions and only sends them over the network when it makes sense from a user experience standpoint to wait a second for a response from the remote computer.

That's the first part of DEL. The other part of DEL, which was incredibly ambitious, was for sending essentially any kind of data including interactive graphical user interfaces and have it display cross-platform on basically any kind of computer.

Spoiler alert: DEL was never actually used in production. More on this later.

A Lincoln Wand, btw, is a kind of light pen and tablet input device invented by Larry Roberts at MIT Lincoln Labs. Kind of like a Wacom drawing tablet today. It was invented around the same time as the computer mouse and was one of the early “accepting x-y input from a user” devices. As I mentioned in my article about RFC-3, Roberts was known as the “father of ARPANET”, and died very recently on December 26, 2018. Lincoln Lab is still around and still doing US Department of Defense work.

The technical content

The document is laid out like a full paper, with an abstract and a foreword (misspelled “forward”). The foreword states:

The initial ARPA network working group met at SRI on October 25-26, 1968.

Which is good to know! It also means that it was almost exactly a calendar year between that first Network Working Group meeting and the first message sent over the network on October 29, 1969. It also means that it was about 6 months of NWG meetings until Steve Crocker wrote the first RFC. Also of note is that “It was generally agreed beforehand that the runmning of interactive programs across the network was the first problem that would be faced.”

The abstract does technically describe what DEL is for but not nearly as well as the part I quoted from RFC-1 above. It's your usual unhelpful scientific paper prose. The document as archived at the IETF is also extra difficult to understand because the block diagram illustrations have been converted to exceedingly unhelpful ASCII art during transcription.

DEL is paired with a subsystem called NST (Net Standard Translators) which basically translates any message from a sending computer that's not a meta command into a character set that the receiving computer can read. Recall that these computers could be using entirely different character encodings from one another, so the numerical value that represents the letter A could be different from one computer to the next.

There is a whoooole bunch of very technical specification of DEL syntax that frankly I am not going to take the time to learn in a day.

In addition to bundling and translating strings of character data, there is also code for passing along vector data over the network for graphical displays! Really cool how they are normalizing all the vector data to values between -1 and 1 (with 0,0 at the center of the screen) so you can send things from a display of arbitrary resolution to a display of a totally different arbitrary resolution.

I also like this warning:

It is assumed that all arithmetic and bit operations take place in the mode and style of the machine running the code. Anyone who takes advantage of word lengths, two’s compliment arithmetic, etc. will eventually have problems.

Because the hardware architecture of these computers could be so vastly different in this era (as everyone was making things up as they went along), there could be fundamental mismatches with how things like long numbers are stored. The classic example of this (possibly not what they are referring to here but the principle holds) is that some processors store numbers “big-endian” and some processors store number “little-endian”. This is an oversimplifcation but basically: if you want to represent a number large enough that it takes up more than one chunk of memory, what order do you store the number in? Like if the number consists of A combined with B and it takes two chunks of memory do you store it A B or B A? Some computers do it the first way, some do it the second way. This means that low-level math operations that work on one kind of computer will totally fail to work on the other kind of computer. I'm sure there were other incompatibilities between these machines that I'm not even thinking of, but that's the first one that comes to mind. Hence the warning. (More on “endianness” here.)

I mentioned that the paper doesn't do a great job setting things up in its abstract but it does manage to do something that a lot of modern computer science papers still don't do: it includes an example program at the end, which I imagine would be very very helpful to anyone trying to write their own translator in DEL.

In addition to the usual suspects we've seen so far, the distribution list at the end (people to whom this RFC was to be sent) includes one Mehmet Baray at UC Berkeley. This is the first mention of Berkeley in an RFC and the first mention of Baray. I can't find much information on him except that he's Turkish and got his Ph.D. in Electrical Engineering and Computer Science at UC Berkeley in 1970. This means he was probably a grad student assisting in these efforts at this time, but I'd love to know more.

Analysis

I'd never heard of DEL so I thought I'd look up what became of it, and at least according to Wikipedia it was never used. From the Wikipedia page for Jeff Rulifson:

He described the Decode-Encode Language (DEL), which was designed to allow remote use of NLS over ARPANET. Although never used, the idea was small “programs” would be down-loaded to enhance user interaction. This concept was fully developed in Sun Microsystems's Java programming language almost 30 years later, as applets.

“NLS” was Doug Englebart's amazing interactive GUI system that I've mentioned here before. The comparison to applets is apt; if implemented, DEL would have allowed for very complex, highly interactive graphical applications to be run over the network. This whole idea for DEL was scrapped by Spring of 1969 when BBN delivered the specification for HOST-IMP interaction. Here's a quote from Steve Crocker himself in RFC-2555, a historical look at 30 years of RFCs published as an RFC itself in April 1999 (twenty years ago, aaaaa):

When BBN issued its Host-IMP specification in spring 1969, our freedom to wander over broad and grand topics ended. Before then, however, we tried to consider the most general designs and the most exciting applications. One thought that captured our imagination was the idea of downloading a small interpretative program at the beginning of a session. The downloaded program could then control the interactions and make efficient use of the narrow bandwidth between the user's local machine and the back-end system the user was interacting with. Jeff Rulifson at SRI was the prime mover of this line of thinking, and he took a crack at designing a Decode-Encode Language (DEL) [RFC 5]. Michel Elie, visiting at UCLA from France, worked on this idea further and published Proposal for a Network Interchange Language (NIL) [RFC 51]. The emergence of Java and ActiveX in the last few years finally brings those early ideas to fruition, and we're not done yet. I think we will continue to see striking advances in combining communication and computing.

Further reading

The 1966 paper on the Lincoln Wand.

RFC-2555 is, of course, a valuable source of historical information on RFCs.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 4 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here.

Planning the project

RFC-4 debuts a new author, Elmer B. Shapiro. This is the only RFC he'll ever write, and I couldn't find much info about him beyond a stub page at Stanford Research Institute's Artificial Intelligence center saying he worked on Shakey the Robot. He had a couple publications in 1966 and 1967 about using AI agents for spying. Seems like an oddball choice for RFC writing.

But in many ways this is an oddball RFC.

First of all it's backdated to March 24th, 1969, a month before the previous three RFCs. And it is simply a bunch of notes in outline form with no narrative structure or context.

The technical content

This is a dump of notes, an outline consisting for 14 top-level items each broken down into a handful of sub-items. I've extracted the top-level items to give you a quick overview of what the document covers:

1  (n10) network checkout

2  Installation of communcation gear 8/1/69

3  Design and construct host-Imp interface 9/1/69

4  Imp installation 9/15/69

5  Debug host-Imp interface 10/1/69

6  Test messages between UCLA-SRI 10/15/69

7  Test messages between UCSB-SRI 11/15/69

8  Test messges between UTAH-SRI 12/15/69

9  Run simple TTY systems

10  Run simple typewriter systems

11  Run arbitrary terminals without local feedback
 
12  Run arbitrary terminals

13  Move files

14  Develop debugging techniques

Clearly this is a project plan. The idea was to have the first IMPs (Interface Message Processors, basically routers) in place by September 1969, and send the first messages between UCLA and SRI by October 15. History shows that they were basically on schedule, with the first ARPANET message eventually sent at 22:30 Pacific on October 29. By December 5th, UCLA, SRI, UCSB, and UTAH (University of Utah School of Computing) were all connected, ahead of this early schedule! By March 1970 the first east coast node would be added at BBN (where the IMP itself was developed).

For the test messages between the first two ARPANET nodes, UCLA and SRI (section 6) there is this diagram that I find really funny:

  6a  Network configuration

           SRI  |
                |
                |
                |
                |
                |
                |
                |
           UCLA |

There it is. The internet, visualized. For at least a few weeks in 1969.

Analysis

One interesting thing is that this plan was in place in March, which means RFCs 1 and 2 in April were written four months before any of the gear was actually installed. They hadn't even designed how host machines would physically connect to their IMPs at this point!

Further reading

This internet history timeline by Robert Hobbes Zakon is detailed yet also concise and cobbled together from a whole bunch of sources. I found his chart of ARPANET growth especially interesting.

How to follow this blog

You can subscribe to its RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 3 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Buckle up, it's about to get meta

RFC-3 is the first RFC that attempts to describe, well, what an RFC is. Steve Crocker, author of RFC 1, is back in the saddle, and we are instantly hit with his sardonic writing style. Titled “DOCUMENTATION CONVENTIONS”, it opens with the classic confusion of a loosely-defined interdisciplinary research project:

The Network Working Group seems to consist of Steve Carr of Utah, Jeff Rulifson and Bill Duvall at SRI, and Steve Crocker and Gerard Deloche at UCLA. Membership is not closed.

It “seems to consist”! I say this is classic confusion because remember, these are people at completely different institutions working with each other at great distances and by the way they are INVENTING THE INTERNET so it's not like they can all share a Trello board and Google Drive to stay in sync. In fact, Crocker himself has said “I remember having great fear that we would offend whoever the official protocol designers were” (quoted in Katie Hafner's Where the Wizards Stay Up Late). They just assumed that the official designers were sitting at BB&N or some other east coast defense contractor, when really their own group was about as close to anything official as existed at the time.

The technical content

This RFC is really short and non-technical so I'm just going to include the full text here and comment as we go.

The content of a NWG note may be any thought, suggestion, etc. related to the HOST software or other aspect of the network. Notes are encouraged to be timely rather than polished. Philosophical positions without examples or other specifics, specific suggestions or implementation techniques without introductory or background explication, and explicit questions without any attempted answers are all acceptable.

So right away the content scope is left extremely broad as long as it's related to the network they are trying to build. These “NWG notes” (which will eventually be coded as RFCs) are basically like a very slow email listserv uhhh two years before the invention of email. This basically says “anything goes but keep it on topic.”

Also they recommend notes be “timely rather than polished”. The reason these notes exist is to synchronize ideas early and iterate as rapidly as possible across these great geographical and institutional distances.

The minimum length for a NWG note is one sentence.

Can you imagine typing a single sentence and having it duplicated on paper and manually mailed to universities, defense contractors, and military bases and everyone basically has to read it? Someone really ought to invent a system for doing this remotely via computer...

These standards (or lack of them) are stated explicitly for two reasons. First, there is a tendency to view a written statement as ipso facto authoritative, and we hope to promote the exchange and discussion of considerably less than authoritative ideas. Second, there is a natural hesitancy to publish something unpolished, and we hope to ease this inhibition.

More Crocker wisecrack asides. I love this guy. And they are basically saying “please don't be a perfectionist about early ideas, you will stifle the development of the project if you do.” These are very wise rules to abide by when you are embarking on any creative endeavor, technical or otherwise. And in hindsight it seemed to work pretty well for them.

Every NWG note should bear the following information:

        1.  "Network Working Group"
            "Request for Comments:" x
            where x is a serial number.
            Serial numbers are assigned by Bill Duvall at SRI

        2.  Author and affiliation

        3.  Date

        4.  Title.  The title need not be unique.

Just laying out what should be in the header for these things. This is the exact header format used until RFC-5742 in December 2009 when they decided to organize RFCs by “streams” based on which organizations were publishing a given RFC. At that point they retired “Network Working Group” and started labeling things “Internet Engineering Task Force”, “Internet Architecture Board”, “Independent”, etc.

Also I laughed at “the title need not be unique”, which I guess was immediately demonstrated by RFC-1 and RFC-2 having the same title.

One copy only will be sent from the author's site to"

        1.  Bob Kahn, BB&N
        2.  Larry Roberts, ARPA
        3.  Steve Carr, UCLA
        4.  Jeff Rulifson, UTAH
        5.  Ron Stoughton, UCSB
        6.  Steve Crocker, UCLA

Reproduction if desired may be handled locally.

Okay so these RFCs are being sent to 6 facilities. BB&N, the New England defense contractor. ARPA, the government funding body. And then three western US research universities. It's weird to me that Stanford Research Institute isn't on this list?

Also note the trailing " in the first line. RFCs are not corrected after they are published, though I don't think this convention was formalized until later. Modern RFCs go through an extensive draft process before publishing because these things are meant to last forever unchanged.

And finally, sadly, Larry Roberts, second on that list, known as a “father of ARPANET”, died very recently on December 26, 2018. My internet went down as I attempted to look this up, which I choose to interpret as the network's equivalent of a moment of silence.

How to follow this blog

You can subscribe to its RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 2 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

A mystery, so soon??

RFC-2 kicks off with a bang: the first page is lost to history!!!! As a result we don't actually know what this RFC is titled.

Okay we do know the title, as it was mentioned by name in RFC-3, but that wasn't officially recognized until 2010 when an official RFC Errata was published stating:

RFC0002 was actually titled “HOST SOFTWARE”. This missing historical information is provided by RFC0003. Source: http://tools.ietf.org/html/rfc3

So... same title as RFC 1. Original.

(Update Jan 23 2019: there is now a scan of this missing page. It... looks exactly like every other RFC cover page from this era. Exciting. More on this here.)

This RFC is not exactly dated but according to RFC-2555 it was published on April 9, 1969, two days after RFC-1. Also according to Jake Feinler's recollections in RFC-2555, while RFC-1 was typed on a typewriter,

RFC 2 was produced online via the SRI NLS system and was entered into the online SRI NLS Journal. However, it was probably mailed to each recipient via snail mail by the NIC, as email and the File Transfer Protocol (FTP) had not yet been invented.

“Jake”, incidentally, is Elizabeth J. Feinler's nickname, as explained on the wiki page above. She's the first woman to show up in my little history project here. She was not involved directly in these early documents but she would join Englebart's group at Stanford in 1972 and would play a huge role in ARPANET over the next two decades.

The technical content

Here we get a significant expansion on how links work. The breezy prose of RFC 1 is replaced with technical bullet points that that are more useful for actually implementing the damn thing. The algorithms are painstakingly laid out in outline form. Not quite pseudocode because it's still all English (“This results in a successful return from the monitor to the requestor. The link number is returned to the requestor, and the link is established.”) but it's very specific English that can easily be converted to computer code. I write almost exactly in this style in a plain text document when I'm building a complex program as a kind of todo list.

Nothing earth shattering here, just expanding on what was already laid out in RFC 1:

  • connections between hosts comprise of 32 links (distinct communication channels) labeled 0 to 31
  • link 0 is reserved for meta communication about who is talking when
  • links 1-31 are reserved by a specific user at any given point. basically if you start sending information over link 7, you're going to continue hogging link 7 until you close your connection.
  • you can open up more than one link if you need to (but holy crap there's only 31 of them, please be nice)

We have our first mention of 8-bit ASCII character sets (important because most of these computer systems weren't remotely standardized so you needed to agree on like, what a letter “A” is represented by numerically).

Near as I can tell, almost nothing here conflicts with RFC 1. It simply expands what was proposed there in much greater detail. I guess that's why it has the same title as RFC 1. They really could be considered the same document.

General analysis

This document was authored by Bill Duvall, who is implied in RFC 1 as being, uh, basically Jeff Rulifson's assistant at Stanford Research Institute. (“Also present was Bill Duvall of SRI who has recently started working with Jeff Rulifson.”) I imagine his lack of seniority made him the natural choice to write up the meeting minutes.

This document also immediately establishes a pattern we'll continue to see in RFCs: a document that says “okay we talked about the stuff in a previous RFC and have some more concrete ideas of how it might work and here are those ideas.”

There's some irreverence in here too.

5b3 Interrogate status auxilliary link.

    5b3a Don’t know what, exactly, this should do, but it seems as
    though it might be useful.

I enjoyed this note on character translation:

4a1c3b How should we decide which messages should be
translated, i.e. is it desirable to not translate
everything (YES!!) and by what means can we use to
differentiate?

I think the idea here is that while the host might not use ASCII, we could leave it up to the IMP to translate messages to ASCII for transmission. But that's a computationally expensive operation, so they would like to identify if a message doesn't need translation in the first place so they can skip the whole damn process. The YES!! makes me imagine some uhhh heated moments in the meeting.

This document is written more like I expect a specification to be written: “here's your algorithms, now go translate them to code.”

Formatting by future generations

Oh and I forgot to mention with RFC 1: it seems that these early RFCs were transcribed from their original typewritten (sometimes handwritten) form into an electronic format in the late 1990s. So these documents I'm reading and that the public has access to are not the originals (the closest digital equivalent would be scans of the typewritten or sometimes handwritten documents.) I am currently reaching out to some computer historians to see if there are scans available. There are some scans widely available, for example of RFC-8, and I will post these as they come up.

This particular RFC was transcribed in October 1998 by Robbie Bennet and formatted in a fixed width layout by Kelly Tardif in October 1999. No I'm not going to list this for every RFC but I figured I'd do it once to acknowledge the historical preservation work.

More reading

It might be fun to look at the errata listing for this document? IDK.

How to follow this blog

You can subscribe to its RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 1 2019

I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

This post is probably going to be one of my longest because I need to set the historical context for RFCs in addition to talking about the actual RFC so, here we go!

Setting the stage

ARPANET was the precursor to the internet. I'm not going to go into the full history of the ARPANET but the original concept before it was even known as ARPANET was to have a redundant, decentralized communication network for the military and the government that could survive a nuclear attack since it didn't have a single point of failure. There was a proposal for a nameless, nuclear-survivable voice communication network that was published in 1964 by RAND Corporation, an extremely influential post-WWII American think tank that to this day is under-documented in terms of its influence (but here's a decent summary).

But it was mostly a proposal that was batted around, garnering small contracts here and there, until finally in June 1968 the real funding kicked in and work began in earnest. The ARPANET project resulted in the invention of TCP/IP and packet-switching, two absolutely fundamental internet technologies. For much of its early existence it connected a very specific slice of the United States: top tier research universities, US military research facilities, and various private defense contractors.

It was this round of 1968 funding that kicked off a whole bunch of events, including a series of meetings that would eventually be called the Network Working Group. A young grad student at UCLA named Steve Crocker had been attending meetings. He was the junior member of this group (only 25 at the time), which included Steve Carr, from University of Utah, and Jeff Rulifson and Bill Duvall from Stanford Research Institute.

Crocker, being such a junior member of the group, decided that one of the best ways he could contribute was to take meeting minutes. Like, maybe they shouldn't be just leaving random notes on blackboards and in people's short term memories, you know? So in April 1969, less than a year after the first Network Working Group meetings, he did just that. RFC 1 is the meeting minutes for a meeting as recorded by Crocker.

The technical content

Titled “Host Software”, RFC 1 lays out the handshake protocol for hosts (servers) to talk to other hosts. Keep in mind that nothing here necessarily describes how this stuff was eventually implemented. This was all just a plan for implementation!

Message headers and network topology

So in the parlance of the ARPANET, hosts are basically what we would consider servers today. It's the computer with a person on the other end that is either sending or receiving data and doing something with it. The proposal here is that messages between hosts are transmitted with a 16-bit header. 5 bits are reserved for the stating which host the message is to be delivered to. (This means they only planned for 32 interconnected servers at this point!)

1 bit was reserved for tracking information. That's right, they had plans for analytics as far back as 1969, which makes sense: no way to tell if this wacky networking concept even works if you can't measure it working. The bit said “this is a 'real' message that should be tracked by the Network Measurement Center at UCLA”. If the bit was not set then I'm guessing it was a measurement or some kind of meta message that wasn't supposed to be counted in their actual experiments.

To understand the next part of the header you should understand that the network was set up as a host (server) that talked to an IMP (an Interface Message Processor, basically what we'd call a router today), which communicated via a bundle of 32 links with another IMP connected to its host.

Network congestion was an extremely serious problem given the limited technology at the time, so a full 8 bits of the header are reserved for encoding information that was meant to mitigate this. Links are, basically, the communication highway that connects one host to another via its IMP router-like-thingy. Every pair of hosts is connected by “32 logical full-duplex connections over which messages may be passed in either direction”. In simple terms it means that any two servers could have 32 separate simultaneous streams of 0's and 1's passing back and forth. Each of these streams is a link, and they are numbered 0 to 31. However, according to the document, the IMPs couldn't handle 32 simultaneous connections and it was up to everyone on the network to be a good samaritan and not basically commit the 1969 version of a denial-of-service attack. My best reading of it is that these 8 bits are a way for a host to say “hey I'm using this small portion of the 32 channels right now, please don't use my channels and cause a collision, try using a different set of channels”! The 8 bits were proposed to be used at least in part to describe which of the 32 links between these IMPs should be used for a particular message. (I guess it's fortunate that they only planned for 32 servers. It would be trivial to just reserve one link channel for every host and call it a day. Private highways for everyone!)

Software requirements

They were keenly aware that people aren't going to adopt a new technology if it doesn't fit with their existing workflows. A section of the document called “Some Requirements Upon the Host-to-Host Software” states that they pretty much need to simulate a teletype interface. A teletype, or teleprinter is basically a typewriter hooked up to a phone line and not only could you type on it to send messages, but it could receive messages and type back at you, which was how you knew what the computer's output was. It was the main way people interacted with computers before computer monitors were affordable to build. Monitors were becoming more and more common by 1969 but teletype was still dominant tech that everyone knew how to use.

There's also a note about error checking. In addition to checking for errors between hosts, they also note that they'd like to see error checking between hosts and routers. There's a droll aside here:

(BB&N claims the HOST-IMP hardware will be as reliable as the internal registers of the HOST. We believe them, but we still want the error checking.)

BB&N, or BBN as it's now known, was and is an R&D company in New England. They were not as large as defense contractors like Raytheon (which now owns them) but were widely known for their work in acoustics, and defense contracts were a big part of their business. I spoke via email to Dave Walden, who worked at BB&N from 1967 to 1995, who says that by 1969 BB&N had about 800 employees and the revenue approximately half R&D/consulting business and half from products or paid services like their TELCOMP time sharing software. They were instrumental in ARPANET, and of course they made claims the communication between the server and the router (in modern terms) would be as error free as the communication on the circuits the server uses to talk to itself! Big talk from our New England eggheads.

The actual software

This lays out the basics of a handshake between two computers. It says that link 0 is reserved for initial handshaking, which is when one computer says “hey I want to talk to you” and the other computer says back “okay I am listening”. This is how the first computer knows it can start sending data.

Interestingly they also propose a special mode for “high volume transmission”, basically for sending large data files. The problem with big blobs of data is, well, what if your big blob of data happens to have the special code that normally means “drop this connection” in it? We have to be able to say “hey for the next little while, just ignore any weird messages you get and please assume everything is pure data.” This is still a problem we contend with today in many different computing contexts, and it's still incredibly annoying.

They're also concerned with latency. Specifically they call out Doug Englebart's console at Stanford Research Institute as an extra sophisticated and highly interactive computer that needed a low latency connection: this completely makes sense since by 1969 Englebart had already invented the computer mouse and was doing graphical computing with it!

They also discuss the Decode-Encode Language, DEL, which is super cool but I'll get to that in my post on RFC-5 in... four days. Jeez. What did I sign myself up for here.

Oh also I hope you like... well maybe it's not ASCII art but it was definitely typewriter art. There is some good-ass typewriter art in this document: (see edits below)

There are some diagrams in the RFC that were almost certainly hand-drawn in the originals but were updated to ASCII art in 1999 when these were transcribed for posterity by the IETF:

good-ass flowchart

(Okay, editing to add a brief aside: it's unclear if this art was in the original typewriter document as laid out or if the original document had inline hand-drawn diagrams. This document was translated to electronic form in 1997 and this diagram absolutely has the feel of a 90's textfile diagram. I'm actually more and more certain that this was hand drawn and the typewriter art was introduced in 1997 but I can't find scans of the original RFC. If you know how to find them, please let me know!!)

(Second edit: I haven't found scans of this document yet BUT there are scans of RFCs from just a month later like RFC-9 and the diagrams in these documents are hand-drawn as I suspected.)

(Third edit, Jan 23 2019: there are now scans at the Computer History Museum! Turns out they were beautiful hand-drawn diagrams. More info here.)

In the diagram you can see two hosts and their IMPs (labeled “I”). “NLS” over at the Stanford Research Institute node is Englebart's graphical computing system that you could tell they were practically drooling over.

Another super cool thing implied here is that these are all basically running their own home made operating systems. So this isn't like two Windows machines talking to each other. This is cross-platform communication.

General analysis

If you're familiar with RFCs you might think of them as standardization documents, and that is in part what they serve as today (it's more complex than that, many modern RFCs are categorized as “Experimental” or “Informational”). But back in 1969 RFCs were much more like speculative proposals, the kind of thing you might make an internal wiki page for in a project in a modern office. “Hey everyone, I had this idea to solve this engineering problem so I wrote this document, what do you think?”

The document's four paragraph long introduction concludes:

I present here some of the tentative agreements reached and some of the open questions encountered. Very little of what is here is firm and reactions are expected.

As implied by its name, the request for comment is a humble request, not an ultimatum.

Also of note: this thing is REALLY WELL WRITTEN. The language is very easy to understand and I'm in awe that 25 year old Crocker could write so clearly about extremely complex technology that didn't even exist yet. No wonder this kicked off a tradition of technical writing that would last literally half a century.

More reading

This blog post from Sam Schlinkert was a valuable resource in writing this post, as was ICANNWiki. You might want to read the book Sam is summarizing in his post, Where Wizards Stay Up Late: The Origins Of The Internet, by Katie Hafner.

The Internet Society has a detailed history of ARPANET and the multiple streams of work that converged over the mid-1960s from researchers working independently on these ideas.

How to follow this blog

You can subscribe to its RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Dec 31 2018

April 7th, 2019 is going to be the 50 year anniversary of the first ever Request for Comments, known as an RFC. These documents started out in 1969 as a way for ARPANET engineers to keep track of notes and discussions on their project. (ARPANET was run by the US Department of Defense and is considered the primary precursor to the modern internet.) I'll go more into what these documents are as we encounter them over the course of the year. But basically: they're just slightly formal documents attempting to formalize some knowledge about a project, like an internal page on a company wiki, that kind of thing.

In honor of this anniversary, I figured I would read one RFC each day of 2019, starting with RFC 1 and ending with RFC 365. I'll offer brief commentary on each RFC. I'm interested in computer history and how organizations communicate so I think this should prove pretty interesting even though RFCs themselves can be legendarily dry reading (the occasional engineering humor RFC notwithstanding).

I can only promise I'll cover all 365 RFCs in a year. I may post anywhere between 0 and 3 of these a day.

The posts

I keep an up-to-date table of contents.

How to follow this blog

You can subscribe to its RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

Enter your email to subscribe to updates.