<rdf:RDF
    xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
    xmlns:s='http://snipsnap.org/rdf/snip-schema#'
    xml:base='http://www.peerbox.com:8668/rdf'>
    <s:Snip rdf:about='http://www.peerbox.com:8668/rdf#start/2005-10-03/1'
         s:name='start/2005-10-03/1'
         s:cUser='kgr'
         s:oUser='kgr'
         s:mUser='kgr'>
        <s:content>1 Linus On Specifications {anchor:Linus On Specifications}&#xA;From {link:Kernel Trap|http://kerneltrap.org/node/5725} (and {link:Slashdot|http://linux.slashdot.org/linux/05/10/02/218233.shtml?tid=8&amp;tid=106}). &#xD;&#xA;&#xD;&#xA;{quote}In a conversation that began as a request to include the SAS Transport Layer in the mainline Linux kernel, there was an interesting thread regarding specifications. Linux creator Linus Torvalds began the discussion saying, &quot;a &apos;spec&apos; is close to useless. I have _never_ seen a spec that was both big enough to be useful _and_ accurate. And I have seen _lots_ of total crap work that was based on specs. It&apos;s _the_ single worst way to write software, because it by definition means that the software was written to match theory, not reality.&quot;&#xD;&#xA;&#xD;&#xA;Linus went on to list two reasons to avoid specifications when writing software. First, &quot;they&apos;re dangerously wrong. Reality is different, and anybody who thinks specs matter over reality should get out of kernel programming NOW.&quot; Second, &quot;specs have an inevitable tendency to try to introduce abstractions levels and wording and documentation policies that make sense for a written spec. Trying to implement actual code off the spec leads to the code looking and working like CRAP.&quot; As a &quot;classic example&quot; he pointed to the OSI model, &quot;we still talk about the seven layers model, because it&apos;s a convenient model for _discussion_, but that has absolutely zero to do with any real-life software engineering. In other words, it&apos;s a way to _talk_ about things, not to implement them. And that&apos;s important. Specs are a basis for _talking_about_ things. But they are _not_ a basis for implementing software.&quot;&#xD;&#xA;{quote}&#xD;&#xA;One problem is that you often get specifications when what you really need is either requirements or else working code (See Bill Joy&apos;s article on from &quot;Protocols to Agents&quot;).  </s:content>
        <s:mTime>2005-10-03 10:16:15.646</s:mTime>
        <s:cTime>2005-10-03 10:16:15.646</s:cTime>
        <s:comments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
        <s:snipLinks>
            <rdf:Bag>
                <rdf:li rdf:resource='#kgr'/>
                <rdf:li rdf:resource='http://www.peerbox.com:8668/rdf#2005'/>
                <rdf:li rdf:resource='http://www.peerbox.com:8668/rdf#start/2005-10-07/1'/>
            </rdf:Bag>
        </s:snipLinks>
        <s:attachments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
    </s:Snip>
</rdf:RDF>
