GSoC/GCI Archive
Google Summer of Code 2010

The Mono Project

Web Page:

Mailing List:

The Mono Project implements a cross-platform runtime and a developer platform based on the ISO standards for the Common Language Infrastructure and the C# language.

We build tools to help developers build great applications on many platforms, and foster user applications that showcase the power of Mono.

Mono embraces and extends these standards: we have brought these APIs to multiple systems and we have created our own open source APIs, frameworks and tools that anyone can use. The Mono Runtime runs applications that have been developed with C# and the Microsoft .NET platform on a variety of operating systems and architectures that span most Unix systems (including Linux and MacOS) to embedded systems like the iPhone, the Wii and Android.

Mono allows developers that are familiar with Microsoft .NET technologies to bring their software and their expertise to other systems. Mono has also created a significant set of technologies to help developers. Some were created over the years by the community, and some were created through Google's Summer of Code. Additionally we have created technologies that take advantage of the host operating systems, some are Mono-specific (no equivalent in .NET), Unix-specific, X11-specific, Cocoa-specific or graphics specific.

Our project code repository for 2010 is here:


  • Code Contracts Verifier Implement a subset of .NET4 code contracts in Mono, with full testing and documentation. This will consist of: 1. A full implementation of the classes in the namespace System.Diagnostics.Contracts in corlib. 2. The ccrewrite and cccheck tools for runtime and static contract checks. 3. Unit tests. 4. Documentation.
  • GTK data binding library with stetic support Data binding library for GTK# and static patch which allows convenient use of custom widgets. It uses WindowsForms databinding solution adapted for GTK widgets.
  • Managed Interop with Native C++ Libraries A proposal to expand Mono's interop support to enable the creation of managed wrappers directly around native C++ objects. This would make C++ libraries callable directly from managed code without the need for wrapping them in a flat C API, COM interface, or requiring the use of mixed binaries (C++/CLI).
  • Safe Points and Precise Stack Scanning for SGen The proposal shall involve working on the following aspects of the SGen garbage collector. 1. Garbage Collector Safe Points 2. Precise Scanning of Stacks As evident, the tasks will also involve working with a fair amount of JIT code.