Seven Cool Mono Apps

by Edd Dumbill, coauthor of Mono: A Developer's Notebook

The Mono development environment allows programmers to be more productive than they would be with conventional C programming. The C# language and the Mono APIs together provide a great platform to build applications on.

Because of this ease of development, there are many cool open source programs being built on Mono, even though Mono 1.0 has only been released for a short time. This article provides a tour through some of these programs, along with details about how you can start experimenting with them yourself. Not all of the programs featured here are finished products, but they're all exciting and show off interesting aspects of Mono.

Taking Notes with Tomboy

Wikis are a proven way to write and arrange notes, but they're inconvenient when on a web server. Tomboy is a wiki-like rapid note-taking application that runs on the desktop. Tomboy makes it easy to format and write text and to link notes in the same way a wiki does. An icon on the GNOME panel performs the function of a "recent changes" list, and there's an easy-to-use search feature too.

If you've been put off by the clutter of desktop post-it note applications before, or found yourself too restricted by outlining applications, then Tomboy might just be the thing for you. Hunting around for the icon with the mouse can be inconvenient, so Tomboy lets you map global hotkeys. Creating or searching notes is only one keypress away.

Although it's a very new application, Tomboy has a lot of polish and attention to user interface detail. Good use of drag and drop means you can drop URLs or files into a note, or drag the title from one note to another to make a link. There are plans for closer integration with the Evolution email and PIM client, instant messaging, and music playing.

Related Reading

Mono: A Developer's Notebook
By Edd Dumbill, Niel Bornstein

Recent notes menu

Editing notes

Tomboy facts

Author: Alex Graveley
Download: Tomboy home page
Development: open source, in GNOME CVS. Mailing list

BLAM! There Goes Your RSS

Everyone needs an RSS newsreader these days, and BLAM! is the first one written for the GNOME desktop that uses Mono. BLAM! gets right to the point, as its name suggests. It has no wild frills; it's just a simple and usable feedreader.

If you're interested in tinkering with how a simple, yet non-trivial, Mono application works, then BLAM! is a good starting point. It was also a good starting point for Mikael Hallendal, BLAM!'s author. I asked him about using Mono and what advantages it brought him:

Compared to C, a lot. The greatest, of course, managed memory and garbage collection. Mono, like other languages with built-in object support, also makes it a lot easier to write classes, and you don't have to take a decision each time if it's worth doing the right thing.

Having written quite a lot of code in Java before coming to GNOME, the most obvious benefit of Mono compared to Java is signals. Another great thing with Mono is the ease of calling C code and integrate with already written code.

Reading news in BLAM!

BLAM! facts

Author: Mikael Hallendal
Download: Imendio's web site
Development: open source, in GNOME CVS.

Music with Muine

Jorn Baayen, Muine's author, is making writing music players somewhat of a serial occupation. Muine is his third player and eschews the iTunes-like nature of Rhythmbox, his previous creation, in favor of a playlist-oriented interface.

Muine is simple to use and looks gorgeous. It uses a smart matching algorithm to retrieve CD cover art from Amazon, showing off Mono's web services APIs.

Because decoding audio itself isn't a simple process, there aren't any all-Mono ways of doing this yet. Instead, Muine uses the "p-invoke" facility of Mono to hook into the C-based multimedia library libxine. Calling C code from Mono doesn't require any supplemental C coding, unlike most other languages such as Perl or Python.

Choosing an album

Music playing

Muine facts

Author: Jorn Baayen
Download: Muine home page
Development: open source, in GNOME CVS. Mailing list

F-Spot for Photos

One of the things that Linux lacks is a convenient photo management program, and F-Spot looks set to fill this gap. Its development is sponsored by the Ximian division of Novell, which now has a full-time developer working on it.

F-Spot imports all your photos into a single repository. The categorisation into collections can then be done by tagging the photographs, or you can simply use the date slider to select them by date. Tags are indicated by small icons that appear on the thumbnails. There's a handy export function that can save a collection of pictures to the popular Gallery web application.

While maintaining an easy-to-use interface, F-Spot plans to support basic image editing operations, as well as printing and slideshows. There's a very handy preview popup that can be summoned when you mouse-over a thumbnail, saving you having to open a full image to get a better idea of what it contains.

Main window

Captioning an image

Pop-up preview

F-Spot facts

Author:Larry Ewing, Ettore Perazzoli
Download: F-Spot homepage
Development: open source, in GNOME CVS. Mailing list

Instant Collaboration with iFolder 3

The third version of iFolder brings an existing Novell product cross-platform by using Mono. iFolder is a simple solution to sharing files and folders. It works in either a simple peer-to-peer fashion or by using Novell's groupware server products. Although Novell are developing the iFolder client specifically to support their server product, they have open-sourced it and include a way of using it that doesn't require the server software.

The iFolder 3 client is currently under quite aggressive development, heading for a finished release at the end of this year to accompany Novell's server product. To share a folder, you simply nominate a folder on your computer as an iFolder, then send invitations to other people to access it. Once they've "subscribed" to your iFolder, a copy apears on their machine and is automatically kept in sync with the original.

As long as the two computers can talk to each other, iFolder can keep the folders synchronized. For working over the Internet, this may involve some firewall tweaking, but it works like a charm on a shared local network. Novell will soon be adding Rendezvous capabilities to iFolder, so you will be automatically able to find shareable folders in your network locality.

Status icon

List of iFolders

Sharing an iFolder

iFolder facts

Author: Novell, Inc.
Download: Novell Forge: iFolder project
Development: Novell-directed, open source client. Mailing lists

Easy Development with MonoDevelop

MonoDevelop is an integrated development environment for creating Mono applications. It is in itself a good illustration of the value of Mono's compatibility with Microsoft's .NET platform. MonoDevelop is created as a port of the popular SharpDevelop IDE for Windows. It uses the underlying logical layers from SharpDevelop and adds a new user interface in Gtk#, so it looks good and works well on Linux systems.

Pretty much everything you want from an IDE is in MonoDevelop: project organisation, online API documentation, syntax coloring, "intellisense"-like completion. MonoDevelop also aims at supporting every language that Mono does, including Java, which can be used with Mono via IKVM.

One of the nice features of MonoDevelop is that it recognises the Unix way of building things and creates makefiles for its projects so that they can be built from the commandline as easily as from within the GUI.

MonoDevelop in action

MonoDevelop facts

Author: Todd Berman and the SharpDevelop team
Development: open source. Mailing list

IronPython's New Frontiers

IronPython has grabbed the attention of the open source world since its release as open source in late July. It is an implementation of the popular Python language that runs on top of the Mono or Microsoft .NET runtimes. It fills an important gap in the palette of languages available for Mono, being a capable scripting language useful for rapid prototyping.

Jim Hugunin, the man behind the implementation of Python on the Java virtual machine, Jython, started IronPython to prove that the .NET runtime was not any good for dynamic languages such as Python. He ended up finding the opposite and has produced an interpreter that competes well with the C implementation.

Hugunin has now been hired by Microsoft to further his work on dynamic languages on .NET. He open-sourced IronPython before he joined Microsoft, however, and is committed to releasing a completed 1.0 version of the software. IronPython right now is in a state where interested users can tinker, but it's not solid enough for everyday use.

IronPython in interactive mode

IronPython facts

Author: Jim Hugunin
Development: open source. Mailing list

Edd Dumbill is co-chair of the O'Reilly Open Source Convention. He is also chair of the XTech web technology conference. Edd conceived and developed Expectnation, a hosted service for organizing and producing conferences. Edd has also been Managing Editor for, a Debian developer, and GNOME contributor. He writes a blog called Behind the Times.

Return to the O'Reilly Network