Mono Project Roadmap

Last update: August, 2008

Per-component Plans are available.

Dates

Mono 2.0: September 2008

  • October 6th, 2008: Mono 2.0 Final Release.

Mono 2.2: December 2008

  • November 3rd, 2008: Mono 2.2 branches from trunk.
  • November 10th, 2008: Mono 2.2 Preview 1 is released.
  • November 17th, 2008: Mono 2.2 Preview 2 is released.
  • November 24th, 2008: Mono 2.2 RC1 is released.
  • December 1st, 2008: Mono 2.2 RC2 (optional).
  • December 8th, 2008: Mono 2.2 Final Release.

Mono 2.4: March 2009

Mono 2.6: June 2009

Mono 2.8: September 2009

Mono 3.0: December 2009

Versions

Starting with Mono 2.0, we are switching to a new version scheme for Mono releases:

MAJOR.MINOR.SUBRELEASE

Even-numbered minor releases are stable releases, while odd-numbered releases are unstable releases, they are typically used during development and is contained as part of the code that is only checked in on subversion or that is available as part of the daily builds.

The subrelease indicates a minor release or an update to a specific release.

Notice that before Mono 2.0 these rules did not apply and every public release version that was available was a stable release (1.9, 1.9.1, 1.2.6, 1.2.6.1 and so on).

Themes

These are some of the the major themes for the following Mono releases, it indicates our current goals and have more clarity on the more immediate goals.

Mono 2.0:

  • API status:
    • ASP.NET 2.0
      • Missing: WebParts, Mobile control rendering.
    • ADO.NET 2.0
    • Windows.Forms 2.0
  • C# 3.0
    • LINQ
    • LINQ to XML
  • Visual Basic.NET compiler (with Generics).
  • JIT
    • Generic code sharing
    • IL Verifier
  • Tools for Windows Developers
  • Mono Debugger, command line interface.

Mono 2.2:

  • JIT
    • New JIT engine (Linear IL)
    • Full AOT
    • Full Generics Sharing
  • MoMA Web Tools
  • ADO.NET Updates:
    • Updated TDS 8 (Transactions)
  • Native Windows.Forms engine.
  • Intrinsics Support
  • C# Shell
  • C# Evaluation API (Mono.CSharp.Evaluator)

Mono 2.4:

  • JIT
    • Metadata verifier
  • ASP.NET
    • 3.5 APIs
    • Routing
  • Windows.Forms:
    • OS X Update
  • MonoDevelop 2.0
    • Built-in GUI debugger
  • LINQ to DB integration
  • MSBuild Alpha

Mono 2.6:

  • ASP.NET
    • ASP.NET MVC
    • Silverlight 2.0 Preview
  • Visual Studio Mono Plugin:
    • Debugger
    • Deployment and Packaging

Mono 2.8:

Mono 3.0:

Subprojects projects

Other projects like the debugger, the documentation browser, Java integration through IKVM, Olive and Gtk# will remain on their own schedules. This page will be updated to contain that information when it becomes available.

Mono and Silverlight

See our page on Moonlight for details on the work underway to support Silverlight with Mono.

Partial Implementations

The following APIs and technologies have partial implementations and are under development.

As part of the Olive Project:

As part of the Google Summer of Code:

Unsupported technologies

Some technologies are very hard to implement or are being phased out by new .NET components. So we are not likely going to implement these features.

If someone cares deeply about these APIs and implements them, we would likely bundle them with Mono, but they are not actively being worked on.

Large Projects

These are large projects that we are unlikely going to work on unless there is a massive shift, or a large independent effort to work on. There might be some code on SVN but we are not currently planning on implementing:

  • Windows Presentation Foundation (.NET 3.0).
  • Windows Workflow Foundation (.NET 3.0).
  • Code Access Security (.NET 1.0).

Deprecated APIs

We are not working on any of the following deprecated APIs:

  • System.EnterpriseServices
  • WSE - Extensions to System.Web.Services.

Windows-specific APIs

These are APIs that are very tied to the Windows platform and do not map to Linux or Unix:

  • System.Management

Mono Developer Strategy

Mono Developers should read the Mono Hacking Roadmap

Roadmap Background

This document describes the high-level roadmap for Mono (http://www.go-mono.com).

The Mono project started in 2001 as an effort to implement the .NET Framework to Unix. To bring both the new programming model based on the Common Language Infrastructure and C# as well as helping people migrate their existing knowledge and applications to Unix. Mono today supports a wide variety of operating systems, CPUs and a large chunk of the functionality available in the .NET Framework.

This document outlines the roadmap for the Mono project from my perspective: what we can effectively deliver on the dates outlined. Since Mono is a large open source project, things might change and new features can be incorporated into the plan if external sources devote enough attention to those problems.


Background


So far Microsoft has published five versions of the .NET Framework: 1.0, 1.1, 2.0, 3.0 and 3.5.

1.1 was an incremental update over 1.0.

2.0 was a considerable expansion on the features of it.

In addition, an "add-on" to the core of .NET has been released, called ".NET 3.0", but it does not touch the core. It is a set of new APIs and extensions that run on top of a .NET 2.0 installation.

.NET 3.5 is the actual heir to .NET 2.0, and it contains updates to the core libraries (small bits) and new assemblies (like System.Core).

The Mono project has been tracking some of the improvements available in those releases, some of the highlights of our work so far are:

  • Core: mscorlib, System and System.XML assemblies. These support both the 1.x and 2.0 profiles. Work is underway to complete the 2.0 profile.
  • ADO.NET: System.Data and various other database providers, they are 1.x complete, and most of 2.x is complete
  • ASP.NET 1.x and 2.x: WebForms and Web Services are supported. Only WebParts are missing from our 2.x support.
  • System.Security support 1.1 features and has partial support for 2.0 (like XML encryption) but the S.S.C.Pkcs namespace is still imcomplete.
  • DirectoryServices implemented on top of Novell.LDAP
  • Compilers: C# 1 and 2 as well as bits of 3, VB.NET 8 and various command line tools that are part of the SDK.
  • Transaction support, we have some partial support but currently no plans exist beyond the current implementation (see the notes on its implementation and limitations).
  • Open Source, Unix and Gnome specific libraries, see our Plans page for more details.

There are certain features that we are not planning on supporting and are available either as stubs (to allow other code to compile or to satisfy dependencies) or are not even present in Mono, these include:

Support for designers in Windows.Forms and ASP.NET for the majority of Mono provided controls does not exist. This is due to the lack of tools for designing Windows.Forms and ASP.NET components in Mono today. When designer surfaces are completed (there are work in progress for both of them) work on this areas will resume.

Designer support is only needed at development-time, this is not something that is required to run the applications on Unix. Many applications that are reported through the Mono Migration Analysis tool reports these problems and can be safely ignored.

Some components exist that were once developed but are no longer actively developed, these include:

See the following sections for more details on plans for 2.0, 3.0 and 3.5 APIs.

Mono release strategy

The levels of maturity of Mono fluctuate depending on the development effort we have put into it, and the use we have given to them. For example, the virtual machine and the C# compiler very mature, while less commonly used functionality in Mono like Windows.Forms or VB.NET are still under heavy development.

Our strategy is to release the mature components as Mono 1.0, and have upcoming versions of Mono add extra functionality.


Microsoft's .NET 2.0

To understand post 1.0 editions of Mono, it is important to put it into perspective .NET 2.0 which was released in November 2005.

The new features in .NET 2.0 include:

  • Generic types These introduce changes to the compiler, runtime and class libraries.
  • C# 2.0 Many new additions to the language.
  • ASP.NET 2 Many tools to simplify web application development: Master pages, new controls for common operations, personalization and themes.
  • Remoting New security channels and version-resistant remoting (good news in the interop department).
  • XML Relatively small changes and improvements which Mono has currently. Mono in addition will ship an XQuery processor.
  • Networking FTP client, Ssl streams.
  • Console and Serial ports:
    Console terminal input/output is available as well as serial port handling.
  • Windows.Forms Layout containers finally appeared on Windows.Forms as well as various new controls.

Current Mono Release

Mono 1.2

Mono 1.2 is a release that supports the .NET 1.1 APIs for all the areas supported in Mono (core, XML, ADO.NET, ASP.NET, Windows.Forms, compilers, tools). For details, see the Mono 1.2 Release Notes (http://go-mono.com/archive/1.2/)

Mono 1.2 is an incremental upgrade to Mono 1.0, and contains the following new features:

  • Generic types support: C# compiler, execution system and core class libraries (C# 2.0)
  • gtk# 2.0 (includes support for gtk 2.12)
  • Numerous scalability and performance enhancements

Mono 1.2 also include assemblies from .NET 2.0 and these are available as technology previews:

  • ADO.NET 2.0
  • Most of mscorlib and System.dll
  • Console and Serial ports support

Released on: November 9, 2006.

There are various milestone branches in this release, see our Branches page for more details.

Mono 1.9

Since the release in November 9th of 2006 of Mono 1.2, we have made seven incremental updates to Mono (1.9 (http://www.go-mono.com/archive/1.9)), The highlights since then include:

  • VB.NET compiler and runtime were released.
  • Windows.Forms 2.0 feature-complete.
  • 2.0 support completed for Web Services (Generics).
  • ASP.NET WebForms are complete (except for WebParts).
    • Support for ASP.NET AJAX.
  • Release of Mono Migration Assistant.
  • C# 3.0 support and System.Core assembly
  • LINQ to Objects
  • LINQ to XML.
  • System.Media implemented.
  • HTTPS support in HttpListener.
  • 2.0 Socket API.
  • Improved fidelity and performance of System.Drawing, added support for Metafiles.
  • Mono's MSBuild is able to build projects.
  • SafeHandles and HandleRef support.
  • MIPS, Alpha ports and Solaris/amd64 ports.
  • Mono can now run without shared memory segments.
  • New Mono.DataConvert library
  • ADO.NET 2.0 updates, and support for output parameters on stored procedures.
  • installvst tool for installing ASP.NET starter kits.
  • New Sqlite bindings.
  • COM/XpCOM support.
  • Packages available (http://download.opensuse.org/repositories/Mono:/Community/) for many popular applications.

Release notes with all the details:

  • Mono 1.2.1 (http://www.go-mono.com/archive/1.2.1)
  • Mono 1.2.2 (http://www.go-mono.com/archive/1.2.2)
  • Mono 1.2.3 (http://www.go-mono.com/archive/1.2.3)
  • Mono 1.2.4 (http://www.go-mono.com/archive/1.2.4)
  • Mono 1.2.5 (http://www.go-mono.com/archive/1.2.5)
  • Mono 1.2.6 (http://www.go-mono.com/archive/1.2.6)
  • Mono 1.9 (http://www.go-mono.com/archive/1.9)



Previous Goals

Mono 1.0 goals

The Mono 1.0 release would include the following components:

  • C# compiler.
  • VM, with JIT and pre-compiler.
  • IL assembler, disassembler.
  • Development and security tools.
  • Core libraries: mscorlib, System, System.XML.
  • System.Data and Mono database providers.
  • System.Web: Web applications platform and Apache integration module.
  • System.Web.Services: client and server support.
  • System.Drawing.
  • System.DirectoryServices
  • JIT support: x86, SPARC and PPC architectures (interpreter available for other architectures).
  • ECMA profiles: special build options to build Mono as an implementation of the various ECMA profiles will be available.
  • Java integration through IKVM.
  • Embedding interface for the runtime.

Packaging:

  • mono: will contain the above features implementing the .NET 1.1 API.
  • mono-1.0-compat: Will include a build of the libraries with the .NET 1.0 API, this is a compatibility build for people running .NET 1.0 applications.
  • mono-unstable: Will contain a snapshot of the other technologies under development for developer's convenience, but will be unsupported at this time. These include the Generics edition of the C# compiler.
  • mono-ecma: A build that only includes the ECMA components.

Released on June 30th, 2004.

Bug fix releases would be done on a monthly basis.

For a detailed list, see the Mono 1.0 feature list. (http://www.go-mono.com/archive/1.0)


Comments

Feel free to send us your comments or questions about the roadmap.