GSoC/GCI Archive
Google Summer of Code 2014

Mono Project

License: MIT license

Web Page:

Mailing List:

The Mono Project implements a powerful and productive developer platform based on the ISO standards for the Common Language Infrastructure and the C# language. It is compatible with the Microsoft .NET runtime, yet spans a wide variety of operating systems and architectures ranging from desktop and server systems such as Linux and MacOS to embedded systems like the iPhone, Android and games consoles. Mono allows developers to write code that can be run on multiple platforms, but also provides platform-specific libraries and toolkits to enable rich native integration with each platform. In addition to the Mono compilers, runtime, and class libraries, the Mono organization hosts a large range of related projects, including many cross-platform and platform-specific libraries, and the MonoDevelop IDE.


  • Color Scheme Editor The project is to develop a new editor for MonoDevelop syntax highlighting color schemes.
  • Create bindings for clutter(-gst/gtk) and improve gstreamer-sharp This proposal is about continuing the bindinator project which was substantially improved under last year’s gsoc. Though bindinator can already create bindings for most libraries almost automatically, it will likely hit some corner cases in bigger libraries. Therefore this project aims at further improving the binding process.
  • Extending Shape Capabilities Extend the capabilities of the shape tools in Pinta to make shapes editable after being drawn. Proposed to be done in 3 parts: 1. Making all of the shapes drawn by shape tools editable. 2. Merging these capabilities, allowing for editability to be maintained when switching between tools. 3. Realizing some of the possible shape creations and combinations that spawn as a result of this, such as octagons and curved, mixed, and custom shapes.
  • Finishing the port of F-Spot to use GTK3 Last October Stephen Shaw and some F-Spot contributors started the work to port F-Spot from using deprecated GTK+ 2 to GTK+ 3. This represent a huge amount of work in the case of F-Spot but it would be a great step to maintain F-Spot codebase up to date. So this proyect is mostly about finishing that work to have F-Spot running only GTK+ 3 code.
  • Garbage collector parallel work distribution A garbage collector is an important piece of today virtual machines but sometimes it introduces some significant overhead. One way to reduce this problem is to utilize a parallel approach during garbage collecting but it is difficult parallelize the work to do. The goal of this project is to improve the garbage collector actually used by Mono with new techniques and algorithms for a better parallel work distribution to improve his scalability and performance in a parallel environment
  • GitHub Issues Integration I will talk about my past, a quick brief on the work experience and give an overview of the projects I was involved on and languages and methodologies I am proficient with. Then I will go and talk about the issue management integration. I will implement features like: > Fetching all issues from GitHub > Filtering issues > Creating new issues > Closing issues > Reassigning issues and a few more features disclosed in the proposal.
  • GitHub Repository Integration for MonoDevelop This project will cover the Github repository integration under the main implementation of empowering MonoDevelop IDE user with Github interaction capability from within the IDE which can help them to work closely with their favorite version control-Github.
  • Implementing Refactoring Actions in MonoDevelop/NRefactory NRefactory is used to analyze C# code and generate an AST. This can be used to identify areas of projects where refactoring or code actions can be taken. Right now, it supports a number of refactoring actions. However, many more that would be useful to the user still need to be implemented. I have identified a number of major refactoring actions already and would do thorough research into other IDEs to find any missing actions that would be beneficial to the user, and implement them.
  • Improve Mono Runtime Mono Runtime is an application that runs IL bytecode on multiple platforms. The purpose of this project is to add a couple of improvements to its' current functionality. These improvements consist in eliminating pushes from x86 generated code, adding a store-forwarding optimization to the IR code and working on various parts of the long decomposition.
  • Port the Clang C++/CLI compiler to POSIX platforms and implemet ref classes Clang’s C++/CLI compiler depends on Microsoft’s own compiler to be built. This dependency limits its applicability to Microsoft platforms. By replacing Mono.Cecil with Mono’s unmanaged metadata reading API the compiler can become multi platform and used by more developers. Moreover, I intend to work on the backend implementation of ref classes. Ref classes are being parsed by the compiler, however, the llvm backend does not know how to generate them yet.
  • Strong JavaScript Support in the Mono IDE Web Apps are becoming more relevant in today's age. From web applications, to desktop applications, to mobile applications. JavaScript is widely used. It's only time before JavaScript becomes the next all purpose language. Mono IDE right now is missing this critical feature in its mission of cross-development development. I have the experience and passion to undertake this ambitious project and write complete JavaScript support in Mono IDE.
  • support for MonoDevelop test framework support for MonoDevelop