Updated Venue for Mono Meeting

by Miguel de Icaza

We have changed the hotel venue, to a nearby location, please check the Venue Update post on the Web site.

Posted on 15 Sep 2006


by Miguel de Icaza

I completely had forgotten to blog about SplendidCRM, an open source, .NET-based CRM system

The folks at SplendidCRM are very much Windows developers, they are completely new to Linux, they do not know our ways, nor speak the language that most of us Linux users do.

They were interested in supporting their CRM system on Linux, but they were overwhelmed by the instructions on how to get their software up and running on a system that they barely knew.

They were the first users to try our Mono VMware image. They had been requesting this from us for months, they got their software ported in a couple of days:

Within an hour of getting the VMware image, I was able to compile my project without any errors. You guys should have done this years ago.

We had to fix a couple of issues with our VMware image (DHCP configuration, installing the VMware tools) and after these changes, only after 48 hours since the release, his product was running on Linux.

SplendidCRM running with Mono, SUSE/Linux and MySql.

You can try their product running against MySQL or against SQL Server on top of Mono from their site.

Posted on 12 Sep 2006

Mono in Games

by Miguel de Icaza

Otee and a few other companies are building games with Mono as the VM for running scripts.

In Otee's case, I believe they are using some modified version of Boo. We are also assisting Second Life in adding a few features that they need in Mono for their own game.

Today, while reading reddit, I ran into this article Why C++, an article where the author talks about the advantages of C++ over C for game engines. At the end there was an interesting paragraph:

So I hate to admit it, but I come down on the side of conventional wisdom. Write your game engine in C++. Write your gameplay in Lua. Those might not be the right answers for the next generation. I can imagine a language with better support for concurrency stealing the application domain from C++ sometime in the next decade. And C#/Mono is nipping at Lua's heels as a game scripting language already. But for now, I think the C++/Lua combination is as good as it gets.

Emphasis added.

We know about a handful of games, but we do not have an entire list; I would love to know more about people using Mono to develop their game logic and would like to work with you guys (and yes, we can keep a secret).

Although Mono is embeddable, I always got the feeling that we could improve that API, and would like to get feedback from those embedding the VM about what kind of things they would like to have in Mono to simplify the embedding and improving future embedders experience.

Updated, some cute screenshots from Unity and games built with Unity are here

If you install their web plugin (Windows and OSX only for now), you can try out some of the samples, and sample games in here.

It is a shame that it does not run on Linux, but both the Windows and OSX versions use Mono as their high-level engine.

Posted on 11 Sep 2006

Bush Questioned on Torture

by Miguel de Icaza

In this interview president Bush is visible upset by the questions about torture.

Posted on 11 Sep 2006

Mono, .NET and Linux in Firenze

by Miguel de Icaza

I will be talking about Mono, Mono-based applications and a little about our work on the desktop at Novell.

Location: Universitá degli Studi di Firenze - Facoltá di Ingegneria, in l'aula è la 008 di viale Morgagni at 3pm.

When: 29th of September, 2006.

Thanks to Massi for helping me set this up!


Posted on 09 Sep 2006

Mexico: Six More Years of Poverty.

by Miguel de Icaza

Calderón, the most recently purchased president and a corrupt politician has been now appointed Mexico's president by the court.

From The Guardian:

Felipe Calderón has been named president of Mexico, by a court, much as George Bush was named President of the United States, by a court.

But did he win the election? We do not know. The court's decision does not establish this, any more than the Bush v Gore case established that Bush won his first election - which, as we now know, he did not.

In both cases, the truth could have been known in time. But it was not. And that is because one side - in the legal struggle, the winning side - refused and resisted a full recount of the votes.

Posted on 07 Sep 2006

Mono Summit

by Miguel de Icaza

We finally have a location for the upcoming Mono Summit in Boston: The event will be held at Marriot Hotel at Kendall Square in Cambridge, MA on October 23 and 24th.

Just in front of the Kendall T-Stop in Cambridge, 20 minute walking distance from Berklee College in Boston and across the street from MIT.

If you are coming, please register in advance and if you wish to connect with other Mono summit attendees, you can list yourself in our our public Wiki.

My boss today suggested that we should have some kind of reception, am thinking we could have a "Welcome Meeting" on Sunday evening for those arriving to the city, and maybe some small soire on Monday and maybe some parting drinks for Tuesday. Anyways, if you got some awesome idea about what to do with 80-100 C# developers, drop me a line.

Posted on 07 Sep 2006

IronPython 1.0 is out!

by Miguel de Icaza

Jim Hugunin has announced IronPython 1.0. Congratulations to the IronPython team at Microsoft for this release!

From the release announcement:

IronPython is about bringing together two worlds. The key value in IronPython is that it is both a true implementation of Python and is seamlessly integrated with the .NET platform. Most features were easy and natural choices where the language and the platform fit together with almost no work. However, there were challenges from the obvious cases like exception type hierarchies to the somewhat esoteric challenges concerning different methods on strings. We spent long days and sometimes weeks looking for the best answers to these challenging problems and in the end I think that we have stayed true to both Python and .NET.

To drive our Python compatibility, we run a large portion of the standard Python regression test suite in addition to a large custom test suite we added that runs IronPython and CPython side-by-side to test for identical behavior whenever possible. Despite all of this work, there will still be differences between IronPython 1.0 and CPython. The most obvious difference is that IronPython is missing a number of standard C-based extension modules so things like "import bsddb" will fail. We maintain a detailed list of differences between the two implementations and aim to reduce the size of this list in every release.

IronPython has also striven for deep integration with the CLR. For the implementation this is a great thing as it lets us take advantage of highly-tuned components developed for other languages such as the just-in-time compiler, garbage collector, debugging support, reflection, dynamic loading and more. This integration is also valuable to IronPython developers as it lets them easily use any and all libraries built for .NET from their Python code.

Posted on 06 Sep 2006

New MonoDevelop is out!

by Miguel de Icaza

Lluis has finally put the finishing touches on the latest incarnation of MonoDevelop.

This release is feature packed: Stetic now has toolbar, menu and action editors for Gtk# applications:

The Menu Designer, showing stock-icons. Clicking on "Click to create an action" will enter a new row.

The toolbar designer, here it show how to select a stock-icon for the toolbar.

This GUI designer is based around the Gtk Action model, so all menu entries and toolbar commands are linked to the same action. So you actually hook up events to the actions, not to the individual items, which is useful to keep consistency in your application.

The stock icons are not limited to the ones that ship with Gtk+, you can define your own that you can later reference, this is how:

When designing your dialog boxes, a context-sensitive toolbar is activated depending on the widget selected, so the most common operations are available right in the design surface without having to hunt them down on a property list:

Here you can see the options available for a label: alignment of the text,
and the vertical and horizontal filling and expanding properties.

Michael's Summer of Code ASP.NET GUI designer is now part of MonoDevelop, here it is in all of its glory:

The palette on the right shows the properties for the selected control, the "OK" button.

The ASP.NET designer is built on top of Mozilla, so a lot of the work is in the interaction between the embedded Mozilla engine and the MonoDevelop host.

Code completion has been vastly improved, it now supports Generics and will also display a tooltip with the help associated with a method when you select it.

Finally, when you hover over the source code, you can get documentation for a particular method:

MonoDevelop will now also generate the auto-tools infrastructure for your project (thanks to Scott!), to ease the deployment of your applications. And is able to produce tarballs directly from the IDE:

It will generate the standard auto-* stuff, but it will also install a .pc pkg-config file for your libraries, so third party projects can "reference" your library easily.

Solutions and Widget Libraries

My favorite feature is that your solution can include not only your main project, but also other libraries, like a widget library.

In this screenshot I have created a library that contains a custom control "MyControl" which is part of the "MyWidgets" project. The "MyWidgets" project then gets added (Go to References, Edit) to the main project, and this new widget becomes available for consumption in the main program.

You can also incorporate any other libraries and widgets, and they will show up in the palette just like MyControl show up on the right here:

My Wish-list

Internationalization: I personally would like to see something like Rafael's internationalization plugin to be integrated in MonoDevelop so you could also manage internationalization in the IDE.

And there is plenty that can be done in this area, for translations we could poke web services that expose all known translation strings for a project and incorporate translations into a program. We could also have a service that translates with Google Translate and help people translate their project and keep track of progress.

Web Services: There is a web service consumer add-in that was developed by Gideon (his current code lives in http://code.google.com/p/md-addins/ that provides a similar experience to Visual Studio for creating and consuming web services.

Deployment: it would be great if someone wrote a deployment target that submits the tarball to the OpenSUSE build service.

The OpenSUSE build service will take a piece of source code and produce packages for Fedora Core, Ubuntu, SUSE and others, so we could have MonoDevelop directly generate packages for all distributions from within the IDE.

An XML Editor: it would be nice if someone wrote an XML editor that could use some RelaxNG or XmlSchema rules to provide intellisense for various file formats and provide a good XML editing experience.

IronPython Integration: IronPython has a number of features to support IDEs, and it would be lovely if we could get these things supported into MonoDevelop, in the same spirit that the Boo support does today.


There is much more in the Release Notes where I liberally took screenshots from.

The IDE today has support for various languages: Boo, Nemerle, Visual Basic, C#, Java and ILasm.

Lluis and his team have done a fantastic job on MonoDevelop. The demo that Lluis did in Guadec this year was truly mind blowing, I hope we have some form of screencast soon for people to witness the great integration on this IDE.

Posted on 06 Sep 2006

VBNC Compiles Hello World on Linux

by Miguel de Icaza

Rolf's excellent Visual Basic compiler was able to bootstrap itself a few weeks ago on Windows, but it did not work with Mono yet.

The compiler needed the VB runtime to be upgraded, it required a few fixes in the way we handle interface implementation for generics in the Mono VM, the final bug today was reference file names with their proper casing.

Also Rolf's compiler contained a few MS-specific hacks in the compiler, but those are no longer necessary so this afternoon the VB compiler was able to build Hello World on Linux:

$ mono vbnc.exe a.vb
                                                  DEBUG RUN

Visual Basic.Net Compiler version (last write time: 05/09/2006 21:06:28)
Copyright (C) 2004-2006 Rolf Bjarne Kvinge. All rights reserved.

Starting Scan
Scanning file /home/cvs/vbnc/vbnc/bin/a.vb
File '/home/cvs/vbnc/vbnc/bin/a.vb' scanned in 0.118 seconds
7 lines and 115 characters in total.
After SCAN: True
Starting Conditional Compilation
After ConditionaL True
Starting Parse
Parsing file /home/cvs/vbnc/vbnc/bin/a.vb (1 of 1 files)
3 assemblies were loaded.
73 namespaces were loaded.
2129 types were loaded.
Starting Resolve
Starting Resolve
CreateImplicitTypes compiler (1 of 1 types)
ResolveType compiler (1 of 1 types)
ResolveTypeReferences compiler (1 of 1 types)
CreateImplicitMembers compiler (1 of 1 types)
ResolveMembers compiler (1 of 1 types)
ResolveCode compiler (1 of 1 types)
Finished Resolve
DefineTypes compiler (1 of 1 types)
DefineTypeParameters compiler (1 of 1 types)
DefineTypeHierarchy compiler (1 of 1 types)
DefineMembers compiler (1 of 1 types)
Starting Emit
Emit compiler (1 of 1 types)
CreateType compiler (1 of 1 types)
Creating: compiler
Created:  compiler
Assembly 'a, Version=, Culture=neutral' saved successfully to '/home/cvs/vbnc/vbnc/bin/a.exe'.
Compilation successful


The "DEBUG" run is a tiny bit verbose as you can see, the results are mind blowing:

mono$ cat a.vb
public class compiler
shared function Main as integer
Console.WriteLine ("Dingus")
return 0
End function
end class
mono$ mono a.exe


Am actually scared of trying to bootstrap on Mono, I do not know if there are enough pixels in my machine to build the 68,000 lines of VB that the compiler has.

Posted on 05 Sep 2006

« Newer entries | Older entries »