Google's Summer of Code and Mono

by Miguel de Icaza

Today Zoltan pointed me to blog entry on Mozilla's experience with the Google summer of code.

A long story short: all the projects funded in the Mozilla group that were completed have not shown any signs of movement since the SoC was over. Read the post for more details.

At Mono we had a very different experience. There were sixteen projects funded:

  • Jaen Saul: Ruby.NET implementation
  • Jb Evain: Cecil/Write support
  • Jeyasankar Kottalam: GCC CIL backend
  • Marek Sieradzki: MSBuild implementation
  • Michael Hutchinson: ASP.NET GUI Designer
  • Aaron Tomb: Bug finder
  • Blagovest Dachev: ASP.NET GUI Designer
  • Hans Hesse: Managed C++ front-end
  • Iain McCoy: XAML compiler
  • Michael Dominic: Diva Video Editor
  • Raphael Romeikat: PHP Compiler for .NET
  • Dmitry Bobrovsky: XSLT Compiler
  • Mario Sopena Novales: Monodoc improvements
  • Pedro Martínez Julia: Windows.Forms 2 controls
  • Tino Morenz: QNX Port
  • Florian Groß: JScript improvements (originally Ruby.NET)

From this list, we had:

  • 3 projects never completed (QNX, CIL C++ extensions, XSLT compiler).
  • 2 projects half-done, and the resulting code is not very useful (Ruby.NET and GCC CIL).
  • 11 projects that were completed to our satisfaction (Cecil/write support, MSBuild implementation, ASP.NET GUI designer, bug finder, XAML Compiler, Diva Video Editor, PHP Compiler for .NET, Monodoc improvements, Windows.Forms' DataGridView and JScript class library implementation).

We had two medium-sized projects that required two students to work on the project: Ruby.NET and the ASP.NET GUI editor.

We originally had two students working on Ruby.NET: the runtime and the compiler, but we reassigned the runtime student (Florian)to work on JScript runtime support while the compiler student (Jaen) worked on the core.

Sadly, the compiler guy was not able to finish on time so Ruby.NET was not completed. But at least we got the JScript class libraries upgraded and integrated into Mono's build system.

In the case of the ASP.NET GUI editor, the project was a success. Blagovest did most of the Mozilla-side work to turn Mozilla into an ASP.NET editor, and Michael did the Gtk# host and all o fthe integration. We have not heard much from Blagovest since the SoC finished, but Michael continues to be involved in the ASP.NET GUI editor, and has been become a contributor to the MonoDevelop IDE effort.

Only recently, with the upgrades to MonoDevelop's architecture, we have started to look into hosting the ASP.NET editor into MonoDevelop itself. Chris Toshok has started this integration and will be devoting more time to it in the next few weeks.

Marek completed the required tasks for an MSBuild implementation, he went back to school but came back to the project and leads the effort to complement the work that he did over the summer.

Marek is now working with other Mono developers to improve his implementation. He is a regular in the development channels.

JB Evain did complete the Cecil Write Support project. Cecil, a CIL image manipulation library, has been finding more and more uses in the Mono world. A few companies are using it (Mainsoft, DB4O) as well as the Mono Project for implementing various tools (Gendarme, our permission viewer.

JB continues to be involved today in Cecil and the Mono project.

Aaron Tomb implemented a bug finder based on Cecil during the summer. The bug finder looks at compiled code and looks for programming mistakes patterns in this code and reports it to end users.

Aaron completed his project, and after the summer he integrated his code into the general-purpose Gendarme tool for tracking other problems in applications. Aaron continues to submit improvements to Gendarme.

Iain McCoy completed the XAML Compiler during the summer and also wrote tests for ensuring that it worked. His code has been integrated into the main Mono class libraries and we hope to put it to use soon.

Michael Dominic's Diva Video Editor is one of the most polished GUI applications I have seen. Michael continued to work on it after the summer, and thanks to Chris DiBonna at Google, Google continues to fund the work of Michael on the Diva editor. He recently released version 0.1 of Diva.

Raphael completed the pieces he promised to complete on his PHP Compiler by the end of the summer of code. Raphael had structured the work on the compiler in three stages. He had commited to complete the first stage by the end of the summer.

He was away for a while working on school projects, but he returned recently and published a 0.2 version of his PHP compiler. This second release implemented the second stage of features he had planned for. We hope to see Raphael complete his work on the third stage as it would make for a great way of running PHP and Mono code side-by-side.

I personally would like to see the PHP community get involved in testing the compiler and improving the compiler as it would give a nice performance boost to all PHP applications and would be done in a completely open source stack.

Mario Sopena did many updates to Monodoc, and all of those were eventually integrated into the main Monodoc. He switched the engine to use Mozilla, moved from plain HTML to CSS-based rendering and implemented many other pending tasks in Monodoc. Mario remained involved in Mono for a number of months in Mono and continued to contrinute. He recently got a job and his contributions declined.

Pedro Martinez implemented the DataGridView control for Windows.Forms. This work was in a way ahead of its time, as his code was a 2.0 API contribution and our Windows.Forms is not yet 2.0 compatible. Pedro did a few code cleanups and improvements to the code after the summer was over, and helped us get the code in shape for integration into Mono's class libraries. But we have not heard much from Pedro since.

In Summary

We got lucky with the summer of code compared to Mozilla.

Many of the students delivered code that we were able to use (11 out of 16) and many of these students continue to be involved in Mono after the Summer of Code was completed (6 out of 11).

Am not sure I can pinpoint why we had more success with our summer of code projects than Mozilla did, but a few things might have helped.

One possibility is that much of the work got integrated into a larger vessel (class libraries or other tools). The larger vessel exposed the code to more people, and ensured that it did suffer bitrot.

Another possibility is that in the Mono case we listed projects that we needed external help with. We had identified things that we needed in advance and were looking for developers that would like to work on them.

I personally, could not be happier with the results: code delivered, integrated and continued involvement in the project.

On the downside, I wish we had been able to capture the other five students into continued involvement in Mono after the summer.

Posted on 13 Apr 2006