<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
<h2> Community 
  Articles: Opinions, Interviews, Analyses</h2>
<p><a href="//lspintro.html" target="_blank">-Louis Su&aacute;rez-Potts</a></p>
<p>11 May 2001</p>

<p><b>Fear of the Open Source Community</b>

<p>What is Microsoft afraid of? That is, what motivates FUD speeches such as Senior 
  Vice President of Strategy Craig Mundie's now infamous <a href="http://www.microsoft.com/presspass/exec/craig/05-03sharedsource.asp" target="_blank">speech</a> 
  May 3 at <a href="http://www.stern.nyu.edu/" target="_blank">The New York University 
  Stern School of Business</a>? In case anyone has not heard, the thrust of Mundie's 
  speech was that Open Source is harmful to business and the American future because 
  it eliminates the protections and motivations offered by copyright. To quote 
  Mundie's prepared speech (available on the Microsoft site): 
<blockquote>
"We emphatically remain committed to a model that protects the intellectual property rights in software and ensures the continued vitality of an independent software sector that generates revenue and will sustain ongoing research and development."
</blockquote>

<p>This is a nothing new; we've heard it before. Protecting intellectual property 
  is good because it has enabled our current good world, and Open Source threatens 
  all of that. How? By providing a mechanism--the <a href="http://www.gnu.org/copyleft/gpl.html" target="_blank">GPL</a>--by 
  which intellectual property is left unprotected and by which an unsustainable 
  business model is seemingly enjoined. We might then conclude that what Microsoft 
  is most afraid of is precisely the supposed weakening of intellectual property 
  posed by the GPL. 
<p>Mundie's rhetoric has been already critiqued, and his errors pointed out, not 
  least by<a href="http://linuxtoday.com/news_story.php3?ltsn=2001-05-02-019-20-NW-CY-MS" target="_blank"> 
  Eric Raymond,</a> <a href="http://web.siliconvalley.com/content/sv/2001/05/03/opinion/dgillmor/weblog/torvalds.htm" target="_blank">Linus 
  Torvalds</a>, Amy Wohl, and others. Of course, in this speech, Microsoft--weirdly, 
  given its monopolistic tendencies and proven strategies of intimidation--comes 
  across as the champion of intellectual property and innovation. 
<p>But Microsoft has another purposes in slamming <a href="http://www.stern.nyu.edu/" target="_blank">Open 
  Source</a> (whatever that is) besides simply sowing fear, doubt, and uncertainty 
  in the corporate mind. It wants to promote its own conception of what it calls 
  "the Shared Source Philosophy," which can be summarized as: "promoting a sharing 
  of knowledge, through source code and broader interaction, while respecting 
  the importance of intellectual property rights." Microsoft is perfectly entitled 
  to arrange any system of work it wishes (as long as it is legal). But there 
  is something strange about this conception. Specifically, the concept of "community" 
  as a necessary condition for efficient collaboration more or less drops out 
  of the equation. 
<p>To be sure, Mundie does mention community. He mentions it in the phrase "community 
  of software developers" (who will work on the "Shared Source") and, more coherently, 
  in his discussion of Open Source, which Mundie refers to as open source software 
  development, or OSS (which has a faintly sinister ring to it): 
<blockquote>"We recognize that OSS has some benefits, such as the fostering of community, improved feedback and augmented debugging. We are always looking for ways to improve our products and make our customers more successful, and to that end we have incorporated these positive OSS elements in Shared Source."</blockquote>

<p>Community here is, at best, a "feel good" add-on that does not seem really to be essential to the process of producing software. In fact, though, it soon becomes clear that community is a bad thing. In the next paragraph, Mundie goes on to suggest that all the advantages of Open Source are undone by the very community that makes up any Open Source project. For the danger is one of "unhealthy 'forking' of a code base, resulting in the development of multiple incompatible versions of programs, weakened interoperability, product instability, and hindering businesses' ability to strategically plan for the future. Microsoft's conception of a community without a leader-a confused, anarchic group-will only reduce to chaos any enterprise.

<p>This conception is laughable. But I think it highlights a persistent failure 
  in Microsoft, one that has dogged it since the beginning. Unlike Linux, unlike 
  Apple, Microsoft has real problems forming true communities around its products 
  and its vision. Part of the problem is its intrinsic heavy-handedness. Remember 
  the ineffable charm of <a href="http://www.strategymag.com/articles/ST10078.asp" target="_blank">Microsoft 
  Bob</a>? But more to the point, the issue has to do with its very conception 
  of what a community is and is supposed to do. 
<p>From Microsoft's perspective, a community is a more or less passive thing, 
  not unlike a Hollywood audience, eager to buy more, however stupidly. At best, 
  the community might trade tips and support and provided feedback to the makers 
  of the software. And at worst, the community will actually take it upon itself 
  to improve the product. 
<p>This conception is of course absolutely contrary to Open Source, which conceives 
  of the community as actively engaged in constructing the software. From this 
  perspective, then, the threat posed by Open Source to Microsoft becomes clearer. 
  Simply put, Open Source threatens to disrupt the structure of power that has 
  characterized Microsoft's career. This has nothing to do with any threat to 
  the so-called "American Way." But Microsoft's campaign against Open Source does 
  stir a disturbing echo: <a href="http://www.tlio.demon.co.uk/socal.htm" target="_blank">What 
  is good for Microsoft is good for America</a>. 
<p>And I don't buy it. The times are changing.

</body>
</html>

