Document Actions

Dot-Net and Open Source

An introduction to open source .Net alternatives, Mono and DotGNU, published in the inaugural issue of B-Drive, a Times Group publication, May 2002.

Microsoft’s dominance over the desktop has been waning in recent years. While open source desktop projects have not made much of an impact on Microsoft’s markets, the challenge has been from handhelds, mobile phones, and other such information appliances. Microsoft has been quick to react, with first Internet Explorer successfully humbling Netscape Navigator and now the Pocket PC platform becoming a strong contender to the PalmOS platform. Dot-Net is now Microsoft’s latest strategy to remain in control of how users access information and interact with other users. Initial communication from Microsoft on the dot-Net concept was hazy but the picture that has emerged in recent months is that dot-Net is both Microsoft’s new business model (software as a service), and also the software platform that will support this model.

The software components that make up dot-Net are not entirely new. As usual, Microsoft has picked up good ideas from several places and polished them up as their own offerings. For example, C#, the Common Language Interpreter (CLI) and Simple Object Access Protocol (SOAP), some of the core technologies of dot-Net, are derivatives of Java, the Java Virtual Machine (JVM) and Common Object Request Broker Architecture (CORBA). What Microsoft has done though is made a very clear specification for dot-Net, free of the backward compatibility baggage that has long plagued Windows, and then in surprisingly un-Microsoft-like behavior, standardized all the base components via the European Computer Manufacturers Association (ECMA).

Where does open source fit into this picture? Open source traditionally has been the packing tape that held together expensive commercial software and hardware that would not play with each other. In recent years, the open source community’s offerings have greatly expanded, making the community the only serious challenger to Microsoft’s monopoly over the software market. Since dot-Net will require Microsoft to significantly re-engineer their products, and since the core components are now standards that cannot be easily subverted, this is a chance for the open source community to take Microsoft head on, instead of forever playing catch-up.

As is now typical with open source, there are two different projects attempting to compete with dot-Net, in addition to competing with each other. Dot-Net’s technology is designed to work across platforms, but Microsoft plans to support it only on Windows. The open source projects will support a number of platforms, including Linux and Windows.

The Mono project (www.go-mono.com), supported by Ximian (a company founded by supporters of the GNU Network Object Model Environment (GNOME) desktop), is making alternatives to the core components of dot-Net (called the dot-Net Framework): a C# compiler that will generate Common Intermediate Language (CIL) code, a virtual machine that supports CIL, and a set of useful libraries. Mono’s results will be usable across platforms and will provide identical functionality to Microsoft’s equivalents. As of this writing the C# compiler can compile itself, the run-time environment works on Linux and Windows, and the class libraries are partially ready.

Ximian’s CTO and co-founder Miguel de Icaza’s justification for the Mono project is that Mono will significantly improve the productivity of developers building applications for the GNOME desktop. De Icaza hopes that even as Mono makes it possible to take a Windows dot-Net application and use it directly under GNOME as a native application, non-GNOME users will be able to use Mono for their own environments.

But while Mono stops at implementing only the dot-Net Framework, the DotGNU project (www.gnu.org/projects/dotgnu) is taking on dot-Net point to point. Just like the GNU project provides a complete alternative to Windows, the DotGNU project will attempt to provide superior alternatives to all the basic services that Microsoft will offer with dot-Net. Unlike Mono, DotGNU is not planning to remain strictly compatible with dot-Net. The DotGNU project has identified several limitations and vulnerabilities in the dot-Net system and will provide incompatible but superior alternatives here. The first of the two main objectives currently is to build a web-services platform. This includes dot-Net Framework compatibility, additional support for the Java language, a secure run-time environment parallel to the JVM and the CLI, and a distributed run-time environment that spans several computers, making it possible to easily build large scale distributed applications. The second main goal is to provide a virtual identities platform, an alternative to Microsoft’s Passport. While Passport will be controlled by a single provider (Microsoft), the virtual identities platform will be a totally decentralized authentication and personal information system. The DotGNU philosophy is that having a single authentication controller is both technically and morally wrong.

For legal reasons, a developer contributing to DotGNU currently has to sign a statement that the developer has not read any code distributed by Microsoft under their shared source license. This to protect the project from possible lawsuits accusing the project of including code or ideas copied from Microsoft’s code. Both Mono and DotGNU frequently reuse code from either project and a lawsuit could be disastrous to both projects.

But even as both projects share code, their developers don’t see eye to eye. DotGNU’s backer, the Free Software Foundation, opposes everything from Microsoft and wants to provide complete alternatives. They are in this process using Microsoft’s own strategy of embrace-and-extend, which Mono’s backers insist is a bad for both users and developers, whether Microsoft practices it or Mono does. Mono will therefore remain true to publicly available specifications. DotGNU’s supporters in turn claim that Mono is only achieving extending Microsoft’s monopoly to even the Unix market now. Further disagreements exist on the quality of code in either project and the project teams’ real motivations. Both teams have issued several clarifications during the past year and this has helped cut down on the misunderstandings, but technical disagreements continue to exist.

Dot-Net represents a significant change in how Microsoft conducts business. Like with most of their market expansions before, dot-Net is also likely to be hugely successful. The impact that dot-Net will have on information access worldwide is too significant for one single company to be controlling it. This makes the competing open source projects, in spite of their internal squabbles, more important than anything from the open source community has been before. More than anything else, these projects present the latest hope of finally breaking Microsoft’s monopoly.

Last modified 2006-05-13 14:21