<?xml version="1.0"?>
<?xml-stylesheet href="/transform" type="text/xsl"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:bs="http://purl.org/ontology/bibo/status/" xmlns:ci="https://vocab.methodandstructure.com/content-inventory#" xmlns:dct="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" lang="en" prefix="bibo: http://purl.org/ontology/bibo/ bs: http://purl.org/ontology/bibo/status/ ci: https://vocab.methodandstructure.com/content-inventory# dct: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# xhv: http://www.w3.org/1999/xhtml/vocab# xsd: http://www.w3.org/2001/XMLSchema#" vocab="http://www.w3.org/1999/xhtml/vocab#" xml:lang="en">
  <head>
    <title property="dct:title">Cool URIs Don't Change</title>
    <base href="https://doriantaylor.com/cool-uris-dont-change"/>
    <link href="document-stats#EaNalEolKu_S6fHUFeMQRI" rev="ci:document"/>
    <link href="elsewhere" rel="alternate bookmark" title="Elsewhere"/>
    <link href="this-site" rel="alternate index" title="This Site"/>
    <link href="http://purl.org/ontology/bibo/status/published" rel="bibo:status"/>
    <link href="" rel="ci:canonical" title="Cool URIs Don't Change"/>
    <link href="person/dorian-taylor#me" rel="dct:creator" title="Dorian Taylor"/>
    <link href="file/cool-uris-dont-change" rel="dct:hasPart foaf:depiction"/>
    <link href="file/abcs-of-content-driven-systems" rel="dct:hasPart"/>
    <link href="file/data-sovereignty" rel="dct:hasPart"/>
    <link href="file/documents-make-lousy-documentation" rel="dct:hasPart"/>
    <link href="annual-program-2019" rel="dct:references up" title="Annual Program: 2019"/>
    <link href="//www.theregister.co.uk/2019/05/17/salesforce_database_outage/" rel="dct:references"/>
    <link href="javascript:sendMail('doriantaylor.com','research','Cool%20URIs%20Don%5C%27t%20Change');" rel="dct:references"/>
    <link href="person/dorian-taylor" rel="meta" title="Who I Am"/>
    <link about="./" href="3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="./" href="f07f5044-01bc-472d-9079-9b07771b731c" rel="alternate" type="application/atom+xml"/>
    <link about="./" href="this-site" rel="alternate"/>
    <link about="./" href="elsewhere" rel="alternate"/>
    <link about="./" href="e341ca62-0387-4cea-b69a-cdabc7656871" rel="alternate" type="application/atom+xml"/>
    <link about="verso/" href="3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="verso/" href="this-site" rel="alternate"/>
    <link about="verso/" href="elsewhere" rel="alternate"/>
    <meta content="cool-uris-dont-change" datatype="xsd:token" property="ci:canonical-slug"/>
    <meta content="false" datatype="xsd:boolean" property="ci:indexed"/>
    <meta content="Motto: How much value gets lost to broken links?" name="description" property="dct:abstract"/>
    <meta content="2019-06-27T05:04:06+00:00" datatype="xsd:dateTime" property="dct:created"/>
    <meta content="2019-06-27T05:14:23+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2019-06-27T09:30:49+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2019-08-15T21:03:26+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2022-05-31T15:10:50+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta about="person/dorian-taylor#me" content="Dorian Taylor" name="author" property="foaf:name"/>
    <meta content="summary_large_image" name="twitter:card"/>
    <meta content="@doriantaylor" name="twitter:site"/>
    <meta content="Cool URIs Don't Change" name="twitter:title"/>
    <meta content="Motto: How much value gets lost to broken links?" name="twitter:description"/>
    <meta content="https://doriantaylor.com/file/cool-uris-dont-change" name="twitter:image"/>
    <object>
      <nav>
        <ul>
          <li>
            <a href="annual-program-2019" rev="dct:references" typeof="bibo:Note">
              <span property="dct:title">Annual Program: 2019</span>
            </a>
          </li>
          <li>
            <a href="data-sovereignty" rev="dct:references" typeof="bibo:Note">
              <span property="dct:title">Data Sovereignty</span>
            </a>
          </li>
          <li>
            <a href="documents-make-lousy-documentation" rev="dct:references" typeof="bibo:Note">
              <span property="dct:title">Documents Make Lousy Documentation</span>
            </a>
          </li>
          <li>
            <a href="the-abcs-of-content-driven-systems" rev="dct:references" typeof="bibo:Note">
              <span property="dct:title">The ABCs of Content-Driven Systems</span>
            </a>
          </li>
          <li>
            <a href="document-stats#EaNalEolKu_S6fHUFeMQRI" rev="ci:document" typeof="qb:Observation">
              <span>urn:uuid:68d6a512-894a-4bbf-84ba-7c750578c411</span>
            </a>
          </li>
        </ul>
      </nav>
    </object>
  </head>
  <body about="" id="Ek-Hu7-iQvzyFWCfBjE6IL" typeof="bibo:Note">
    <article>
      <figure id="EFjhxdMMYx0clspJO_zGvI">
        <img src="file/cool-uris-dont-change;knockout" alt="Cool URIs Don't Change"/>
        <h1>Cool <abbr title="uniform resource identifier">URIs</abbr> Don't Change</h1>
        <p><em>How much value gets lost to broken links?</em></p>
      </figure>
      <p><time>21 years ago</time>, the inventor of the Web <a href="https://www.w3.org/Provider/Style/URI" rel="dct:references">wrote a memo</a>. Its title, infamous in some circles, was <strong>Cool <abbr>URIs</abbr> Don't Change</strong>. Its message was simple: there is no excuse for broken links, at least within the confines of a given website. Two decades on, this problem has still not been solved&#x2014;or perhaps more accurately, the problem <em>has</em> been solved, it's just that the solution is not evenly distributed.</p>
      <section id="EQ5KfQPB5bSOq7vXfwOd0K">
        <h2>Origin Story</h2>
        <p>The problem of broken links has been in my crosshairs ever since I first encountered Sir Tim's memo. <a href="https://www.vox.com/2017/3/1/14771148/internet-archive-brewster-kahle-preservation-net-neutrality-donald-trump-recode-podcast" rel="dct:references">The average lifespan of a <abbr title="uniform resource identifier">URL</abbr> is something like 100 days</a>. Wouldn't it be an achievement to be able to claim a 404-free website? I have incorporated the principle on several projects dating back to about 2008, including this very website. Existing work from various sources includes:</p>
        <ul>
          <li>Techniques for decoupling the substantive job of making websites from deciding what to call the pages,</li>
          <li><a href="https://metacpan.org/release/Params-Registry" rel="dct:references">Code for the site-wide registry of query string keys <em>and</em> values</a>, marshalling, and serialization,</li>
          <li><a href="policy/http-url-path-parameter-syntax" rel="dct:references" title="HTTP URL Path Parameter Syntax">Design guidelines for <abbr>URI</abbr> path parameters</a> (the most-visited page on this accursed website!)</li>
        </ul>
      </section>
      <section id="EsQV-pBv_Z6x3vKI3w3fbI">
        <h2>The Program</h2>
        <p>Making unbreakable links requires treating <abbr>URIs</abbr> themselves like first-class content&#x2014;making special provisions to store and manage them. Deploying this technique is at least as big a design problem&#x2014;and an <em>organizational</em> problem&#x2014;as it is a technical one:</p>
        <ol>
          <li>First, somebody has to <em>care</em>, and caring about unbreaking links has to be somebody's official responsibility&#x2014;that is to say <dfn>content governance</dfn>.</li>
          <li>Next, development processes have to be changed&#x2014;in my anticipation only slightly&#x2014;to accommodate the policy.</li>
          <li>Finally, the technical infrastructure needs to be modified, which can be a small job or a prohibitive one, depending on the particular products in use.</li>
        </ol>
        <p>The program, therefore, is to define a set of guidelines your organization can follow, to achieve archive-grade reliability in your information resources, such that your users will never again trip on a 404:</p>
        <ul>
          <li>A <abbr>URI</abbr> design guide,</li>
          <li>Software libraries and example code,</li>
          <li>Whatever else needs to make it stick.</li>
        </ul>
      </section>
      <footer>
        <form action="javascript:sendMail('doriantaylor.com','research','Cool%20URIs%20Don%5C%27t%20Change');" id="Ep_CZsAfweXY-5VTvFNX1K">
          <h3>Interested? <button>Get In Touch</button></h3>
        </form>
        <h5>Or, have a look at these other research themes:</h5>
        <nav>
          <a rel="dct:references first" href="data-sovereignty" title="Data Sovereignty">
            <img src="file/data-sovereignty;knockout" alt="Data Sovereignty"/>
            <h4>Data Sovereignty</h4>
            <p>Possession is nine tenths of the law</p>
          </a>
          <a rel="dct:references" href="the-abcs-of-content-driven-systems" title="The ABCs of Content-Driven Systems">
            <img src="file/abcs-of-content-driven-systems;knockout" alt="The ABCs of Content-Driven Systems"/>
            <h4>The ABCs of<br/>Content-Driven Systems</h4>
            <p>Decoupling <strong>a</strong>ccess control from <strong>b</strong>randing <em>and</em> <strong>c</strong>ontent</p>
          </a>
          <a rel="dct:references prev" href="documents-make-lousy-documentation" title="Documents Make Lousy Documentation">
            <img src="file/documents-make-lousy-documentation;knockout" alt="Documents Make Lousy Documentation"/>
            <h4>Documents Make<br/>Lousy Documentation</h4>
            <p>Disencumbering organizational reference material</p>
          </a>
          
        </nav>
      </footer>
    </article>
  </body>
</html>
