GSoC/GCI Archive
Google Summer of Code 2015

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 Xamarin Studio IDE.


  • CPPSharp - C++ inline Code improvement CppSharp's C++ inline code handling and handling of functions with default arguments can be handled very well. After properly adding AST binding to parsing as well as generator level, the problem can be solved easily.
  • CppSharp improvements Extend the AST and binding backend layers on CppSharp to better accommodate Clang's Expr and Statement nodes in order to support default arguments and a significant subset of inlined code.
  • CppSharp | Continue Mono/.NET bindings for Qt Complete QtSharp ( to the point where it can be used to create and run GUI applications on any of the 3 major desktop platforms: Windows, Linux, OS X. Support for QML in particular is also considered as least priority because there may not be enough time to complete its interoperability with C#.
  • Get Banshee v3.0 final version out the door The goal of this project is to get the Banshee media player fully updated to the new state-of-the-art opensource platforms and technology stacks, and release the long awaited Banshee 3.0 final version.
  • Implementing System.Numerics.Vectors With introduction of System.Numerics.Vectors, Microsoft .NET Framework provided a great way of improving the performance of heavy computations by using SIMD extensions. My project involves implementing the same library for Mono to give it the same performance boost! Apart from that, I want to extend Mono JIT compiler so while using the library it would take full advantage of the SSE extension.
  • MonoDevelop Class Diagram The goal of this project is to come up with an add-in for MonoDevelop that generates a class diagram for a solution with a good user experience. It would make use of the language service of Mono Develop to fetch the details of the code base such as classes, hierarchy, interfaces, methods and display them in the form of a Class diagram in a neat user interface allowing various operations on it.
  • Overhaul MonoDevelop C/C++ addin Creating a standalone addin based on the current C/C++ addin, adding support for Windows using mingw32 gcc, better auto-completion using libclang, and code refactoring.
  • Port NRefactory 5 Actions/Issues to NRefactory 6 This is a proposal for porting the NRefactory 5 library to 6 using Roslyn. I created a doc of the content, this was copy pasted here. For more readability, please send me an email on and I'll be glad to send you the real version.
  • Porting the CoreCLR GC Consistency across platforms is very important when talking about such frameworks as .NET, but what sometimes is more important, is performance of the programs written in the framework. Microsoft did a huge amount of working to make this garbage collector and I propose to bring it to Mono platform.
  • Proposal to improve MonoDevelop IDE C/C++ capabilities Improving code completion, including the ability to parse locals to provide class members/member functions; refactoring; CMake
  • Show Referring Objects Hi, My name is Denis Surin. I am a student, studying on last course (4 years) in the State Polytechnic University. My major is mathematics - programming. I would like to do the "Show Referring Objects" project, based on the already existing features of the garbage collector and use interface of displaying local variables as a basis for data output. I think it is extremely helpful when you read unfamiliar code, and debug an already written function.
  • Tasks Window Debugger support C# is one of the strongest language of .NET platform, it offers modern language features. One of the latest features is the async-await Task-level using. Mono framework implements these elements well enough, but at the level of debugging it has catch up a little. Mono framework offers this possibility not only on Windows system, but on other popular operating systems. Improving MonoDevelop imply better development experience for developers on every OS. Creating TasksPad is one way to achieve it.
  • Version control backends I want to add version control backends. Now at monodevelop there are 2 implemented version control systems: git & subversion. I’d like to implement mercurial & bazaar. There is community version of Mercurial. But community mercurial version done using the executable. Which means it's slow and we can’t apply something improvements. I want to make it using the commandserver protocol. Bazaar is less popular than mercurial, but it still used in many open source projects.