<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>RFCs · starostka.io</title>
  <link rel="alternate" href="https://rfc.starostka.io/"/>
  <link rel="self" href="https://rfc.starostka.io/feed.xml"/>
  <id>https://rfc.starostka.io/</id>
  <updated>2026-11-04T00:00:00Z</updated>
  <rights>CC BY-SA 4.0</rights>
  <entry>
    <title>RFC 0001: Request for comments</title>
    <link rel="alternate" href="https://rfc.starostka.io/0001"/>
    <id>https://rfc.starostka.io/0001</id>
    <published>2026-11-04T00:00:00Z</published>
    <updated>2026-11-04T00:00:00Z</updated>
    <author><name>Benjamin Starostka Jakobsen</name></author><category term="meta"/><category term="process"/>
    <summary>Why I write RFCs, when one is worth writing, and how an RFC moves from a draft to this site.</summary>
    <content type="html">&lt;p&gt;Writing an idea down makes me think it through. It also lets other people read
it, question it and come back to it later. An RFC, a request for comments, is
how I do that for the platform I run and for the work around it.&lt;/p&gt; &lt;h2 id=&quot;when-to-write-one&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#when-to-write-one&quot;&gt;When to write one&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Write an RFC when a decision is hard to undo, when it changes how other people
work, or when its reasons will matter later. A new service, a change to how
people sign in, a change to how data is kept and a new way of working for a
team are all good candidates.&lt;/p&gt; &lt;p&gt;A small fix does not need one. When in doubt, write a short one. One page is
enough.&lt;/p&gt; &lt;h2 id=&quot;what-goes-in-it&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#what-goes-in-it&quot;&gt;What goes in it&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt;The problem, and why it needs solving now.&lt;/li&gt; &lt;li&gt;The background a reader needs.&lt;/li&gt; &lt;li&gt;The options, with what each one costs and what it gives.&lt;/li&gt; &lt;li&gt;The choice, and the reasons for it.&lt;/li&gt; &lt;li&gt;The open questions and the risks.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Write down why, and not only what. A reader a year from now uses the reasons
to decide whether the choice still holds.&lt;/p&gt; &lt;h2 id=&quot;how-an-rfc-moves&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#how-an-rfc-moves&quot;&gt;How an RFC moves&lt;/a&gt;&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;A draft starts in the wiki. The people it affects can read it there and
comment next to the text. Drafts are private.&lt;/li&gt; &lt;li&gt;When the draft is ready, it gets the next free number and comes here with
the status &lt;code&gt;discussion&lt;/code&gt;. The discussion stays in the wiki, and the RFC
links to it.&lt;/li&gt; &lt;li&gt;When the discussion settles, the status becomes &lt;code&gt;published&lt;/code&gt;, and the RFC
is a reference.&lt;/li&gt; &lt;li&gt;If we decide to do what it proposes, the status becomes &lt;code&gt;accepted&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;If we stop pursuing it, the status becomes &lt;code&gt;abandoned&lt;/code&gt;. It stays here,
because its reasons are still worth reading.&lt;/li&gt;&lt;/ol&gt; &lt;figure class=&quot;diagram&quot;&gt;&lt;svg width=&quot;384pt&quot; height=&quot;98pt&quot;
 viewBox=&quot;0.00 0.00 384.00 98.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 94)&quot;&gt;
&lt;!-- draft --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;draft&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M58.98,-59C58.98,-59 12,-59 12,-59 6,-59 0,-53 0,-47 0,-47 0,-35 0,-35 0,-29 6,-23 12,-23 12,-23 58.98,-23 58.98,-23 64.98,-23 70.98,-29 70.98,-35 70.98,-35 70.98,-47 70.98,-47 70.98,-53 64.98,-59 58.98,-59&quot;/&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;35.49&quot; y=&quot;-37.4&quot; font-family=&quot;Inter&quot; font-size=&quot;12.00&quot;&gt;draft (wiki)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- discussion --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;discussion&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M160.98,-59C160.98,-59 118.98,-59 118.98,-59 112.98,-59 106.98,-53 106.98,-47 106.98,-47 106.98,-35 106.98,-35 106.98,-29 112.98,-23 118.98,-23 118.98,-23 160.98,-23 160.98,-23 166.98,-23 172.98,-29 172.98,-35 172.98,-35 172.98,-47 172.98,-47 172.98,-53 166.98,-59 160.98,-59&quot;/&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;139.98&quot; y=&quot;-37.4&quot; font-family=&quot;Inter&quot; font-size=&quot;12.00&quot;&gt;discussion&lt;/text&gt;
&lt;/g&gt;
&lt;!-- draft&amp;#45;&amp;gt;discussion --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;draft&amp;#45;&amp;gt;discussion&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M71.47,-41C79.11,-41 87.28,-41 95.21,-41&quot;/&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;95.05,-44.5 105.05,-41 95.05,-37.5 95.05,-44.5&quot;/&gt;
&lt;/g&gt;
&lt;!-- published --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;published&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M259.65,-82C259.65,-82 220.98,-82 220.98,-82 214.98,-82 208.98,-76 208.98,-70 208.98,-70 208.98,-58 208.98,-58 208.98,-52 214.98,-46 220.98,-46 220.98,-46 259.65,-46 259.65,-46 265.65,-46 271.65,-52 271.65,-58 271.65,-58 271.65,-70 271.65,-70 271.65,-76 265.65,-82 259.65,-82&quot;/&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;240.31&quot; y=&quot;-60.4&quot; font-family=&quot;Inter&quot; font-size=&quot;12.00&quot;&gt;published&lt;/text&gt;
&lt;/g&gt;
&lt;!-- discussion&amp;#45;&amp;gt;published --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;discussion&amp;#45;&amp;gt;published&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M173.45,-48.59C181.13,-50.39 189.43,-52.33 197.46,-54.21&quot;/&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;196.54,-57.59 207.07,-56.46 198.13,-50.77 196.54,-57.59&quot;/&gt;
&lt;/g&gt;
&lt;!-- abandoned --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;abandoned&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M363.62,-36C363.62,-36 319.65,-36 319.65,-36 313.65,-36 307.65,-30 307.65,-24 307.65,-24 307.65,-12 307.65,-12 307.65,-6 313.65,0 319.65,0 319.65,0 363.62,0 363.62,0 369.62,0 375.62,-6 375.62,-12 375.62,-12 375.62,-24 375.62,-24 375.62,-30 369.62,-36 363.62,-36&quot;/&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;341.64&quot; y=&quot;-14.4&quot; font-family=&quot;Inter&quot; font-size=&quot;12.00&quot;&gt;abandoned&lt;/text&gt;
&lt;/g&gt;
&lt;!-- discussion&amp;#45;&amp;gt;abandoned --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;discussion&amp;#45;&amp;gt;abandoned&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M173.06,-37.3C206.42,-33.46 258.91,-27.41 296.24,-23.11&quot;/&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;296.27,-26.63 305.8,-22.01 295.47,-19.68 296.27,-26.63&quot;/&gt;
&lt;/g&gt;
&lt;!-- accepted --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;accepted&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M358.62,-90C358.62,-90 324.65,-90 324.65,-90 318.65,-90 312.65,-84 312.65,-78 312.65,-78 312.65,-66 312.65,-66 312.65,-60 318.65,-54 324.65,-54 324.65,-54 358.62,-54 358.62,-54 364.62,-54 370.62,-60 370.62,-66 370.62,-66 370.62,-78 370.62,-78 370.62,-84 364.62,-90 358.62,-90&quot;/&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;341.64&quot; y=&quot;-68.4&quot; font-family=&quot;Inter&quot; font-size=&quot;12.00&quot;&gt;accepted&lt;/text&gt;
&lt;/g&gt;
&lt;!-- published&amp;#45;&amp;gt;accepted --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;published&amp;#45;&amp;gt;accepted&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M271.92,-66.47C281.08,-67.2 291.26,-68.02 300.91,-68.8&quot;/&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;300.57,-72.28 310.82,-69.6 301.13,-65.31 300.57,-72.28&quot;/&gt;
&lt;/g&gt;
&lt;!-- published&amp;#45;&amp;gt;abandoned --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;published&amp;#45;&amp;gt;abandoned&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M271.92,-49.82C279.78,-46.19 288.38,-42.2 296.77,-38.32&quot;/&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;298.21,-41.5 305.82,-34.13 295.27,-35.15 298.21,-41.5&quot;/&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/figure&gt; &lt;h2 id=&quot;numbers-and-replacements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#numbers-and-replacements&quot;&gt;Numbers and replacements&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;An RFC keeps its number for good, and the number is its address. This one is &lt;code&gt;rfc.starostka.io/0001&lt;/code&gt;, so a new title does not break a link. An RFC can still
be corrected after it is published, and its updated date says when.&lt;/p&gt; &lt;p&gt;When a new RFC takes over from an old one, the old one says “Replaced by” and
links to the new one. The new one lists what it replaces.&lt;/p&gt; &lt;h2 id=&quot;who-can-read-them&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#who-can-read-them&quot;&gt;Who can read them&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Every RFC on this site is public. Work that cannot be public, such as security
details or other people’s information, stays in the wiki.&lt;/p&gt;</content>
  </entry>
</feed>
