<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.2.1 on Wed, 06 Sep 2006 10:19:22 GMT -->
<rss version="2.0">
	<channel>
		<title>Nicholas Gall: Systems, Modules, and Interfaces</title>
		<link>http://radio.weblogs.com/0126951/categories/systemsModulesAndInterfaces/</link>
		<description>Posts discussing all aspects of general systems theories, theories of modularity, and interface theories.</description>
		<language>en-us</language>
		<copyright>Copyright 2006 Nicholas Gall</copyright>
		<lastBuildDate>Wed, 06 Sep 2006 10:19:22 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.2.1</generator>
		<managingEditor>nick.gall@metagroup.com</managingEditor>
		<webMaster>nick.gall@metagroup.com</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>18</hour>
			<hour>20</hour>
			<hour>19</hour>
			<hour>17</hour>
			<hour>21</hour>
			<hour>23</hour>
			<hour>7</hour>
			<hour>0</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<title>My history of the (Internet) Robustness Principle.</title>
			<link>http://radio.weblogs.com/0126951/categories/systemsModulesAndInterfaces/2005/05/25.html#a179</link>
			<description>&lt;font size=&quot;1&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;[In making what I
thought was a small update to my copy of a quotation of the Robustness
Principle, I quickly fell down the rat hole of documenting as many
versions of it as I could find. Here are the fruits of my labor. Full
text of the RFCs can be viewed at the &lt;a href=&quot;http://www.networksorcery.com/enp/rfcs.htm&quot;&gt;RFC Sourcebook&lt;/a&gt;. See also &lt;a href=&quot;http://radio.weblogs.com/0126951/2004/05/17.html#a114&quot;&gt;my earlier post regarding the Robustness Principle&lt;/a&gt;.
I am posting this in monospace font in homage to the RFC style.
(Besides, I&apos;m too lazy to reformat.) I have to use the small font to
make the margins fit. If you find it difficult to read, just cut and
paste into your favorite editor (Notepad, Word, Emacs). -- NLG]&lt;/span&gt;&lt;/font&gt;&lt;br style=&quot;font-family: arial;&quot;&gt;
&lt;br style=&quot;font-family: courier;&quot;&gt;
&lt;span style=&quot;font-family: courier;&quot;&gt;The Internet Robustness Principle: &quot;Be liberal in what you accept, and conservative in what you send.&quot;&lt;br&gt;
&lt;br&gt;
Attributed to Jon Postel. See the Postel Center In Memoriam web page: &lt;a href=&quot;http://www.postel.org/postel.html&quot;&gt;http://www.postel.org/postel.html&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
According to the Postel Center, the principle originated in RFC 760
&quot;DOD STANDARD INTERNET PROTOCOL&quot; (1980) using different wording:&lt;br&gt;
&lt;br&gt;
3.2.  Discussion&lt;br&gt;
&lt;br&gt;
  The implementation of a protocol must be robust.  Each implementation&lt;br&gt;
  must expect to interoperate with others created by different&lt;br&gt;
  individuals.  While the goal of this specification is to be explicit&lt;br&gt;
  about the protocol there is the possibility of differing&lt;br&gt;
  interpretations.  In general, an implementation should be conservative&lt;br&gt;
  in its sending behavior, and liberal in its receiving behavior.  That&lt;br&gt;
  is, it should be careful to send well-formed datagrams, but should&lt;br&gt;
  accept any datagram that it can interpret (e.g., not object to&lt;br&gt;
  technical errors where the meaning is still clear).&lt;br&gt;
&lt;br&gt;
This may be the first RFC containing the principle, but two prior
&quot;Internet&quot; specs contain the principle as well: IEN 111 &quot;Internet
Protocol&quot; (August 1979) and IEN 123 &quot; DOD STANDARD INTERNET PROTOCOL&quot;
(December 1979). The context and wording are identical, so the text is
not quoted again.&lt;br&gt;
&lt;br&gt;
It next appears in RFC 761 &quot;DOD STANDARD TRANSMISSION CONTROL PROTOCOL&quot;
(1980), this time with the designation of &quot;Robustness Principle&quot;:&lt;br&gt;
&lt;br&gt;
2.10.  Robustness Principle&lt;br&gt;
&lt;br&gt;
  TCP implementations should follow a general principle of robustness:&lt;br&gt;
  be conservative in what you do, be liberal in what you accept from&lt;br&gt;
  others.&lt;br&gt;
&lt;br&gt;
Notice the switch from &quot;sending behavior&quot; to simply &quot;do&quot; and the switch from &quot;receiving behavior&quot; to &quot;accept&quot;.&lt;br&gt;
&lt;br&gt;
It also [next?] appears in RFC 791 &quot;Internet Protocol&quot; (1981), which obsoleted RFC 760:&lt;br&gt;
&lt;br&gt;
3.2 Discussion&lt;br&gt;
&lt;br&gt;
  The implementation of a protocol must be robust. Each implementation&lt;br&gt;
  must expect to interoperate with others created by different&lt;br&gt;
  individuals. While the goal of this specification is to be explicit&lt;br&gt;
  about the protocol there is the possibility of differing&lt;br&gt;
  interpretations. In general, an implementation &amp;lt;&lt;must&gt;&amp;gt; be conservative&lt;br&gt;
  in its sending behavior, and liberal in its receiving behavior. That&lt;br&gt;
  is, it &amp;lt;&lt;must&gt;&amp;gt; be careful to send well-formed datagrams, but &amp;lt;&lt;must&gt;&amp;gt;&lt;br&gt;
  accept any datagram that it can interpret (e.g., not object to&lt;br&gt;
  technical errors where the meaning is still clear).&lt;br&gt;
&lt;br&gt;
Notice the change from &quot;should&quot; to &quot;must&quot;.&lt;br&gt;
&lt;br&gt;
It also [next?] appears in RFC 793 &quot;Transmission Control Protocol&quot;
(1981). The context and wording are identical, so the text is not
quoted again.&lt;br&gt;
&lt;br&gt;
It also [next?] appears in RFC 1122 &quot;Requirements for Internet Hosts -- Communication Layers&quot; (1989)&lt;br&gt;
&lt;br&gt;
1.2.2  Robustness Principle&lt;br&gt;
&lt;br&gt;
         At every layer of the protocols, there is a general rule whose&lt;br&gt;
         application can lead to enormous benefits in robustness and&lt;br&gt;
         interoperability [IP:1]:&lt;br&gt;
&lt;br&gt;
                &quot;Be liberal in what you accept, and&lt;br&gt;
                 conservative in what you send&quot;&lt;br&gt;
&lt;br&gt;
         Software should be written to deal with every conceivable&lt;br&gt;
         error, no matter how unlikely; sooner or later a packet will&lt;br&gt;
         come in with that particular combination of errors and&lt;br&gt;
         attributes, and unless the software is prepared, chaos can&lt;br&gt;
         ensue.  In general, it is best to assume that the network is&lt;br&gt;
         filled with malevolent entities that will send in packets&lt;br&gt;
         designed to have the worst possible effect.  This assumption&lt;br&gt;
         will lead to suitable protective design, although the most&lt;br&gt;
         serious problems in the Internet have been caused by&lt;br&gt;
         unenvisaged mechanisms triggered by low-probability events;&lt;br&gt;
         mere human malice would never have taken so devious a course!&lt;br&gt;
&lt;br&gt;
         Adaptability to change must be designed into all levels of&lt;br&gt;
         Internet host software.  As a simple example, consider a&lt;br&gt;
         protocol specification that contains an enumeration of values&lt;br&gt;
         for a particular header field -- e.g., a type field, a port&lt;br&gt;
         number, or an error code; this enumeration must be assumed to&lt;br&gt;
         be incomplete.  Thus, if a protocol specification defines four&lt;br&gt;
         possible error codes, the software must not break when a fifth&lt;br&gt;
         code shows up.  An undefined code might be logged (see below),&lt;br&gt;
         but it must not cause a failure.&lt;br&gt;
&lt;br&gt;
         The second part of the principle is almost as important:&lt;br&gt;
         software on other hosts may contain deficiencies that make it&lt;br&gt;
         unwise to exploit legal but obscure protocol features.  It is&lt;br&gt;
         unwise to stray far from the obvious and simple, lest untoward&lt;br&gt;
         effects result elsewhere.  A corollary of this is &quot;watch out&lt;br&gt;
         for misbehaving hosts&quot;; host software should be prepared, not&lt;br&gt;
         just to survive other misbehaving hosts, but also to cooperate&lt;br&gt;
         to limit the amount of disruption such hosts can cause to the&lt;br&gt;
         shared communication facility.&lt;br&gt;
&lt;br&gt;
While it is clear that the quoted text is quoting Jon Postel, it is not
clear whose interpretation of that text follows in the remainder of
section 1.2.2. The author of the RFC is Robert (Bob) Braden. Who worked
at ISI with Jon Postel and authored other RFCs with hime (e.g., RFC
1009). Note that RFC 1122 is the RFC referenced by the Postel Center In
Memoriam page.&lt;br&gt;
&lt;br&gt;
What I like about the RFC 1122 version of the Robustness Principle is
that it clarifies a common misconception about the Robustness
Principle, which is that it makes receiving systems vulnerable to
attack. On the contrary, the principle as interpreted in RFC 1122
advises: &quot;In gerneral, it is best to assume that the network is filled
with malevolent entities that will send in packets designed to have the
worst possible effect.  This assumption will lead to suitable
protective design...&quot;&lt;br&gt;
&lt;br&gt;
Notice also that this version says that it applies at &quot;every layer of the protocols&quot;--including the application layer.&lt;br&gt;
&lt;br&gt;
The last [latest?] formulation of the Robustness Principle is in RFC 1958 &quot;Architectural Principles of the Internet&quot; (1996):&lt;br&gt;
&lt;br&gt;
   3.9 Be strict when sending and tolerant when receiving.&lt;br&gt;
   Implementations must follow specifications precisely when sending to&lt;br&gt;
   the network, and tolerate faulty input from the network. When in&lt;br&gt;
   doubt, discard faulty input silently, without returning an error&lt;br&gt;
   message unless this is required by the specification.&lt;br&gt;
&lt;br&gt;
I personally think this is a poor version of the principle and leads to
much of the misunderstanding about it. It seems to advise a passive
approach to &quot;tolerance&quot; and &quot;liberal acceptance&quot;.&lt;br&gt;
&lt;br&gt;
The Robustness Principle obviously also applies to life. Tim
Berners-Lee has made this part of his religious beliefs, see:
&lt;a href=&quot;http://www.w3.org/People/Berners-Lee/UU.html&quot;&gt;http://www.w3.org/People/Berners-Lee/UU.html&lt;/a&gt; and
&lt;a href=&quot;http://www.w3.org/DesignIssues/Principles.html&quot;&gt;http://www.w3.org/DesignIssues/Principles.html&lt;/a&gt;.&lt;/must&gt;&lt;/must&gt;&lt;/must&gt;&lt;/span&gt;&lt;br style=&quot;font-family: arial;&quot;&gt;
&lt;/font&gt;</description>
			<guid>http://radio.weblogs.com/0126951/categories/systemsModulesAndInterfaces/2005/05/25.html#a179</guid>
			<pubDate>Wed, 25 May 2005 10:06:37 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=126951&amp;amp;p=179&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0126951%2F2005%2F05%2F25.html%23a179</comments>
			</item>
		<item>
			<title>The Tao of Modularity.</title>
			<link>http://radio.weblogs.com/0126951/categories/systemsModulesAndInterfaces/2004/11/12.html#a152</link>
			<description>&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;&lt;a href=&quot;http://www.furl.net/item.jsp?id=1267383&quot;&gt;Chapter
11&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Thirty spokes share the wheel&apos;s hub;&lt;br&gt;
It is the center hole that makes it useful.&lt;br&gt;
Shape clay into a vessel;&lt;br&gt;
It is the space within that makes it useful.&lt;br&gt;
Cut doors and windows for a room;&lt;br&gt;
It is the holes which make it useful.&lt;br&gt;
Therefore profit comes from what is there;&lt;br&gt;
Usefulness from what is not there.&lt;/font&gt;
&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;I read the &lt;a
href=&quot;http://www.furl.net/item.jsp?id=1267397&quot;&gt;Tao Te Ching&lt;/a&gt; many times as a
philosophy major at Yale and for years after, but I haven&apos;t read it the last ten
years. I guess I&apos;d better read it again. &amp;quot;Usefulness [comes from] what is
not there&amp;quot; beautifully states the value of modular extensibility. What is
intriguing is the distinction between profit and usefulness.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;At first pass it seems obvious that the maker of
a modular object, like a clay vessel is paid for (on thereby makes a profit
from) &amp;quot;what is there&amp;quot;. On second pass, it strikes me that the user of
the vessel makes a profit from &amp;quot;what is not there&amp;quot;, either by adding
it on, or by using the space to some purpose, say transporting liquid in the
vessel. So the last two lines could be recast:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;Therefore profit to the maker comes from what is
there;&lt;br&gt;
Profit to the user from what is not there.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;Finally, the more I think about it, the more I
believe that the profit to the maker really comes from what is not there. A
potter buys a block of clay at a certain cost. Her &amp;quot;value add&amp;quot; is the
vessel shape she forms the clay into. Someone pays her more money for the clay
in the shape of a vessel than in the shape of the raw block of clay because the
buyer values the shape--what is not there. Assuming she uses the entire clay
block to make the vessel, her profit is the price of the vessel minus the price
of the clay block. Now suppose she could get the same price for a vessel made
from only half the block of clay. She has doubled her profit by halving
&amp;quot;what is there.&amp;quot; So the last two lines would be more clear if they
were recast as:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;Therefore profit is limited by what is there;&lt;br&gt;
Usefulness from what is not there.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;Which is another way of saying &amp;quot;Less is
[worth] more.&amp;quot; Which is why intangible artifacts (aka intellectual
property) are the most profitable. There is no there there.&lt;/font&gt;&lt;/p&gt;
</description>
			<guid>http://radio.weblogs.com/0126951/categories/systemsModulesAndInterfaces/2004/11/12.html#a152</guid>
			<pubDate>Fri, 12 Nov 2004 10:06:09 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=126951&amp;amp;p=152&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0126951%2F2004%2F11%2F12.html%23a152</comments>
			</item>
		<item>
			<title>GM&apos;s reuse strategy.</title>
			<link>http://www.informationweek.com/story/showArticle.jhtml?articleID=47902889</link>
			<description>This &lt;a
href=&quot;http://www.informationweek.com/story/showArticle.jhtml?articleID=47902889&quot;&gt;article
about GM&apos;s efforts to increase reuse of part designs&lt;/a&gt;, touches on several
very timely topics. First, software designers are not alone in preferring to
design unique parts, rather than use existing ones. I find it the epitome of
irony that the industry that IT seeks to emulate in its use of interchangeable
parts, itself struggles with the issue! Second, to enable reuse, even of
physical part, requires substantial IT investment to enable designers to simply
find a part to reuse. Third, it touches on the &amp;quot;monoculture&amp;quot; issue
being debated with regard to widespread use of Windows. In GM&apos;s case, when more
product lines share a common part, design flaws in the part have wider
repercussions.</description>
			<guid>http://radio.weblogs.com/0126951/categories/systemsModulesAndInterfaces/2004/09/27.html#a149</guid>
			<pubDate>Mon, 27 Sep 2004 09:25:19 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=126951&amp;amp;p=149&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0126951%2F2004%2F09%2F27.html%23a149</comments>
			</item>
		</channel>
	</rss>

