Cecil on Mono SVN

by Miguel de Icaza

Jb Evain check his Cecil library into the Mono SVN repository (module name `cecil').

Cecil is a library that can be used to consume and produce CIL libraries. We are planning on using it for writing a "diet" program that will act as a "garbage collector" for assemblies (Paolo has written one already with the low-level C interface), allowing developers to create arbitrary profiles of the Mono class libraries given a starting root set. This will be handy addition to our bundles

In addition to that, there are various other things that we have in mind for Cecil: writing a new verifier, writing a bug-finder, writing a CLS and style compliance tool (like FxCop) and Jb's own work on his Aspect weaver.

Posted on 10 Jan 2005

Confessions of an Economic Hit Man

by Miguel de Icaza

I first found out about "Confessions of an Economic Hit Man" from this article on CommonDreams.

My copy of the book arrived yesterday and I have not been able to put it down. The book tells the story of a man that is trained to convince third-world countries to accept large loans for developing infrastructure. This is done by creating models and projections of the prosperity that such projects would bring to their countries.

The book tells a story of money being funneled from the World Bank loans into various corporations in the United States as well as the resulting unpayable debt that remains in the country. This debt can never be canceled and it is later exchanged by land, military bases, or favoring votes in the UN. In exchange politicians who accept these terms get a popularity boost from bringing infrastructure into the country.

The trick is to predict growth in terms of the gross national product. Even if the benefit goes to a single individual and the rest of the country is impoverished as a result.

There are three stages described in the book to ensure that a country gets the debt. The first step is to convince the country leaders of the benefits that it will bring to the population and the economic growth of the country. If the leaders refuse, then a second team referred to as "the jackals" perform targeted assassinations and if this fails, then the army is sent.

Any latin american has been a witness of these loans, the constructions and the special favors going to a few companies in the past twenty years. This book offers an insight into the inner workings of this process.

John Perkins tried to write this book four times, and four times he was convinced not to. This book is the fifth encarnation.

You always suspect something is fishy when living in Latin America, and the opposition typically blames large corporations for the sketchy deals. Sometimes the stories are so incredible that you can not believe them until you find documents like The Church Report.

Gnome Artwork and Software Piracy

Jakub points out that a company who is heavily borrowing GNOME's GPLed icons for its products and its web page has some strongs words about software piracy.

Posted on 08 Jan 2005

CommonDreams links

by Miguel de Icaza

An interesting an succint look at administration mistakes

Gecko# working on Windows

Thanks to the work of Zac Bowling the Mozilla bindings for Mono and Gtk# (Gecko#) are now working on Windows, see screenshot here.

This is using the standard Mozilla DLLs. His code is available here

Mono updates

There are plenty of updates from the land of Mono, I will write about those later. The most important things is that the new Windows.Forms implementation has replaced the old version on our repository, and that Geoff has implemented native MacOS X support for it.

On the JIT world Zoltan has completed the work to produce Position independent code (PIC) for our ahead-of-time compiled programs which will reduce the memory usage for long-running Mono applications.

In the meantime Massi continues to improve our SSAPRE and is going to be adding elements from GVNPRE to SSAPRE which in a single pass will give us some nice performance numbers for computationally intensive tasks.

Best Book in Years

I finished reading Robert Fisk's Pity The Nation a book that recounts the last 20 years of the story of Lebanon from the point of view of a war journalist. The book is gripping and its hard to put it down. Robert Fisk weaves plenty of different stories, anecdotes and interviews to produce a detailed tale of life in Lebanond during the civil war.

I have not read fiction for a long time, partially because books like this one tell a more vivid and interesting story than fiction does.

This book goes into the living standards, the traditions and the sources of various conflicts as well as covering the mistakes that every army makes in their search for conquest or liberation.

Of particular interest was watching the news with the reports from Iraq by the time I was reading the second half of the book, as it seems that the more we live and the more documented humanity mistakes are, the less we learn from them. Those who planned the latest war would have benefitted tremendously from reading Robert's account of the Lebanese conflict as they repeated the same mistakes the large armies did twenty years ago.

Its only 12 dollars for 700 pages of stories.

Posted on 07 Jan 2005

Documenting your Libraries with Monodoc

by Miguel de Icaza

Christian Hergert has written a tutorial on how to use the Monodoc tools to maintain the documentation for your Mono/.NET-based library.


On Saturday we will go for a week to Cancun on vacations. We are flying tomorrow to Mexico City and will be working from there for a couple of days and will take a chance to visit some friends.


Linux and Open Source

An article talking about Low Bug Counts on Linux. Another take on the same announcement.

A new Study on Linux vs Windows TCO by CyberSource.

Posted on 14 Dec 2004

Exposing Mono Libraries to C

by Miguel de Icaza

Alp has updated the Mono C binding generator cilc to support Gtk#.

The cilc tool is used to produce C bindings from Mono and .NET assemblies. The new Gtk+ support extends this to provide object inheritance of Gtk#-based widgets. So it is now possible to consume Gtk# widgets from C easily.

The code lives in CVS as part of mcs/tools/cilc

Back in November, 2001

Nat used to sleep a lot on airplanes.

Posted on 13 Dec 2004

Developing OpenOffice

by Miguel de Icaza

Michael Meeks has been contributing to OpenOffice for a couple of years now. Initially he made it simple to start contributing to the effort, and wrote the OpenOfficeOrg Hacking guide, and setup a site at Ximian to get open source developers to contribute, you can see it here:


With all the tools for newcomers to contribute to OpenOffice: Source Code Cross Reference, Bug Tracking System, Tinderbox Status and ready-to-hack source packages.

One of the best features is the Hackers Guide.

Yesterday he posted his slides on OpenOffice hacking here, I found some of them fascinating:


Edd, I agree that there is not much action on the IronPython development front, and we would be willing to host a hackable repository for maintaining IronPython.

We could then provide all these patches to Jim for when he has the cycles to do its upcoming release.

Logistically-wise, my hands are tied until January as Cancun is taking precedence over hacking in the upcoming weeks, but the new year is a good time to pick this up.

Mono Updates

We released the latest two versions of Mono 1.0.5 (production) and 1.1.3 (development) both with a long list of goodies.

In the Windows.Forms world, Geoff wrote a native Quartz driver for our Windows.Forms implementation, which you can see here. Geoff reports that we have feature parity with Windows.Forms

Also, ran into IronPHP the same concept of IronPython, but for PHP.

Also Duncan learned today that the University of California Irvine is teaching one of its compiler classes with Mono on MacOS X.

Posted on 09 Dec 2004

Bundles in Mono

by Miguel de Icaza

Over the weekend I checked into the repository a tool to easily create Mono bundles. A mono bundle allows you to ship your Mono application as a single binary: no runtime necessary: everything is "statically linked", there are no external dependencies on a Mono installation of any kind.

To use, just type:

    mono$ mkbundle --deps sample.exe -o mcs
    Sources: 1 Auto-dependencies: True
       embedding: /home/cvs/mcs/mcs/mcs.exe
       embedding: /mono/lib/mono/1.0/mscorlib.dll
       embedding: /mono/lib/mono/1.0/System.dll
       embedding: /mono/lib/mono/1.0/System.Xml.dll
    as -o /tmp/tmp7aa740ad.o temp.s 
    cc -o demo -Wall temp.c `pkg-config --cflags --libs mono-static` /tmp/tmp7aa740ad.o

In the example above the resulting binary is a healty 7.5 megabyte file, but it contains the Mono C# compiler and three of the system libraries as well as the Mono VM embedded into it:

	mono$ ls -l demo 
	-rwxr-xr-x  1 miguel users 7575630 2004-12-01 02:21 demo*

I then tuned the compilation to use a few shared libraries from the system, in this particular sample, I only want to avoid taking a Mono dependency:

	mono$ mono$ ldd demo
	linux-gate.so.1 =>  (0xffffe000)
	libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4002c000)
	libm.so.6 => /lib/tls/libm.so.6 (0x4003c000)
	libgmodule-2.0.so.0 => /opt/gnome/lib/libgmodule-2.0.so.0 (0x4005e000)
	libdl.so.2 => /lib/libdl.so.2 (0x40062000)
	libgthread-2.0.so.0 => /opt/gnome/lib/libgthread-2.0.so.0 (0x40066000)
	libglib-2.0.so.0 => /opt/gnome/lib/libglib-2.0.so.0 (0x4006b000)
	libc.so.6 => /lib/tls/libc.so.6 (0x409e6000)
	librt.so.1 => /lib/tls/librt.so.1 (0x40afa000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40c68000)

This is just a productification of a feature that Paolo had developed for Mono.

The next step is to write an assembly "linker", so that only the functions necessary to run mcs.exe are included as opposed to the whole three assemblies.

The main problem is that we need a good library for dealing with CIL images, the contenders:

  • Reflection is slightly incomplete, but can be brute-forced to provide the information we need.
  • There is a rumor of a counter part to PEAPI from the folks that wrote Component Pascal, but so far no updates on their web site.
  • Using the Mono unmanaged C API: I rather not.
  • Perl script over the ildasm output. Paolo would be very happy ;-)
  • Use RAIL
  • Write a new library from scratch to cope with these problems.

Posted on 01 Dec 2004

Mono Security Stack

by Miguel de Icaza

Sebastien for a while has been working on all-things-security in the Mono stack, in today's blog entry he describes how to write an SSL server in 3 simple steps.

He uses that to showcase the Mono.Security assembly and the excellent work that Carlos Guzman Alvarez has done on the TLS/SSL stack in Mono (Carlos is also the man behind the Firebird database provider for .NET).

In any case, Sebastien's blog is packed with technical information on a wide range of cryptographic and security topics (specially related to Mono).

Posted on 30 Nov 2004


by Miguel de Icaza

At ApacheCon today, just finished my keynote, there is a video and audio of it here.

The slides of my presentation are here.

F-Spot failed during the demo, the problem was that on CVS Geoff just made Mono.Data.Sqlite support both the old Sqlite and the new Sqlite3, a tiny logic error gets the autodetection wrong (which is now fixed).

Dmitry Robsman, myself, Scott Guthrie, Daniel López

With the creators of ASP.NET (Dmitry and Scott) and the original author mod_mono (Daniel).

Daniel is at the conference demostrating at the conference is BitRock installer for Unix which is an Install-Shield like installer for Linux, BSD, Solaris and Windows and works with in GUI, text or unattended modes.

As a proof of his installer, he has a sample Mono installer for Linux that includes XSP and Apache for folks that want to get a quick head-start on Mono. The simplest Mono installation on Unix so far.

There is a lot of Java presence, and some PHP presence at the conference.

In other news: am running IBM's Derby in Mono, without having to write a line of Java. Love!

Posted on 16 Nov 2004

CVS to SVN migration completed

by Miguel de Icaza

We completed the migration of the Mono repository from CVS to SVN. We did a few dry runs of the whole migration to verify that nothing would go wrong.

We are happy to report that the migration went as planned and we only had a small service interruption of a few hours while we did the final migration.

The repository had 635 megs of data in 34,831 files checked-in. We are using the file system backend, and things went very smoothly.

Details on the migration process for Mono users are here.

Posted on 11 Nov 2004

« Newer entries | Older entries »