I recently wrote an article for my e-zine in which I depicted my typical workday in C# code. Because it was purely fictional code, I wasn't able to verify the syntax by compiling it. Needless to say, many readers were quick to point out any errors they saw. Fortunately, most of them found the humor in the article as well.
That situation demonstrates a fundamental behavior of members of the software-development community. Give them some code, and they just can't resist correcting it and making it better. The Linux operating system (the shining star of the free-software movement) is an example of just how far the software community will pursue a project it feels has merit. This behavior is exactly what Microsoft was counting on when it submitted the specifications for the C# language and the Common Language Infrastructure (CLI) to the European Computer Manufacturer's Association (ECMA) standards body in October 2000.
Miguel de Icaza, chief technology officer of Ximian Inc. and leader of the GNOME project (a desktop environment for Linux), picked up the ball and started running with it, when he started the Mono project. Specifically, the Mono project aims to leverage the development talent of the free-software movement to create a free-software version of the C# compiler, Common Language Runtime, and .NET Framework class library. The initial platform targets would be both Windows and Linux, with other Unix variants to be introduced later.
Three questions spring to mind at this point. First, why did Microsoft break from its traditional proprietary stance? Second, why do the developers in the free-software movement care so much about a Microsoft initiative? Finally, what does all of this mean to you and me? Let's tackle all of these in order.
Microsoft broke from its proprietary stance because it realized that the best way for it to control the shape of tomorrow's Internet is through industry-wide acceptance of the Microsoft way of doing things. Microsoft has bet the farm on the "software as a service" paradigm. This paradigm will not work if services cannot seamlessly communicate and integrate with each other. Microsoft played a large role in the standardization of the Simple Object Access Protocol (SOAP) to help bridge the platform communication gap. Further, Microsoft built the .NET Framework to be language-agnostic, so it only makes sense that Microsoft officials would want to support .NET implementations on alternate platforms such as Linux. Who better to build these implementations than the developers who built the operating systems themselves?
It is important to note that Microsoft only published the specifications for part of its overall .NET initiative. The company also didn't release the source code for its own .NET implementation, only enough information to ensure interface standardization. That way, Microsoft can offload the chore of building compliant cross-platform .NET implementations to the free-software movement, while still maintaining proprietary control of the company's specific implementation. Microsoft hopes to come out on top by providing the best .NET implementation as well as the best tools with which to develop .NET applications and services. The company also has a few other initiatives, such as .NET My Services (formerly Hailstorm), that it will use to stake a claim on the .NET landscape. These are clearly different goals than those of the free-software movement.
Why are Miguel de Icaza and the Mono project playing along? It certainly isn't to do Microsoft any favors. Ximian officials always had intended to build a better software development framework for the Linux platform to ease their development efforts. They could have designed an entirely new framework from scratch, but they didn't have a spare $2 billion lying around to fund the project. Besides, Microsoft had already laid out the blueprints for a framework that implemented most of what Ximian officials wanted in the first place. Those involved in the Mono project decided to embrace and extend what was already there. Cross-platform interoperability was just icing on the cake. Developers of the Mono project are counting on open-source development tools, such as SharpDevelop (a .NET editor written completely in C#) to help them provide a comprehensive alternative to Microsoft's Visual Studio .NET tools suite.
Where does all of this leave you and me? I think we are in a great position. A free software .NET implementation means more options. Even better, these options will be compatible, meaning that you won't have to marry yourself to one particular .NET implementation. They will be able to talk to each other, so you can mix and match them.
Open source has always meant a green light to educational institutions. There is no better way to learn about a technology than to be able to delve into its internals. This is where both Microsoft and the free-software movement share common ground. Get students hooked on a platform in school, and they will stick with it once they graduate. Some of them will want to stay in the trenches and will choose the open-source route, while others will only care about the big picture and likely will choose the Microsoft route. Luckily, they will be able to coexist peacefully.
The Mono project also may lead to a more stable, more powerful .NET implementation. The Linux operating system is regarded as one of the most stable operating systems in the world, and it was built through the collaborative efforts of thousands of software developers. Harnessing the collective intellect of such a large pool of developers will no-doubt lead to many new and exciting additions to the .NET Framework. These additions will be able to be plugged into any .NET implementation.
The Mono project is slated (unofficially) to be complete sometime before mid-2002. While a Mono implementation of ASP.NET is not on the menu at the moment, Miguel told me he hopes the Mono project will pick up enough momentum and support that a Mono implementation of ASP.NET becomes a reality. As a first pass, a Linux variant of ASP.NET most likely would be implemented as an extension to the open-source Apache Web server.
I am excited about the Mono project, and I think you should be, too. We are heading toward a generation of infinite connectivity, and the sooner we all learn to get along (both in code and in real life), the better off we will all be. If you would like to get involved with the Mono project, you can visit the official Mono project Web site at http://www.go-mono.com.
Jonathan Goodyear is president of ASPSoft (http://www.aspsoft.com/), an Internet consulting firm based in Orlando, FL. He is a Microsoft Certified Solution Developer and is author of Debugging ASP.NET (New Riders Publishing). Goodyear also is a contributing editor for Visual Studio Magazine. Reach him by e-mail at mailto:[email protected] or through his angryCoder electronic magazine at http://www.angrycoder.com/.