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