HomeDigital EditionSearch Dotnet Cd
ASP.NET C# Certification Exams The CLI Data Access Editorials Extending .NET Fundamentals Interoperability Interviews Migrate Mobile .NET Mono .NET Interface Object-Oriented Programming Open Source Optimization Product/Book Reviews Security Source Code UML Visual Studio .NET

This is the first installment of Dennis Hayes' Monkey Business column, which will supply news on open-source .NET implementations, including Rotor, sponsored by Microsoft; Mono, sponsored by Ximian (and headed up by Miguel de Icaza); and Rhys Weatherley's Portable.NET, from DotGNU.

Rotor
Because Rotor is written internally by Microsoft, we see major changes to it when a new version or update is released, but few in between. The current version was released in November 2002. It can be downloaded from http://msdn.microsoft.com/downloads/ under Software Development Kits­> Shared Source CLI 1.0 Release. After installing v1.0, you can download Gyro, the Microsoft research project that implements the generics Microsoft has proposed to ECMA (the European Computer Manufacturers Association). These can be downloaded from http://research.microsoft.com/projects/clrgen. This release of the CLI runs on Windows XP, FreeBSD, and Mac OS X v10.2. The license prohibits use on pure GPL (general public license) systems such as Linux; it is solely for educational purposes and cannot be used commercially.

Unlike Rotor, which is a "finished" product, the other two projects I will be tracking, Mono and DotGNU's Portable.NET, are being developed by the open-source community. Far from finished, these projects are developing rapidly, and generating a lot of news. They have licenses (Portable.NET ­ GPL; Mono core ­ GPL; Mono classes ­ X11) that allow them to be used with GPL and commercial projects. Mono has recently added several commercial users: Virtuoso's OpenLink, Winfessor's .NET Jabber SDK, and Tipic's Instant Messenger Platform.

Mono
As these announcements show, the Mono project, www.go-mono.com, has enough of .NET implemented to be useful, even if it is far from complete. The runtime environment, C#, and core ECMA classes are mostly done. The most actively developed parts of Mono include MonoBASIC, which is just getting started, and the Web, database, debugger, cryptography, and Gtk# areas, which already have a lot of capability. MonoBASIC is at the point where it can be used to create usable programs, but only if you are willing to work around its limitations. Most notably, strings are missing and arrays need a lot of work; also MonoBASIC is based on a C# compiler, so some C# semantics could sneak in. The Mono database classes, especially the Oracle classes, have been receiving a lot of work; their main weakness is in the area of security. Remoting under Mono is just becoming functional.

Documentation for the Mono project is on a roll, with the Monkey Guides leading the way. The group responsible for these how-to guides is quite prolific; they are making it much easier to get involved and use Mono.

Although incomplete, the Web service software is running 1% of the .NET servers on the Internet, according to a December Netcraft survey, (as reported by ENT News http://entmag.com/news/article.asp?EditorialsID=5638).

System.Windows.Forms has a lot of foundation code: enums, delegates, interfaces, and stubbed classes, but is still only in the early stages of providing application-level support. System.Windows.Forms is in a development lull, but it is expected to pick up soon.

DotGNU
The other open-source project we will be watching, DotGNU, is a family of projects. One project, the DotGNU Platform, aims to provide bytecode support for both Java and Microsoft IL as both a local service in a secure environment (the SEE project), and as a way to distribute the service across secure environments on multiple computers (the DEE project). Portable.Net aims to implement the ECMA specifications, including the runtime environment and C# compiler; and the Portable.NET Library project is implementing the core ECMA libraries. Under this project Web services and virtual identities will be similar to those in Microsoft's .NET My Services.

A great overview of these projects and a brief description of accomplishments for 2002 can be found at http://dotgnu.org/pipermail/developers/2002-December/009264.html. The latest versions of pnet are 5.0, released on Jan 11; and 5.2, released on Feb 8. With these releases, pnet now supports i386, ia64, PowerPC, Alpha, SPARC, ARM, and S390 processors. Rhys Weatherley spoke at the Australian Linux Conference 2003 on the design of the pnet interpreter. The paper is short, not too technical, and gives a good description of the pnet project and philosophy. Give it a read at www.southern-storm.com.au/download/pnet-engine.pdf.

About The Author
Dennis Hayes is a senior software engineer at Raytek Corporation in Santa Cruz, CA, where he writes process control software. He has been involved with the Mono Project for over a year, and is in charge of the System.Windows.Forms and System.Drawing namespaces. dennish@raytek.com

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.

  E-mail: info@sys-con.com