Mono and Fedora

by Miguel de Icaza

I just woke up to the announcement over at Chris Blizzard's blog (from Planet Gnome) that Mono today was included in Rawhide, the staging area for the next release of Fedora Core.

These are fantastic news for Mono users and developers everywhere and for Fedora users which will get both Mono and the various Mono-based applications that have been cooking.

Am looking forward to work together with the Fedora folks.

If you are a new Mono user, here are some useful links:

  • A directory of introductory topics to Mono.
  • Links our development plans, broken up by category. A good entry point into the Mono hacking universe.
  • Mono's Platform Support.
  • Gnome users will be interested in Gtk#: our binding to the GNOME platform libraries.
  • Documentation on Embedding Mono into your C application, to extend your application with Mono-based code.
  • Programming Languages that are supported by Mono. As your tour guide, I suggest you look into these tasty new languages: Boo, IronPython and Nemerle.
  • For those learning C# for the first time, I still strongly recommend the ECMA 334 specification: the first few chapters include a very well written tutorial.
  • Edd and Niels book remains a good introduction to Mono and GUI programming on Linux: Mono: A Developer's Notebook.

Posted on 10 Jan 2006

Persons of Interest Documentary

by Miguel de Icaza

The Jesus General posts a few profiles from the documentary Persons of Interest.

The "Reports to the General" over at the Jesus General are always fun, make sure you check them out.

Reminds me of what Molly Ivins said about vegetarians.

Posted on 04 Jan 2006

Howard Zinn on War

by Miguel de Icaza

I found this quote from historian Howard Zinn insightful:

There is a persistent argument against such a possibility, which I have heard from people on all parts of the political spectrum: We will never do away with war because it comes out of human nature. The most compelling counter to that claim is in history: We don’t find people spontaneously rushing to make war on others. What we find, rather, is that governments must make the most strenuous efforts to mobilize populations for war. They must entice soldiers with promises of money, education, must hold out to young people whose chances in life look very poor that here is an opportunity to attain respect and status. And if those enticements don’t work, governments must use coercion: They must conscript young people, force them into military service, threaten them with prison if they do not comply.

Emphasis added.

He follows up with assorted examples.

Posted on 31 Dec 2005

Developing on Apple Systems

by Miguel de Icaza

Recently Nitesh Dhanjani in a bit of a rude email exchange asked Steve Jobs if he had plans to support something like .NET or Ruby on the Mac.

Update: On a positive note, Nitesh's blog entry has sparked an interesting discussion.

Given the initial confrontational exchange (which can be found here) am not surprised at Steve's immediate comments.

I would like to add some comments to the discussion as we develop a cross platform Common Language Infrastructure (CLI) implementation that also supports the Mac.

On Speed

Steve claims that ".NET with CLI and managed code runs SLOW". It is true that writing code in a managed language or an interpreter is likely going to be slower than the output produced by a C compiler, or the output produced by hand-tuned assembly code.

Lets start with an example: F-Spot is our photo management software which is written in C# and runs on the CLI consistently outperforms iPhoto and scales easily to hundreds of thousands of pictures without the obnoxious pauses that are common in iPhoto for example. F-Spot gets bonus points for being written by a single developer.

F-Spot makes use of a feature in the CLI called "Platform Invoke" (or P/Invoke) which allows code written in a managed language to call into native code easily. In F-Spot's case all the high-level logic is implemented in a managed language and the bits that are performance sensitive (like quickly rendering the image, transforming JPEG images and even the GUI toolkit employed) are implemented in C.

From a productivity stand point this is the best of both worlds: programmers can use a higher-level language to focus on the functionality first. When they identify a performance bottleneck they can easily move this functionality into a C library.

It is possible that Steve has only looked at Microsoft's Rotor implementation of the CLI which merely ships a toy code generator. We encourage them to look at Mono and the various new advanced optimizations that we are introducing in Mono.

On Productivity

Although raw performance is good for some applications they impose a heavy toll on the developer. A professionally written and hand tuned assembly language program will likely perform better than anything else generated by a compiler.

The language and runtime choice is a tradeoff that developers make. A balance between the time available for releasing the product; the budget available for creating and maintaining the application; the target system requirements; any third party libraries and components required; the in-house expertise; availability of developers with knowledge to develop and maintain the code; language learnability; the project life-span and the requirements that it might impose on the project: from languages designed to maintain software over a large period of time to write-once, barely-touch-afterwards software.

There is not a single solution to the problem of course, but we believe that Mono does bring a good mix of elements that make it a good choice for a large body of developers. Some people will continue to be happy with their existing tools and their existing frameworks, but I believe Mono can help Unix developers produce better applications faster.

Mac developers interested in using Mono and its tools on the OSX could use the Cocoa# bindings today. It is not complete, but it has a good foundation on which people can add more bindings to Objective-C libraries.

As a project maintainer, am interested in learning what Cocoa# and Mono are missing for developers on the OSX platform.

I know that OSX developers in the past have asked for Mono integration into X-Code, this is an area where collaboration between Apple and Mono would be useful. Alternatively there is the X-Develop IDE by OmniCore and eventually when the next version of Gtk+ ships with Quartz support we will likely ship MonoDevelop for OSX as well.

Tapping Existing Developers

Another advantage of Mono and the CLI is that it becomes easy for existing developers that have been targeting .NET to target new platforms.

This is just a pragmatic point. Developers can reuse a large body of their expertise, their books, their documentation, their connections to bring their software to Unix. Some things might have to change to work effectively on Unix, but porting an application from Windows to Unix is no longer a multi-month or multi-year project.

Porting an application from .NET to Mono is similar to porting a Unix application from SystemV to BSD: there are a few differences, but they make up only a tiny fraction of the application.

On Languages

The CLI was designed so it could host efficiently any programming languages in use today, but it also contains a strong interoperability layer. I already mentioned P/Invoke which Mono supports, but the framework is complete enough that it is possible to also integrate other object systems easily into the system. Today we have done this with Gtk's GObjects and some volunteers are working into adding COM support to Mono.

The languages story is a powerful one.

The CLI defines a set of language interoperability requirements which every language should adhere to (these guidelines are called the "Common Language Specification"). By following these guidelines once an API is developed in any of the CLI languages the API becomes available to every other language.

Apple has struggled in the past in maintaining two code bases: one for Objective-C programmers to develop GUI applications and another one in Java.

It is understandable that they do not want to support every single one of their APIs for every programming language out there; otherwise their own development would slow down, it is just not possible to do so.

This is where I think the CLI adds tremendous value. Today developers only have to "bind" the API once and it becomes available to all the languages in the CLI ecosystem.

Consider Geoff's effort to bind Cocoa. The Cocoa bindings that Geoff has hand-written are now available to all of the programming languages that target the CLI. Apple developers can use this API and any of the other CLI APIs developed by .NET and Mono developers on their applications with their favorite programming language: Boo, Nemerle, C#, JavaScript, Java and more.


There are a number of ways in which a language can participate in the CLI ecosystem. The most common one is to have the compiler translate the source language into CLI byte codes. This requires the creation of a compiler that targets the CLI.

Examples of some open source compilers in this group include: C#, Python (with the IronPython compiler), Java (with the IKVM compiler), Nemerle and Boo. In addition to this there are several commercial compilers available: Fujitsu's Cobol compiler, ISE's Eiffel, RemObjects, Microsoft's own Managed C/C++ and many more.

In some cases it is easier to write a "bridge" than to write a new compiler. This reuses an existing implementation and merely bridges the calls between the existing language and the CLI universe.

Bridges have been developed for Python (yes, this is a parallel approach), Perl, Ruby and OpenOffice's UNO (this is how we are able to script OpenOffice using Mono). There are more, but I do not keep track of these.

In addition Mono provides an embedding interface which allows developers to embed the virtual machine into an existing application. OpenOffice Mono integration (available in OpenSUSE 10), the game Second Life and the Unity game engine all use this embedding interface.


As I mentioned before, I do not believe that Mono is an ideal solution for every kind of application; Like every other framework Mono also has its own limitations and features missing; Its up to every developer to make this choice. But we believe we got a very solid mix.

One Mono's goals is to work-well-with-others. Working with ISVs to ensure that their software runs with Mono and Unix is one of the things we take pride in doing. We always welcome new collaborations on the Mono universe.

Update: Erik also comments.

Posted on 28 Dec 2005

Early Christmas Presents

by Miguel de Icaza

JB Evain announced Cecil 0.2 the CIL image manipulation library.

Thomas from Fluendo announced that they have licensed the MP3 decoding for use with their LGPL libraries. Details are also here. There are a number of licensing caveats, you should check them out.

Banshee, our new media player, was licensed under the MIT X11 terms explicitly to avoid these issues (Banshee as shipped in Novell's Linux editions uses the RealPlayer framework for its playback).

Posted on 24 Dec 2005

Funny Quote

by Miguel de Icaza

On the ongoing debate over spying, Molli Ivins writes:

Here is a curious fact about the government of this country spying on its citizens: It always goes wrong immediately. For some reason, it's not as though we start with people anyone would regard as suspicious and then somehow slip gradually into spying on the Girl Scouts. We get it wrong from the beginning every time. Never seem to be able to distinguish between a terrorist and a vegetarian.

And then am sure it will be used against the political enemies. On an ironic twist, she continues:

Bush defended his actions Monday by saying it was part of "connecting the dots." A painful moment, since the 9/11 Commission just finished giving this administration grades of D and F in terms of preventing another terrorist attack --- and it has jack-all to do with wiretapping. This administration has cried wolf so many times using the national security excuse it has lost all credibility.

Posted on 22 Dec 2005

Porto Alegre Talk

by Miguel de Icaza

Update: My talk today in Porto Alegre will be at:

Auditório do Serpro:
Av. Augusto de Carvalho 1133 / 4º andar
Porto Alegre RS
Time: 18:30

Posted on 22 Dec 2005

Building a Rationale for a Dictatorship

by Miguel de Icaza

Nat pointed me to Bruce Schneier weights in on the new administration self-appointed rights:

This is indefinite dictatorial power. And I don't use that term lightly; the very definition of a dictatorship is a system that puts a ruler above the law. In the weeks after 9/11, while America and the world were grieving, Bush built a legal rationale for a dictatorship. Then he immediately started using it to avoid the law.

This is, fundamentally, why this issue crossed political lines in Congress. If the president can ignore laws regulating surveillance and wiretapping, why is Congress bothering to debate reauthorizing certain provisions of the Patriot Act? Any debate over laws is predicated on the belief that the executive branch will follow the law.

This is not a partisan issue between Democrats and Republicans; it's a president unilaterally overriding the Fourth Amendment, Congress and the Supreme Court. Unchecked presidential power has nothing to do with how much you either love or hate George W. Bush. You have to imagine this power in the hands of the person you most don't want to see as president, whether it be Dick Cheney or Hillary Rodham Clinton, Michael Moore or Ann Coulter.

Bruce has a blog with more data on the subject.

Posted on 21 Dec 2005

Wednesday Links

by Miguel de Icaza

The Jesus General has a funny graphic, reminds me of Jack London's Iron Heel.

The Release of Mrs. Anthrax: So it turns out that the story on Mrs Anthrax was not what the occupation forces told us. Shocking. At the time of detention there was an article that raised the same questions.

The P.U.-Litzer Awards awarded to the foulest media performance in 2005. Funny.

Here I am George, Come and Get me: A Christian peace activist has a few words for the emperor. This is obvious, but I have been thinking about it: isn't it funny that those pitching the sanctity of Christmas are none other than the war-mongering Fox? Am I missing something?

Editorials on the new emperor powers that George has vested himself with: Bush Must be Held Accountable; on his attempts to stop publishing the news and keep it a secret; Republican Jesus weights in; Jesus General open letter: Defending our Values Brutally; Bush as Nixon; Fafblog's There is no War in Warrant.

ElBaradei's Nobel lecture transcript is now online.

Jamie has a bunch of great articles on his "Today in Treason News". Pay special attention to why impeaching Bush is a bad idea.

Posted on 21 Dec 2005

Robert Fisk on Iraq

by Miguel de Icaza

More on the fascinating chapter on Iraq, which gets better every page. The following quote appears after Robert describes the torture practices employed by the Saddam Hussein government and the routine elimination of his critics. He describes how various states preferred to ignore Iraq's human rights record and continued to supply weapons and funding:

Throughout the early years of Saddam's rule, there were journalists who told the truth about his regime while governments -- for financial, trade and economic reasons-- preferred to remain largely silent. Yet those of us who opposed the Anglo-American invasion of Iraq in 2003 were quickly accused of being Saddam's "spokesmen" or, in my case, "supporting the maintenance of Baathist regime"-- this from, of all people, Richard Perle, one of the prime instigators of the whole disastrous war, whose friend Donald Rumsfeld was befriending Saddam in 1983. Two years after Rumsfeld's initial approach to the Iraqi leader -- followed up within months by a meeting with Tariq Aziz -- I was reporting on Saddam's gang-rape and torture in Iraqi prisons. On 31 July 1985, Wahbi al-Qaraghuli, the Iraqi ambassador in London, complained to William Rees-Mogg, the Times editor that:
Robert Fisk's extremely one-sided article ignores the tremendous advances made by Iraq in the fields of social welfare, education, agricultural development, urban improvement and women's suffrage; and he claims without presenting any evidence to support such an accusation, that "Saddam himself imposes a truly terroristic regime on his own people." Especially outrageous is the statement that: "Suspected critics of the regime have been imprisoned at Abu Ghoraib [sic] jail and forced to watch their wives being gang-raped by Saddam's security men. Some prisoners have had to witness their children being tortured in front of them". It is utterly reprehensible that some journalists are quite prepared, without any supporting corroboration, to repeat wild, unfounded allegations about countries such as Iraq...

I picked this quote because it resembles what people always say about Robert Fisk on his coverage. The amateur psychologist in me knows that this is because Robert's reporting causes cognitive dissonance problems to some people.

Anyways, back to read, I just wanted to share this with those who are still reading. This book is fascinating.

Posted on 21 Dec 2005

« Newer entries | Older entries »