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.