{"id":1596,"date":"2006-07-19T13:47:48","date_gmt":"2006-07-19T17:47:48","guid":{"rendered":"http:\/\/www.markbaker.ca\/blog\/2006\/07\/19\/standards-as-axioms\/"},"modified":"2006-07-19T13:47:48","modified_gmt":"2006-07-19T17:47:48","slug":"standards-as-axioms","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2006\/07\/standards-as-axioms\/","title":{"rendered":"Standards as axioms"},"content":{"rendered":"<img decoding=\"async\" src=\"http:\/\/www.markbaker.ca\/images\/vectors.gif\" \/>\n\n<p>An important, nay, <em>foundational<\/em> part of my mental model for how Internet scale systems work (and many other things, in fact), is that I view <em>standards as axioms<\/em>.<\/p>\n\n<p>In linear algebra, there&#8217;s the concept of <a href=\"http:\/\/en.wikipedia.org\/wiki\/Linear_span\">span<\/a>, which is, effectively, a function that takes a set of vectors as input, and yields the vector space <em>spanned<\/em> by those vectors; the set of all reachable points.  Also, for any given vector space you can find a set of <em>axioms<\/em> &#8211; a minimal set of vectors which are linearly independent of each other (orthogonal), but still span the space (note; I use &#8220;axioms&#8221; here to refer to a normalized set of basis vectors).<\/p>\n\n<p>So given, say, <a href=\"http:\/\/www.ietf.org\/rfc\/rfc2616.txt\">HTTP<\/a> and <a href=\"http:\/\/www.ietf.org\/rfc\/rfc3986.txt\">URIs<\/a> as axioms (because they&#8217;re independent), I can picture the space reachable using those axioms, which is the set of all tasks that can be coordinated without any additional (beyond the axioms) a priori agreement; in this case, the ability to exchange data between untrusted parties over the Internet.  I can also easily add other axioms to the fold and envision how the space expands, so I can understand what adding the new axiom buys me.  For example, I can understand what <a href=\"http:\/\/www.markbaker.ca\/blog\/2002\/11\/17\/dave-winer-and-the-truth-about-rdf\/\">adding RDF to the Web gives me<\/a>.<\/p>\n\n<p>More interestingly (though far more difficult &#8211; entropy sucks), I can work backwards by imagining how I want the space to look, then figure out what axiom &#8211; what new pervasively deployed standard &#8211; would give me the desired result.<\/p>\n\n<p>As mentioned, I try to evaluate many things this way, and at least where I know enough to be able to (even roughly) identify the axioms.  It&#8217;s why Web services first set off my bunk-o-meter, because treating HTTP as a transport protocol is akin to replacing my HTTP axiom with a TCP axiom, which severely shrinks the set of possible things that can be coordinated &#8230; to the empty set, in fact.  Oops!<\/p>\n\n<p>See also; <a href=\"http:\/\/en.wikipedia.org\/wiki\/MU_puzzle\">mu<\/a>, <a href=\"http:\/\/www.w3.org\/DesignIssues\/Stack\">the Stack<\/a>, <a href=\"http:\/\/en.wikipedia.org\/wiki\/A_Pattern_Language\">Alexander<\/a>, <a href=\"http:\/\/roy.gbiv.com\/pubs\/dissertation\/software_arch.htm\">software architecture<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"An important, nay, foundational part of my mental model for how Internet scale systems work (and many other things, in fact), is that I view standards as axioms. In linear algebra, there&#8217;s the concept of span, which is, effectively, a function that takes a set of vectors as input, and yields the vector space spanned [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[11,22,48,30,38],"class_list":["post-1596","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-geb","tag-rest","tag-softarch","tag-standards","tag-webservices"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/1596","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/comments?post=1596"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/1596\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=1596"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=1596"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=1596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}