Last night our Paris meeting was lucky enough to be visited by JB Evain a veteran of the Mono team. The evening was hosted by Valtech who were kind enough to provide us with a room and a generous supply of pizza. Here’s a little summary of what we learned:

The mono team is composed of about 35 core members on the Novell payroll, as well as volunteers from the community. JB’s entre into the team is a fairly typical story; he worked on various open source projects, before becoming involved with the Mono project as volunteer he took part in a couple of summer of code projects which eventually got him into a full time roll on the project. The team is entirely distributed, JB normally lives and works in Lyon and does not see the other team members in the course of normal working week, thought there big Skype users.

The Mono team has released Mono 2.0 a couple of weeks ago, this includes a suit of Microsoft compatible libraries (things like a complete implementation of Winforms 2.0 , ASP.NET 2.0 and LINQ) and also a set of API that are native to mono (such as the Gtk# library). It is also packaged with a number of third party libraries; these are mainly data access providers. They have an implementation of the C# 3.0 compiler, VB 8.0 and an IL assembler.

We discussed how the Mono project chose what Microsoft libraries to port to Mono. They can’t do everything so their chose has to strategic. It’s mainly guided by a useful little tool called MOMA which analyze assemblies tell you whether they will run on the mono platform, it also feeds back to the Mono team, anonymously, which libraries they need to be ported to allow incompatible app to run on the Mono platform. On top of this they also listen a lot to customer feedback, based on this they’ll probably attempt a port of WCF but not WPF, Mono is more used for server side stuff and already has two good GUI libraries, there’s little demand for another one.

While it’s nice to have a set of Microsoft compatible libraries, the real invitation of the Mono project is the other stuff that it provides. Mono.Security is one small example, where there where things the Mono team considered where missing from Microsoft .NET. Another is better example is Mono.Cecil, a library for parsing and manipulating IL, we talked a lot about this since it was JB who started this project. The really difference between this and Reflection.Emit it that it is designed so that assemblies are not loaded into the AppDomain, a huge advantage if you want to be able to unloaded an assembly or rewrite it. There are some very interesting projects using this library, including the Mono linker and one of which we had a preview and will be announced very soon.

One interesting demo we saw was the C# top-level (REPL) that the Mono team are currently working and should be part of Mono 2.2. It interesting because Microsoft is currently also working on a C# top-level but it will ship as part of .NET 5.0, which of course has no official release date but the best guesstimate is sometime around 2012. The mono team will be able to release their top-level so much earlier than Microsoft because there C# compiler was implemented in C# from the start, were as Microsoft C# is implemented in C++ and is currently being ported to manage code.

Their development methodology, for the Microsoft compatible libraries at least, is to create a suit of NUnit tests against the Microsoft libraries (JB claims they are the world biggest NUnit user). Then when there satisfied they a complete test suite and understand the library well they start implementation of the compatible library. They know it’s done when all the tests pass. There build test environment is almost entirely virtualised (apparently there’s still a few environments that resist virtualisation) and hosted in Novell HQ in America.

Some of Mono existing users use Mono just because they want .NET but they want a version that runs on Linux and Mac. However there are some more interesting use cases, there’s quite a lot of mobile development going on at the moment, Microsoft offer’s a cut down version of the .NET framework called the compact framework to support this, Mono has no compact framework, but its assemblies run on the compact framework. So, some users use the mono Microsoft compatible libraries to replace the bits missing from the compact framework, some even go as far as compiling new assemblies with just the bits they need to avoid bloat of their mobile applications. Another interesting use case is the gaming industry. The gaming industry has huge investment in graphics/physics engines, all written C++. Here generally happy with these want to keep and maintain them, however they don’t want to program higher level features such as character behaviour in C++. Traditionally they’ve been big users of Python and Lua for this but there both relatively slow, however there are people now starting to look at Mono for this, as its languages are JITed to native code so generally have quite good perf. The advantage mono has over Microsoft .NET here is that they can recompile it and link it into their existing graphics/physics engines. They then have the choice of all the .NET languages to write higher level functionality in. I could see F# becoming very popular for this, given that it’s already becoming a popular choice for AI work, Microsoft Applied Games Group are big F# fans.

Anyway, after the main presentation we retired a local bar for drinks and more chatting. Here’s a few photos from the evening.

The next meeting is on December 2nd, 19:30 at the Microsoft building at 148 rue de l’université.


Feedback was imported from my only blog engine, it’s no longer possible to post feedback here.

re: Paris – November Meeting – What we learned about Mono - Jb Evain

Hey Robert,

Very nice post. Thanks for the feedback!

If I may, I have a couple of comments. The team is mostly communicating through mails and IRC, and we sometimes have conf calls, for which I use skype. But I don’t think we can say we’re big skype users :)

And also, we’re certainly a big NUnit user, at least in the open source world (we don’t know what happens behind closed doors), but am not sure if we’re the biggest :)

Anyway, thanks again for the feedback, am looking forward to visiting the group again, and having you in a couple of weeks for our yet to be announced wonderful project!


re: Paris – November Meeting – What we learned about Mono - Robert Pickering

Hey JB,

Thanks for the small corrections! Looking forward to seeing you again too.