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 =>  (0xffffe000) => /lib/tls/ (0x4002c000) => /lib/tls/ (0x4003c000) => /opt/gnome/lib/ (0x4005e000) => /lib/ (0x40062000) => /opt/gnome/lib/ (0x40066000) => /opt/gnome/lib/ (0x4006b000) => /lib/tls/ (0x409e6000) => /lib/tls/ (0x40afa000)
	/lib/ => /lib/ (0x40000000) => /lib/ (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

New Dynamic Code Generation API

by Miguel de Icaza

Lluis has been working on a new Dynamic Code Generation API for Mono. A detailed blog post with source code, examples and rationale is available here.

Lluis' new code generation API is a medium-level API and sits happily between the CIL (too low level for certain tasks) and generating C# source code (too high level and slow to produce, compile and dynamically load for certain tasks).

Notice the interesting model for the code generation.

Posted on 10 Nov 2004

Novell Linux Desktop

by Miguel de Icaza

The Novell Linux Desktop has been released, a web page with information (and various flash demos) is available here.

Congratulations to the desktop folks for this release.

They have a starter's page in Novell's Cool Solutions with an overview for those new to NLD.

Joseph Hill

Joseph has been running for a while, and today I discovered his blog. What I found interesting is that he has been maintaining ASP.NET applications and ports of Mono (here) and his blog talks about his experiences.

It is an interesting read for those interested in Mono deployment and performance.

Although he is beta testing some new ASP.NET-based forums, the current forums are very active.

Alan Nugent Inteview

An Interview with Alan on the recent Desktop Release is here

Posted on 08 Nov 2004

Sweet tool

by Miguel de Icaza

Joshua Tauberer (Monodoc hacker extraordinaire and of GovtTrackUs fame) has ported Perl's Algorithm::Diff to C#, lovely tool available here.

It is not limited to strings or characters, it can operate on anything comparable.

Posted on 06 Nov 2004

Massi posted SSAPRE for Mono!

by Miguel de Icaza

Massimiliano just posted his implementation of the SSA-based Partial Redundance Elimination (for an explanation, see Massi's presentation).

This is an important milestone in Mono's runtime to improve the performance of computationally intensive tasks. The patch is only 2069 lines of code.

Massi previously implemented the Arrays Bound Check eliminination in the Mono VM. Congratulations Massi!

Personal Web Sharing

Am now using GPWS to share files from my computer at home.

Hasan has a blog where he talks about his Gtk# experiences.

Updated NPlot

I have updated NPlot to version 0.9.7 and improved the widget performance. You still need to use CVS mcs and libgdiplus to get it to work.

Code drop is here. Now with a spicy makefile.

Matt (the maintainer of NPlot) said that he wanted to distribute the Gtk# moving forward.

Ariel Faigon on Usability

An interesting presentation from Ariel Faigon on usability and another one on testing

Posted on 05 Nov 2004


by Miguel de Icaza

Being the optimist that I am, I will go to sleep thinking that the count is not complete, and that the Electoral College will fix the world for us. If the supreme court made some hand tuning to democracy last time, I will hope some other hand tuning can still happen.

Slashdot browsed at +5 has some very interesting comments

Harper has a guide for those who want to Leave the Country and there is a list of reasons not to move to Canada.

To me, its like an adventure, like in the Timeline movie: we get to go back to the middle age and explore a world where science and intelligence are a liability.

Nixon got impeached on his second term, there is hope ;-).

NPlot for Gtk#

In the paste few days I had been doing a Gtk# facade for NPLot: a wonderful library to do plots.

There was not much in the way of porting. NPlot alredy supported two front-ends: an ASP.NET one and a Windows.Forms one, so this is only an addition. The engine is completely independent of the presentation layer, which is good.

NPlot exposed bugs in our C# compiler and in System.Drawing, they are both fixed on CVS HEAD and the 1-0 branches. Sadly these fixes came after Mono 1.0.4 and 1.1.2 were built, so to use it you will need to get CVS.

The sources are available here. And here it is in action:

NPlot Gtk

Erik discovered NPlot a few weeks after Nat and myself were talking about widgetry that we would like to see available for developers. We were talking about scientific (2D plots, 3D plots, animations) and business widgetry (validating data entries, Gnumeric-like data entry, database-bound widgets).

NPlot fills the 2D plotting gap quite nicely. We had looked at some Gtk+ solutions, but this solution requires no bindings at all and can also work in batch mode or to produce plots for web applications.

Posted on 04 Nov 2004

« Newer entries | Older entries »