GSoC/GCI Archive
Google Summer of Code 2011

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. 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.

Calling all students!

Browse the Project Ideas list or come up with ideas of your own and discuss them with us.

Join in on Mono IRC on The main SoC channel is #monosoc and the General Topics channel is #mono.

Ask questions on the Mono mailing lists, listed here.

Send us your proposals!

Information about the progress of Mono projects in Summer of Code can be found on our Summer of Code Blog on or Twitter.




Our main SoC repository is located here:


The SoC repository for code samples at the end of the program is located here:


  • Adding support for x86 SSE instructions for FP math The Mono runtime does not currently use SSE for floating point math in the x86 code path. My Summer of Code project will address this issue by modifying the runtime to emit the proper SSE instructions for floating point math operations, as well as augment the register allocator to take into account the SSE registers.
  • Axiom - SL# SL# is an IL-to-GLSL translator that makes it possible to write shaders as CIL bytecode. The runtime translator will then transparently derive a shader script from the CIL. The shaders thus look, and can be interacted with, as if they were part of the managed code. For an overview and examples see:
  • Class designer add-in for Monodevelop A graphical interface for viewing/editing/refactoring class hierarchies in MonoDevelop projects.
  • Code Contracts Verifier (static analysis) This project will implement the static analysis verifier for .NET 4 Code Contracts, including numerical obligations analysis.
  • ILASM Cecil Backend / Managed ILDASM This project seeks to rewrite the ILASM backend to use the Mono.Cecil library, which is more reliable than PEAPI. In addition, if there is enough time, a managed (C#) version of ILDASM will be written.
  • Implement SPDY Support for Manos Implement Google's SPDY protocol specification for the Manos server.
  • Improve XBuild C++ support and MonoDevelop build integration I intend to improve the C/C++ support in MonoDevelop IDE by adding C++ tasks to XBuild, Mono's MSBuild implementation, integrating MSBuild in the C++ project system and implementing support for Windows compilers.
  • Mono C++ Interop A proposal to continue work started last summer on a C++ interoperability framework for Mono.
  • Mono Debugger Visualizer Mono Debugger is a part of MonoDevelop that provides debugging support to the developers. A Debugger Visualizer is defined as a component that facilitates the debugger to display the contents of a data type in a meaningful way. This extends the debugger’s capability to handle .NET data types or custom data types and to identify any wrong or missing value(s). As part of Google Summer of Code (GSoC), this project proposal aims to develop debugger visualizers for the Mono Debugger.
  • MonoDevelop database and NHibernate integration Work on integration NHibernate with MonoDevelop database addin. Improve experimental GTK# designer and add databinded GTK widgets.
  • SlimThreading on Mono This project aims at integrating the SlimThreading library into the Mono framework to optimize and facilitate its threading infrastructure, both at the VM layer and the managed layer.
  • Task parallel library Dataflow extension implementation Implement the TPL Dataflow extension, part of the new async facility introduced with .NET 5 CTP. TPL Dataflow helps developper builds data processing applications with an actor-like model and based on what ParallelFx already offers in .NET 4.
  • uPnP client / server for Banshee I propose to integrate a uPnP server and client into Banshee, making it possible to both share media and consume media from other devices simply and dynamically. Banshee is already a very simple application to use in managing media and given that more and more portable devices supports uPnP, it can and should easily serve them with that media.