<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Shape of Code &#187; Microsoft</title>
	<atom:link href="http://shape-of-code.coding-guidelines.com/tag/microsoft/feed/" rel="self" type="application/rss+xml" />
	<link>http://shape-of-code.coding-guidelines.com</link>
	<description></description>
	<lastBuildDate>Sun, 12 Feb 2012 20:42:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ruby becoming an ISO Standard</title>
		<link>http://shape-of-code.coding-guidelines.com/2011/08/12/ruby-becoming-an-iso-standard/</link>
		<comments>http://shape-of-code.coding-guidelines.com/2011/08/12/ruby-becoming-an-iso-standard/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 19:57:46 +0000</pubDate>
		<dc:creator>Derek-Jones</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ECMA]]></category>
		<category><![CDATA[ISO Standard]]></category>
		<category><![CDATA[IST/5]]></category>
		<category><![CDATA[JISC]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SC22]]></category>

		<guid isPermaLink="false">http://shape-of-code.coding-guidelines.com/?p=518</guid>
		<description><![CDATA[The Ruby language is going through the process of becoming an ISO Standard (it has been assigned the document number ISO/IEC 30170). There are two ways of creating an ISO Standard, a document that has been accepted by another standards&#8217; body can be fast tracked to be accepted as-is by ISO or a committee can [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://en.wikipedia.org/wiki/Ruby_(programming_language)">Ruby language</a> is going through the process of becoming an ISO Standard (it has been assigned the document number ISO/IEC 30170).</p>
<p>There are two ways of creating an ISO Standard, a document that has been accepted by another standards&#8217; body can be fast tracked to be accepted as-is by ISO or a committee can be set up to write the document.  In the case of Ruby a standard was created under the auspices of <a href="http://www.jisc.go.jp/eng/index.html">JISC</a> (Japanese Industrial Standards Committee) and this has now been submitted to ISO for fast tracking.</p>
<p>The fast track process involves balloting the <a href="http://www.open-std.org/jtc1/sc22/docs/contacts#membership">18 P-members</a> of <a href="http://www.open-std.org/jtc1/sc22/">SC22</a> (the ISO committee responsible for programming languages), asking for a YES/NO/ABSTAIN vote on the submitted document becoming an ISO Standard.  NO votes have to be accompanied by a list of things that need to be addressed for the vote to change to YES.</p>
<p>In most cases the fast tracking of a document goes through unnoticed (Microsoft&#8217;s Office Open XML being a recent <a href="http://en.wikipedia.org/wiki/Standardization_of_Office_Open_XML">high profile exception</a>).  The more conscientious P-members attempt to locate national experts who can provide worthwhile advice on the country&#8217;s response, while the others usually vote YES out of politeness.</p>
<p>Once an ISO Standard is published future revisions are supposed to be created using the ISO process (i.e., a committee attended by interested parties from P-member countries proposes changes, discusses and when necessary votes on them).  When the C# ECMA Standard was fast tracked through ISO in 2005 Microsoft did not start working with an ISO committee but fast tracked a <a href="http://kahu.zoot.net.nz/ecma/index.html">revised C# ECMA Standard</a> through ISO; the UK spotted this behavior and flagged it.  We will have to wait and see where work on any future revisions takes place.</p>
<p>Why would any group want to make the effort to create an ISO Standard?  The Ruby language designers reasons appear to be &#8220;<a href="http://realworldxml.blogspot.com/2010/03/what-standardization-will-mean-for-ruby.html">improve the compatibility between different Ruby implementations</a>&#8221; (experience shows that compatibility is driven by customer demand not ISO Standards) and <a href="http://www.ruby-forum.com/topic/169195">government procurement in Japan</a> (skip to last comment).</p>
<p>Prior to the formal standards work the <a href="http://rubyspec.org/">Rubyspec</a> project aimed to create an executable specification.  As far as I can see this is akin to some of the <a href="http://shape-of-code.coding-guidelines.com/2011/05/02/proving-software-correct/">tools I wrote about</a> a few months ago.</p>
<p><a href="http://standardsdevelopment.bsigroup.com/Home/Committee/50001786">IST/5</a>, the committee at British Standards responsible for language standards is looking for UK people (people in other countries have to contact their national standards&#8217; body) interested in getting involved with the Ruby ISO Standard&#8217;s work.  I am a member of IST/5 and if you email me I will pass your contact details along to the chairman.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fshape-of-code.coding-guidelines.com%2F2011%2F08%2F12%2Fruby-becoming-an-iso-standard%2F&amp;title=Ruby%20becoming%20an%20ISO%20Standard" id="wpa2a_2"><img src="http://shape-of-code.coding-guidelines.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://shape-of-code.coding-guidelines.com/2011/08/12/ruby-becoming-an-iso-standard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using evolution to reduce competition</title>
		<link>http://shape-of-code.coding-guidelines.com/2011/05/18/using-evolution-to-reduce-competition/</link>
		<comments>http://shape-of-code.coding-guidelines.com/2011/05/18/using-evolution-to-reduce-competition/#comments</comments>
		<pubDate>Wed, 18 May 2011 02:07:24 +0000</pubDate>
		<dc:creator>Derek-Jones</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[communications protocol]]></category>
		<category><![CDATA[court case]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[EU]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[reverse engineer]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://shape-of-code.coding-guidelines.com/?p=443</guid>
		<description><![CDATA[The Microsoft purchase of Skype got me thinking back to my time as an advisor to the Monitoring Trustee appointed by the European Commission in the EU/Microsoft competition court case. The Commission wanted to introduce competition into the Windows Work Group server market and it hoped that by requiring Microsoft to license all of the [...]]]></description>
			<content:encoded><![CDATA[<p>The Microsoft purchase of <a href="http://en.wikipedia.org/wiki/Skype">Skype</a> got me thinking back to my time as an advisor to the <a href="http://ec.europa.eu/competition/antitrust/cases/microsoft/implementation.html">Monitoring Trustee</a> appointed by the European Commission in the <a href="http://en.wikipedia.org/wiki/European_Union_Microsoft_competition_case">EU/Microsoft competition court case</a>.  The Commission wanted to introduce competition into the Windows Work Group server market and it hoped that by requiring Microsoft to license all of the necessary <a href="http://msdn.microsoft.com/en-us/library/cc216517%28v=prot.10%29.aspx">communication protocols</a> companies would produce products that were plug-compatible with Microsoft products.  The major flaw in this plan turned out to be economics, we estimated it would cost around £100 million to implement the protocols and making a worthwhile profit on this investment looked decidedly problematic.</p>
<p>Microsoft&#8217;s approach to publishing protocol specifications went through three stages: 1) doing everything they could not to do it, 2) following the judgment handed down by the court, 3) actively documenting additional protocols and making all the documents publicly available.  Yes, as the documentation process progressed Microsoft started to see the benefits of having English prose documentation (previously the documentation was the source code) but I suspect the switch from (2) to (3) was made possible by the economic analysis that implied there would not be any competition in the server market.</p>
<p>Skype have not made their client/server protocols public, will Microsoft do so?  I suspect not because there is no benefit for them to do so.  Also I&#8217;m sure that Microsoft will want to steer clear of anti-trust authorities and will not be making Skype an integral part of Windows&#8217; internal functionality.</p>
<p>What progress has been made in reverse engineering the Skype protocols? There is a <a href="http://www1.cs.columbia.edu/~salman/skype/">community of people trying to figure them out</a> but they have not made the progress that enabled <a href="http://en.wikipedia.org/wiki/Andrew_Tridgell">Andrew Tridgell</a> to quickly get something useful up and running that could then <a href="http://www.samba.org/samba/docs/10years.html">evolve into</a> a full blown <a href="http://en.wikipedia.org/wiki/Samba_%28software%29">implementation of a Microsoft protocol</a>.</p>
<p>What lesson can Skype product managers learn from the Microsoft experience of having to make their proprietary protocols available to third parties?  I don&#8217;t think Microsoft intentionally did any the following:</p>
<ol>
<li>Don&#8217;t write any English prose documentation; ensure that the source code is the only specification of the protocols.  This will make it easier for point 3) to occur,</li>
<li>proprietary protocols are your friend, even designing &#8216;better&#8217; alternatives to non-proprietary protocols,</li>
<li>don&#8217;t put too much of a brake on evolution, i.e., allow developers to do what they always want to do which is to make quick fixes to the code and tweak it here and there <a href="http://shape-of-code.coding-guidelines.com/2010/06/18/network-protocols-also-evolve-into-a-tangle-of-dependencies">resulting in a tangle</a> that cannot be simplified.  This will significantly drive up third-party costs as they will not be able to create a product handling a useful subset (i.e., they will have to implement everything) and the tangle make sit harder form them to sure that what they have done is correct.</li>
</ol>
<p>What might be the short term costs of following this strategy?  Very good developers are used to learning by reading code (lack of documentation is a fact of life for may of them).  Experience has shown that allowing developers to make quick fixes and tweak code often results in difficult to maintain code (ok, so a small group of developers have to be paid above the market rate to ensure access to their code memory).  If developers really do dig themselves into a very large hole it is always possible to completely redesign the protocols and provide a very major upgrade (Skype can always reinvent its own protocols, an option not available to third parties which have to follow slavishly behind; this option has always been open to Microsoft with its protocols, i.e., the courts did not place any restrictions on protocol changes).</p>
<p>Where did the £100 million figure come from?  The problem of estimating development cost was approached from various angles.  The one I used was to estimate the number of requirements at 50,000 (there are 38,158 MUSTs in the first public release of the documents) of which 1,651 occur in the SMB specification for which there is a 450KLOC implementation (i.e., <a href="http://ftp.samba.org/pub/samba/stable/">samba source in 2006</a>), giving an estimate of (50000/1651)*450K -> 13.6 MLOC in the final implementation.  At £10 per line we get a bit more than £100 million. </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fshape-of-code.coding-guidelines.com%2F2011%2F05%2F18%2Fusing-evolution-to-reduce-competition%2F&amp;title=Using%20evolution%20to%20reduce%20competition" id="wpa2a_4"><img src="http://shape-of-code.coding-guidelines.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://shape-of-code.coding-guidelines.com/2011/05/18/using-evolution-to-reduce-competition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Predictions for 2009</title>
		<link>http://shape-of-code.coding-guidelines.com/2008/12/31/predictions-for-2009/</link>
		<comments>http://shape-of-code.coding-guidelines.com/2008/12/31/predictions-for-2009/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 02:12:39 +0000</pubDate>
		<dc:creator>Derek-Jones</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[controlled english]]></category>
		<category><![CDATA[economics]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[predictions]]></category>
		<category><![CDATA[static analysis]]></category>
		<category><![CDATA[world domination]]></category>

		<guid isPermaLink="false">http://shape-of-code.coding-guidelines.com/?p=46</guid>
		<description><![CDATA[If the shape of code does change over time, it changes very slowly. Styles become more or less popular, but again the time-scale is generally longer than a year. Anyway, here are my predictions for goings on the in the community that shapes code. 1) Functional programming will continue to entrance the young whose idealism [...]]]></description>
			<content:encoded><![CDATA[<p>If the shape of code does change over time, it changes very slowly.  Styles become more or less popular, but again the time-scale is generally longer than a year.  Anyway, here are my predictions for goings on the in the community that shapes code.</p>
<p>1) <a href="http://lambda-the-ultimate.org/">Functional programming</a> will continue to entrance the young whose idealism will continue to be dashed when they have to deal with the real world.  Ok, I started with something obvious that will still be true in 20 years and I promise not to to to keep repeating myself on this one every year.</p>
<p>2) The <a href="http://llvm.org/">LLVM project</a> will die.  I am surprised that it has lasted this long, but it is probably costing Apple so little that it is not on management&#8217;s radar.  Who needs another C compiler; perhaps 10 years ago they could have given the moribund gcc project a run for its money, but an infusion of keen people and a complete reworking of its internals has kept gcc as the leading contender to be the only C compiler developers use in 10 years time.</p>
<p>3) <a href="http://en.wikipedia.org/wiki/Static_code_analysis">Static analysis</a> will go mainstream.  The driving force will not be developers loosing their aversion to being told of their mistakes, but because the world&#8217;s economic predicament will force them to deliver better performance in less time, ie they will be forced to use tools to help them find coding faults.  The fact that various groups are starting to add hooks to the mainstream compilers (e.g., Microsoft&#8217;s <a href="http://en.wikipedia.org/wiki/Phoenix_(compiler_framework)">Phoenix</a>, gcc&#8217;s <a href="https://developer.mozilla.org/en/Dehydra">Dehydra</a>), ensuring compatibility with an existing code base and making it easier for developers use, also helps.  The gcc people may yet <a href="http://gcc.gnu.org/wiki/GCC_Plugins">shoot themselves in the foot</a>.  Of course people will continue to develop new <a href="http://www.frama-c.cea.fr/">stand-alone tools</a> and extract money from government to do something that <a href="http://www.ggcc.info/">sounds useful</a>.</p>
<p>4) Natural language programming will finally gain a foothold.  One of the big unnoticed announcements of the year was the <a href="http://attempto.ifi.uzh.ch/site/description/index.html">Attempto project</a> releasing the source code of their <a href="http://en.wikipedia.org/wiki/Controlled_natural_language">controlled English</a> system.</p>
<p>5) The rate of gcc&#8217;s progress to world domination will accelerate.  There are still quite a few market niches where gcc is a minority player (eg, <a href="http://www.cse.psu.edu/lctes09/">embedded systems</a>) and various compilers need to disappear for it to gain market share.  Compiler writing has never been a very <a href="http://serv2.ist.psu.edu:8080/viewdoc/summary?doi=10.1.1.85.1534">profitable business</a> and compiler companies usually go bust or are taken over by hardware vendors looking for customer lock-in. The current economic situation means that compiler companies are both more likely to go bust and to not be brought, ie, their compilers will (commercially) disappear.</p>
<p>6) The number of people involved in writing software will continue to decline in the West and increase in the East.  These days there is not a lot of difference in cost between east/west, it is the quality of developers (or rather there are more of a reasonable standard available).  The <a href="http://plus.maths.org/latestnews/may-aug08/education/index.html">declining standards</a> in science/engineering education is the driving factor, the economic situation is just creating extra exposure.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fshape-of-code.coding-guidelines.com%2F2008%2F12%2F31%2Fpredictions-for-2009%2F&amp;title=Predictions%20for%202009" id="wpa2a_6"><img src="http://shape-of-code.coding-guidelines.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://shape-of-code.coding-guidelines.com/2008/12/31/predictions-for-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

