Silverlight and Moonlight: A Summary.

by Miguel de Icaza

Edd Dumbill has authored a superb summary on where Moonlight is.

He has put together a great description that pulls information from multiple sources to put together a really nice story and give a good idea of where we are headed to.

Posted on 23 Aug 2007

Google Summer of Code: Windows.Forms Designer

by Miguel de Icaza

Ivan has posted the final status report for his Mono.Design work for the summer:

During the summer Ivan worked on implementing a Windows.Forms designer surface and various pieces of the infrastructure to load and save designs. He also worked on integrating Windows.Forms with Gtk# to enable the designer to be used from within MonoDevelop.

Read his entire report here and you can comment on his blog.

Posted on 23 Aug 2007


by Miguel de Icaza

OMG2 OMG2 OMG2 OMG2 OMG2 Mark Probst pointed me out to the announcement of Canon's 40D camera. I skipped over the 30D, so this is my opportunity to continue shopping until I drop.

OMG3 OMG3: it can do Wifi file transfers and hook up to a GPS.

Posted on 22 Aug 2007


by Miguel de Icaza

As a very happy Rhapsody customer, the news that Rhapsody will start selling DRM-less music at 0.89 cents a pop is ubertastic.

If I was European or Canadian I would be 30% more excited -- considering the falling dollar.

I have been using it mostly as a radio so far, and avoided purchasing music because it would be DRMed, but there are a bunch of titles that I would like to own.

Let the double-click all-amateur shopping begin!

Posted on 22 Aug 2007

Annotated C# Standard

by Miguel de Icaza

Today I received my copy of the Annotated C# Standard that Jon Jagger, Nigel Perry and Peter Sestoft put together.

This book is an annotated version of the C# specification that comes with plenty of comments and contributions from people that have implemented the language (It has contributions from Mono's Marek Safar, Martin Baulig, Paolo Molaro, Raja Harinath and myself, but also from the C# team at Microsoft, contributors to ECMA and some universities that researched C#).

Jon has been passionate about C# for a long time. The C# specification that we distribute as part of Monodoc was based on his hyperlinked version of the standard.

Nigel contributed to both the CLI and C# standards over the years and recently joined Microsoft.

Peter has written a number of books (Java Precisely, C# Precisely) and is also behind the implementation of C5 a Generic Collection Library (this was a great test case for Mono's C# compiler: it was quite a challenge).

Congratulations to Jon, Nigel and Peter. They have been working on this project for a long time.

Posted on 22 Aug 2007

Rafi on Grasshopper

by Miguel de Icaza

A few years ago we met Rafi at one of our Mono summits in Boston, he works for Mainsoft and he has always been amazing.

Watch his interview on what he is doing with Grasshopper here and here.

He talks about Mainsoft's contributions to Mono, about his testing procedures and the kind of things that are possible with Grasshopper when integrating ASP.NET applications when running on J2EE servers.

Posted on 16 Aug 2007

Mono Bugzilla: Important

by Miguel de Icaza

As you may or may not know, the Mono team is in the process of switching from the Ximian Bugzilla to the Novell Bugzilla. The Ximian Bugzilla installation is a very old, patched, modified, buggy and unmaintained version of Bugzilla. The Novell Bugzilla team has offered to take over the maintenance of Bugzilla and give us both a modern Bugzilla installation and access to various tools that will help our process.

As part of this process we need everyone to create Novell.Com accounts.

When creating your Novell.Com account, please make sure to use the same e-mail address that you use to login to the Ximian Bugzilla. This will ensure that your Bugzilla configuration stays the same.

Please create your Novell.Com account now, so that you will be able to immediately access the Novell Bugzilla when we do the final switchover.

To create a Novell.Com account, please go to this URL and fill out the form: here

Important: To link your existing bugs from to the new bugzilla make sure that you use the same email address in that form so you can keep tracking the bugs that we had for you before.

We appreciate all of the contributions that you have made to mono in the Ximian Bugzilla and hope that you will continue to contribute in the Novell Bugzilla.

Posted on 16 Aug 2007

Toshok: International Man of JSonified Xaml

by Miguel de Icaza

Given Toshok's initial reaction to the lack of JSon support in Silverlight last night:

He decided to do something about it.

Silverlight is "webby" in that you can use plain text files and you can generate its content from PHP or any other webby framework by using the mighty print statement.

But XAML is annoying to type, it is webby, but its not uber-webby. It would be nice if Silverlight supported incarnation from JSon instead of incarnation from XAML, for one, it is more wrist friendly than XAML and it also a lot nicer on the eyes.

This morning Chris implemented a JSon to XAML. See his blog post.

This is done with a Javascript program, so it will work with your stock Silverlight installation.

It would be much nicer if Silverlight's Control class had a CreateFromJson in addition to CreateFromXaml.

See Chris post on the subject. You can now use syntax like this for Silverlight:

var json = {
  Canvas: {
    name: "Toplevel Canvas",    children: {
      TextBlock: {
        Text: "Hello World"

Posted on 14 Aug 2007

Moonlight's 2.1 profile

by Miguel de Icaza

Silverlight comes with a shrunk down version of the CLR called the CoreCLR and also comes with a reduced version of the core class libraries.

Silverlight uses a subset of the 2.0 API and removes a lot of stuff that would only be used on a desktop or a server and removes overloads that people are not likely going to use and according to some blog posts even things like System.Collections will be removed giving preference to the generics-based API in System.Collections.Generic.

Nice graphic showing my Inkscape skills:

To support this "thin" profile in Moonlight we had a couple of choices.

We really did not want to branch our source code and chop code left and right until we removed all the extra baggage. We also did not want to use compilation defines because that would get ugly very fast.

Instead what we did was productize Linker tool that was developed as part of the Google Summer of Code last year.

The Linker could take an assembly and a description of the desired API entry points and produce a new assembly that only contains the requested entry points plus any of its dependencies. Although the Linker from last year was able to do some basic linking, but as with all software projects, the devil is on the details. JB has been working on productizing the tool ever since he joined Novell back in May.

The idea was that we would feed the linker a superset of our 2.0 library (2.0 plus the handful of Silverlight-esque APIs) plus a linker description file, and it would produce the resulting Silverlight compatible assembly.

The above approach allowed us to minimize the number of ifdefs that were required in the source code. In addition to the linking stage we also needed a way of inject a number of security attributes (again to avoid having a mess of ifdefs everywhere).

So JB created new specialized tool that allows us to add, remove and validate assemblies. We call this the Tuner. Both the linker and the tuner are based on Cecil a library for handling CIL files.

The tuner can do most of the heavy lifting, but there are a couple of areas that still required human intervention:

  • In a handful of cases abstract methods are no longer exposed in Silverlight, we had to work around this directly (XmlReader).
  • In a few cases there are some interfaces and class hierarchy changes required, those also had to be done manually.

Finally, since our C# compiler depends very strongly on its mscorlib (the reason we have 3 compilers today, one for each profile is linked precisely to this dependency on mscorlib) we had to add special support to the VM to allow the compiler to call into methods that we had hidden as part of the tuning process.

This afternoon for the first time JB was able to build the 2.1 profile from the start up to the Silverlight support libraries and the Silverlight plugin with the tuned assemblies.

Although we have been debugging Moonlight with 2.0 assemblies for the past few months due to some of the API changes some applications like the SimpleXPSViewer did not work.

There is still some work left to do as you can see from the warnings generated by the tuner, but we are getting there.

Silverlight Toolkit

With the 2.1 profile in place it is now possible for people on Linux and MacOS to develop Silverlight applications without using Windows.

The bad news is that the 2.1 profile will not be available in Mono's 1.2.5 release as we branched that release a few weeks ago. So developers interested in doing Silverlight development on Linux or MacOS will have to wait until our 1.2.6 release in a couple of months.

In the meantime Ankit has added support to MonoDevelop for compiling existing Silverlight VS Solutions as well as generating Unix makefiles from the VS solution file. You must be using an SVN release of MonoDevelop (sadly, 0.15 wont do it). for this to work though:

bash$ mdtool generate-makefiles SilverlightAirlines.sln --simple-makefiles
Creating configure script
Creating rules.make
Creating Makefile.include
Adding variables to top-level Makefile
Makefiles were successfully generated.

The default is to generate auto-tools based makefiles. It is recommended that people with acid reflux, ulcers or other delicate stomach conditions use the --simple-makefiles option. --simple-makefiles produces a configure and Makefile script that are essentially the labor of love.

If we can sort out the license for the Silverlight.js template, we should also be able to ship MonoDevelop templates for creating Silverlight content.

Posted on 11 Aug 2007

Microsoft Visit

by Miguel de Icaza

Chris Toshok and myself will be in Microsoft offices in Redmond, WA from Monday to Wednesday next week. Email or post in the comments if you are interested in doing some kind of get together/dinner.

In related news, Jackson posted a screenshot of Silverlight Scribbler running on Moonlight on his blog:

Jackson and Sebastien also got parsing of XAML bezier paths working just in time for the June 21st demo, I like this screenshot:

Posted on 11 Aug 2007

« Newer entries | Older entries »