Here are some historical data points about Mono:

Early Posts



  • June 30: the Mono project is announced.

  • Aug 21: a remote compilation service is setup so that people who are contributing to Mono can submit their code over a web page and compile the code with the Microsoft C# compiler.

  • Aug 28: the Mono runtime runs “Hello World” for the first time. Hello World consists of 1821 CIL instructions, performs 66 subroutine calls and loads 12 classes from the corlib.dll

  • Sep 4: the monoburg tree pattern matching instruction selector is checked into CVS, this is the beginning of the Mono native code generator engine.

  • Sep 5: Mono’s C# compiler which is written in C# compiles its first program: “Hello world” on Windows using the .NET runtime. The resulting executable runs on Linux as well with the runtime from August 28th.

  • Sep 10: Dietmar Maurer checks the x86 code generation rules for monoburg.

  • Sep 17: the first version of Gtk# is checked into Mono’s CVS repository.

  • Sep 18: Mono 0.7 is released (release notes).

  • Sep 21: Dick Porter gets the initial thread support into Mono’s interpreter; Paolo Molaro implemented many new opcodes; Dietmar Maurer got long operations and mul/div working on the JIT engine; Ravi rewrote the Method selector for expressions to be conformant; Miguel gets i++ working in the compiler.

  • Sep 26: A build system based on Ant is contributed by Sergey and Sean. We will be maintaining a dual build system based on Makefiles and Ant for quite some time.

  • Oct 4th: The reflection support is complete enough to generate a sample program.

  • Oct 5th: Sergey publishes his IL assembler.

  • Nov 4th: Mike posts an update on Gtk#

  • Nov 14th: Paolo Molaro checks in the code that makes the C# compiler run and compile “Hello world” on Linux for the first time.

  • Nov 30th: Dietmar gets the JIT in good shape: All the tests that we had with the Mono interpreter now pass and execute with the Mono JIT engine.

  • Dec 11st: the JIT engine is able to host the Mono C# compiler and run all of its regression tests.

  • Dec 28th: The Mono C# compiler compiles itself, but the code generated is not correct yet.


  • Jan 3: Mono’s C# compiler can bootstrap itself using the .NET runtime. The next stage is to get it bootstrapping with the Mono runtime.

  • Jan 4: Mono gains Unicode support.

  • Jan 21: Dick posts a screenshot of a simple web server running on Mono: here. This web server is used to test and exercise our IO layer.

  • Jan 23: the mono-patches mailing list debuts. Each patch is mailed to people in this mailing list. The era of asynchronous reviews begins.

  • Jan 28: Mono class libraries are relicensed from the LGPL to the MIT X11 license.

  • Jan 29: Dan Lewis contributes System.Text.RegularExpressions.

  • Feb 11: Initial ports of the Mono interpreter to SPARC and PowerPC.

  • Feb 13: Dietmar checks-in the code to support AppDomains, Nick Drochak has lead the group to use NUnit for testing the current implementation of our class libraries.

  • Feb 22: Mono 0.9 is released.

  • Feb 25: Sergey’s StrongARM port of Mono’s interpreter is checked in.

  • Mar 7: First time the Mono’s C# compiler compiles on Linux.

  • Mar 12: Paolo managed to make Mono’s C# compiler self-hosting on Linux.

  • June 25: Piers Haken contributes the initial XPath implementation to Mono and Dick Porter contributes the Process class and its related infrastructure to Mono.

  • June 30: The Mono C# compiler is able to build mscorlib, the last piece to achieve self-hosting of the Mono runtime.


  • June 30th: Mono 1.0 is released.


  • Mono joins the .NET Foundation