Open source, for example, has made many technical innovations, but
arguably its greatest contribution is process innovation: transparency,
global collaboration, the architecture of participation.
In Microsoft's resistance to these ideas — notably the famous “open
source is a virus” riff — you can see the antibodies swarming.
What most fascinates me about the company, these days, is the
internal struggle this clash of ideas has precipitated, and the
resulting transparency that some Microsoft bloggers have begun to
create. While the popular press focuses its attention on Robert Scoble, I look to people like Michael Rys. 1
As a practitioner on the leading edge of technology — in this case,
the intersection between XML and databases — he has consistently
articulated a technical vision and illuminated Microsoft's approach to
implementing it. His commentary on Sean McCown's InfoWorld piece on SQL/XML databases was, for me, the best example in 2004 of how blog culture may be creating a more conversational Microsoft.
Microsoft, for its part, has also been both a technical and a process
innovator. When open source zealots doubt the former, I refer them to
Miguel de Icaza's classic essay Let's Make Unix Not Suck, which says in part:
Even worse than that is the fact that none of those
applications share any code besides the UNIX libc. You would think that
those daemons would share some code, for instance timeout handling,
main loop integration, idle handlers, daemon-ification routines,
configuration parsing routines, security libraries, anti-exploit
But they do not. They share no code at all outside the most basic Unix services. None. Ninguno. Niente. Rien.
Various people like to criticize Microsoft for producing
“bloated and monolithic applications”. Before we criticize Microsoft,
lets take a look at the end user applications that we have on Unix
outside of GNOME: Netscape, GhostView, XDVI, Acrobat, Mathematica,
Maple, Purify, FrameMaker, Star Office.
The only common denominator on those applications is libc and
Xlib. Some share Motif, but that is about the extent that these
applications are sharing any code. And of course, the Unix “components”
play no role in the equation: they are basically never used (I can only
think of the printer spooler daemon being used, and even in this case:
it is not even compatible across operating systems).
Now, lets look at Microsoft “bloated and monolithic applications” again: lets consider “Internet Explorer”.
Internet Explorer is not a single executable as you might
think. Internet Explorer is built of a collection of COM components.
These components are developed individually, debugged individually,
exported individually, and eventually, all of them create the illusion
of an integrated application.
Now, the beauty of this is that these components can be reused
outside of Internet Explorer: programmers outside of Microsoft can use
those components in their applications: the HTML rendering engine, the
and so on.
Microsoft applications reuse pieces of Internet Explorer.
Sure, we have small components, that are small and beautiful,
but their usage scope is still limited. My thesis is that we can build
small components that can be reused in many more ways than the
To sum things up: There is little code reuse in Unix
applications. Unix lacks a modern component system for building modern
and consistent applications.
The filter-based component system of Unix is incomplete to address the needs of large applications.
Suppose, for the sake of argument, that a robust open-source implementation of .NET's core technology were to emerge.
When I wrote that 2001 article, I had a hunch that Miguel might be contemplating just such a move and, as we now know, he was.
You'd think that the antibodies would have smothered the Mono project
and, if it had lacked such an inspired and charismatic leader, they
surely would have.
As I've been saying for a while now, Microsoft and open source are good
for one another. Both camps produce key technical and process
innovations, and those innovations are often complementary. To achieve
the sum of the parts we need people — on both sides — who can shrug
off the antibodies and champion ideas for what they simply are.
After reading the responses to this item from both Robert Scoble and Michael Rys, and after listening to David Bornstein's talk, I realized I should clarify something. In these these two excerpts from his talk, Bornstein makes the crucial point that ideas do not prevail on their own, they must be marketed
to the world by idea champions. Robert Scoble is a great champion of
the idea of blogging as a way to make a corporation more transparent
and therefore more vital. Because he has successfully marketed that
idea, developers at Microsoft are now much freer to champion their
ideas about XML, databases, patterns, services, and other things. My
point wasn't to denigrate Robert Scoble, who has helped open the door
for Michael Rys and others, but rather to draw attention to those who
are walking through that door. In early 2005 the idea of blogging as a
mechanism for idea marketing is still a novelty. But as that novelty
fades the focus will shift to all of the other ideas that are being
blogged about. [Jon's Radio]