Planet GNOME Introduction

Like Paul, I would also like to thank Jeff, Lucas, and Vincent for adding my blog to Planet GNOME.

I, too, have been a long time GNOME user. Until a month or so ago, I had been working at on various open-source projects including Mono. Before that, I was a Medsphere employee working on their Gtk# medical application. Recently, I quit my job at MySpace to spend as much of the summer as I can writing free software from my apartment on the beach the Santa Monica, California.

While I'm not going to mention in much detail the projects I'm prototyping over the summer (I prefer to show code, not talk) readers may be interested in the following.


Iris is a toolkit to help programmers write applications that take advantage of concurrency on multi-core platforms. Users of python-twisted will feel at home with IrisTask. It provides much of the same callback/errback concepts. Users of of Apple's NSOperation will find it comfortable as it provides object inheritance as an option. And finally, users of CRR will enjoy powerful message passing in which upon it is all built.

It includes a sprinkling of lock-free data-structures and a work-stealing scheduler that is roughly 8x faster than GThreadPool in my test-cases performed on quad-core and dual quad-core machines. Bindings are in the works for JavaScript, Python, Vala, and Mono. One of my goals is to have fully asynchronous applications that cross the language vm barrier.


Ethos is a LGPL-2 library for adding plug-ins to your application. It is modeled similar to the plug-in infrastructure of GEdit since they have had incredible success at converting users into application extenders.

Ethos has two main purposes. First, it should simplify the effort required to have plug-ins in an application. But more importantly, it should give a consistent way to add plug-ins for any application using it. If we can leverage the application scripters for one application for much more of the desktop, I think we can see applications get new features faster. Ethos includes bindings for JavaScript, Python, and Vala. Mono bindings are almost complete.

There is an additional library, ethos-ui, which provides a re-usable GtkWidget for managing plug-ins during runtime.


Marina is a RSS and Syndication reader I started writing a while back when the Liferea authors mentioned wanting to do a rewrite. Unfortunately, I had gotten so busy with work and other projects that I had to put it on hold for a little while. I just started updating it to use Iris and Ethos so I have a practical test application.

Storage for marina is currently done in BerkeleyDb for better or worse. The positive is that we can use DB_RECNO keys in the b-tree resulting in row-offset to record lookups. It uses my BdbListStore which includes a LRU for fast access when attached to a GtkTreeView. This turns out useful as it allows the consumer to dial memory consumption vs. speed.

So those are my primary projects, feel free to look around my blog. There are plenty of posts on writing custom gtk+ widgets and what not. I'm on github here and you can follow me on twitter here.

-- Christian Hergert 2009-05-29

Back to Index