Battling the antibodies

I checked out a stack of library books for my vacation week, but the only one that really grabbed me was David Bornstein's How to Change the World: Social Entrepeneurs and the Power of New Ideas. (You can also catch his Pop!Tech lecture on ITConversations.) The book revolves around the inspirational Bill Drayton. Drayton is an architect of change, and this passage from the book writes his job description:

In his book, Leading Change: The Argument for Values-Based Leadership, James O'Toole, an expert in management and leadership, observes that great thinkers throughout the world agree that "groups resist change with all the vigor of antibodies attacking an intruding virus." O'Toole examines a number of cases in which a potentially beneficial institutional change was resisted and finds that the resistance occurs when a group perceives that a change in question will challenge its "power, prestige, and satisfaction with who they are, what they believe, and what they cherish." He asserts: "The major factor in our resistance to change is the desire not to have the will of others forced on us."

If ideas are to take root and spread, therefore, they need champions -- obsessive people who have the skill, motivation, energy, and bullheadedness to do whatever is necessary to move them forward: to persuade, inspire, seduce, cajole, enlighten, touch hearts, alleviate fears, shift perceptions, articulate meanings, and artfully maneuver them through systems.

Drayton's central idea is that social entrepeneurs are people with a very particular set of skills who, once you find them and then invest in them, will rewire social systems -- education, crisis intervention, health care, child care -- in all sorts of useful ways.

The quote about groups resisting change "with the vigor of antibodies" kept echoing in my head this week as I watched the accretion of comments on Joe Brockmeier's blog item which cites my two columns about Monad/MSH. I'd particularly like to give a shout out to Rick James, the king of punk-funk, who returns from the grave to excoriate me with this classic bit of inspired advocacy:

First and foremost Udell is an idiot. The only thing that will result from MSH is new Windows Viruses. Why you ask? Because of people like Udell, who seem to think adding layers of junk like XML formating or Excel formating on top of something like a command shell somehow improves it. Do people like Udell need to be reminded of the stupidity of letting macros for a *WORD PROCESSOR* or *EMAIL PROGRAM* have the ability of formatting a *HARD DRIVE*?

The Linux Community does not need to emulate this kind of stupidity.

It's such a freaky scene. If you've followed my career over the years, you know that I've studied both Microsoft and open source pretty carefully, and am as likely to criticize as to applaud either camp.

In the case of Monad/MSH, I am applauding two powerful ideas. First, the notion of a pipeline made of self-describing objects. Second, the long-term effort to expose system services as instances of such objects.

When I don my critical hat, I can see several ways for Microsoft to screw this up. Inventing a new scripting language seems problematic: I'd rather see IronPython, or other .NET implementations of dynamic languages, supply the glue. It's also not clear to me that the universe of system-services-exposed-as-objects is yet complete enough to sustain the magical illusion that Monad wants to create. Finally, there's the question of follow-through. It remains to be seen whether this idea has a champion who can push it across the finish line.

Still, Monad represents an interesting -- and potentially transformative -- idea. Resistance to the idea fascinates me. Of course, we see resistance to ideas on both sides of the fence.

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:

So, even when pipes are a very powerful concept in Unix, it is not the end solution for building applications out of components. Here is the proof:

Lets take a look at the most popular Linux applications on the server space: Samba, Apache, NFSD, innd, sendmail, in.named, ftpd and ssh.

If you examine those applications you will notice that they barely "use" any of the Unix "components" to carry their tasks. If they use them is more of an inadvertent side effect.

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 avoiding routines.

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 XML engine, the JavaScript engine, the toolbars, their scripting engine 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 traditional way.

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.

Back in 2001, I wrote an article in Linux Magazine in which I cited Miguel's essay and made this modest proposal:

Suppose, for the sake of argument, that a robust open-source implementation of .NET's core technology were to emerge.
(I shared the pages of that issue of Linux Magazine, by the way, with Joe "Zonker" Brockmeier -- it's a small world.)

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.

Update: 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.

Former URL: