GSoC/GCI Archive
Google Summer of Code 2009

Mono Project

Web Page:

Mailing List:

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

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.


  • Class Designer Add-in for MonoDevelop This is a proposal for implementing a Graphical Class Designer Add In for MonoDevelop. It will provide an interactive graphical editor for visualize and modify the class hierarchy. The graphical class editing would be tightly synchronized with the source code. An important part o the project will be the canvas widget that could be reused not only for other related project such as a database designer but for all kind of applications.
  • Database Designer Add-in for MonoDevelop Main idea of this proposal is the construction of one Addin for the MonoDevelop project, in this case the Database Designer Addin. I propose to this implement this addin accomplishing with the Model Driven Application (MDA) architecture and always thinking in the way to create a shared rendering mini-engine that can be use with the Class Designer Addin, under the philosophy of the model view controller (MVC) pattern, to allow or improve introduction of new features in the future.
  • Improving, testing and integrating ParallelFx into Mono The goal of this proposal is to continue the work started last summer on Mono's ParallelFx component in 3 ways : 1- Improving and keeping up to date the code to new Microsoft's ParallelFx version. 2- Completing the unit test coverage and specifically testing ParallelFx correctness. 3- Integrating the software in Mono Subversion which means making it comply to Mono guidelines and also maintaining it. Furthermore, the development of a parallel checker (much in the spirit of Chess : is planned to validate the above second point. This parallel checker will ensure that ParallelFx (or other parallel code) is correct and that no Heisenbugs are hidden inside it.
  • Mono.Simd Amd64 Port This will be a port of the X86 Mono.Simd hardware based intrinsics to work on the Amd64 platform. My previous experience in with the Simd intrinsics are studying the Simd jit code x86 architecture, starting work on a math library that uses the intrinsics, and researching how to inline intrinsics that have are not supported on the cpu or when the hardware optimization is disabled. The work will fall into three stages: fixing the register allocator(s) and reworking the code gen macros to support 16 regs, and other miscellaneous tasks that might remain. Each stage will end with running the simd test suite to make sure the code works (creating test suites as needed). By the midterm, code gen marcos should be modified to support 16 regs. Also by the end of the term, the register allocator(s) should be finished along with zero or more miscellaneous tasks. I have read and accept the rules and provisions at I will commit code at most on a weekly basis to be reviewed and discussed with my mentor.
  • PL/Mono: a procedural language for PostgreSQL The objective of my project is to add support for writing PostgreSQL functions in managed code. PostgreSQL functions are often referred to as "stored procedures", but apart from that usage they serve a broad range of purposes. They are are used for implementing triggers, adding new operators and creating new data types. My project will allow all these tasks to be done in CLR languages.
  • TaskForce - Task focussed workflow for MonoDevelop TaskForce for MonoDevelop is designed for teams with large codebases and bug trackers. TaskForce helps deal with information overload by monitoring your work, and changes the MonoDevelop interface to show only relevant information. This reduces scrolling and searching, and increases productivity. It readily integrates with bugzilla and trac, and allows you to edit and comment on bug reports from MonoDevelop, and improves collaboration in the team.