.NET + GNOME Hackfest 2013 roundup

I'm now back home from Vienna after the .NET + GNOME Hackfest 2013. It was an intense week, full of hard work, and lots of fun.

Our day usually started around breakfast at the hotel, and then, our little group would head to the hackfest room in the Institute for Theoretical Chemistry at Vienna University. As it was conveniently situated just across the street from the hotel, everybody was in front of their laptop in a few minutes, hacking away. For lunch, we'd wolf down some sandwiches, and go back to work for the afternoon, fueled by coffee, sodas and Club-Mate. We'd go to a local restaurant for dinner, and then come back to the hackfest room for the third part of the day. Around midnight, Stefan, our host, would have to kick us out so that he could close up the venue and catch the last train to his apartment.

I'm not going to list everything that was accomplished during those 6 days, because this would turn this post into a novel. I will just refer you to the detailed posts written by David Nielsen, our friendly organizer, and mention a few highlights:

  • Day 1: first development release of Banshee using GTK#3, initial port of SparkleShare to GTK#3 with some features disabled.
  • Day 2: initial port of Pinta, functional WebKitGtk and GStreamer 1.0 C# bindings, along with the creation of a tool to help port from Stetic to GtkBuilder
  • Day 3: new GTK#3 application template for MonoDevelop, SparkleShare fully working on GNOME 3.
  • Day 4: significant progress in porting F-Spot to GTK#3, Mono.Addins for GTK#3 available, and design work for Tomboy.
  • Day 5 : Banshee plays music using GStreamer# 1.0, lots of progress on Tomboy for OSX and on Rainy (sync server for Tomboy), various improvements to the GTK#3 bindings.
  • Day 6: Tomboy completely ported to GNOME 3 technology, new beta release of Tomboy for Android.

The report for the last day is not available yet, as David is on his way home.

While porting these various applications to GTK+ 3.x, we have tried to keep notes of the various lessons learned on a wiki page, but we've probably forgotten some in the heat of the moment. Everybody porting a C# application to GNOME 3 technology is encouraged to update this page and share their experience.

A big thanks to our sponsors that made this very productive hackfest possible:

Collabora Ltd, Open Source Consulting
Norkart AS, Norway's premier supplier of Geographic Information Systems and related consulting
Hotel Schottenpoint, our hotel partner
Novacoast IT, Professional Services and Product Development
The GNOME Foundation, providers of the GNOME desktop
The University of Vienna and the Institute for Theoretical Chemistry, our venue sponsors


Two to Three waltzing in Vienna

Two weeks ago, we released Gtk# 2.99.1, the second beta release of C# bindings for GTK+ 3.x. The first beta release was almost a year ago, so there's quite a lot of new features, enhancements, and bug fixes. There's also a significant amount of API changes since 2.99.0, with two types of motivations:

  • Provide better typing, in particular for lists. For example, the Group property in Gtk.RadioButton is now a RadioButton[] array, instead of a non-descript GLib.List.
  • Get closer to .NET idioms and conventions, like adding an I* to all interfaces.

You can read more about all these improvements in the release notes.

A big motivation to get that release out the door was the .NET + GNOME Hackfest, which we kicked off today in Vienna. Of the dozen of hackers present, a lot of them are working on porting C# apps to GTK+ 3.x: SparkleShare, Tomboy, Pinta, Smuxi, etc.

Of course, we couldn't let them get ahead of Banshee, so Andrés and me took the opportunity to release today Banshee 2.9.0. It is the first release using GTK+ 3.x, and depends on Gtk# 2.99.1. As such, it is a development release, and it has a few known issues, in particular some visual glitches. But it has come a long way since we started the porting effort, and I'm looking forward to the benefits we will get from using a more modern toolkit.

I'm happy to be able to attend this hackfest, so I'm grateful to our sponsors that made this possible:

Collabora Ltd, Open Source Consulting

Norkart AS, Norway's premier supplier of Geographic Information Systems and related consulting

Hotel Schottenpoint, our hotel partner

Novacoast IT, Professional Services and Product Development

The GNOME Foundation, providers of the GNOME desktop

The University of Vienna and the Institute for Theoretical Chemistry, our venue sponsors


Hackfest in the USA

I'm now in New York, trying to catch my breath after an intense week in Boston. I was happy to attend the aptly named "GNOME & Mono Festival of Love 2012" hackfest.

It was really nice to see some of the usual suspects, especially the Xamarin gang, and it was great to meet some new people. At long last, I was able to finally meet Alexander who has been co-maintaining Banshee with us in the past years.

All other attendees were quite busy, and I was able to get some stuff done, although not as much as I had hoped.

After looking a few Banshee bugs and merging a patch from our GSoC student Timo I then moved to GTK# 3, trying to process some parts of the code marked as FIXME. When I ran the gtk3 branch of Banshee, I then saw that something was horribly wrong: the track, album and artist lists were completely blank. After quite some time spent investigating this, it turns out this is a regression in GTK+ 3.4. You can see the bug I filed about this issue. If anyone wants to help and are more familiar with C than me, converting my test case to C would probably be helpful. Fixing the bug would be even better.

In the meantime, Andreia was making great progress on using the information provided by GObject introspection (GIR files) to generate C# bindings. While I was recompiling gtk+ again and again, we were able to discuss our general strategy, together with Alan McGovern. The idea is to keep the current approach for the gtk-sharp package (which includes glib, gdk, cairo, pango, gio, atk and gtk) as we're quite close to a preliminary 2.99 release. Andreia's work will be used at first for libraries which don't have any bindings yet. In the future, we'll probably switch gtk-sharp to use the GIR files, preserving API compatibility.

On the last day, I looked into using the GStreamer SDK with Banshee. My current plan is to use the native binaries provided by the SDK on Windows, to improve our current build process and hopefully provide a more reliable Banshee on Windows.

Getting stuff done is great, but I think what I love the most about hackfests is all the opportunities to help each other. I'm happy I was able to help Jared with some data structure issue with his Tomboy OSX port, answer various questions from our Google Summer of Code students, assist Stephen with build issues with F-Spot, and even fix a grammar mistake in a commit message written by an American...

And of course, I'd like to thank everyone who help me during this week !

I would also like to thank David for organizing this hackfest. If you want more details on what happened during the week, go read his posts.

And also, big thanks to to our sponsors !

For providing us with a great venue:

For sponsoring travel and board for attendees:

For providing us with goodies:

I really hope we'll be able to have other hackfests like that in the future !


Banshee 2.2, something for everyone

Yesterday we released Banshee 2.2. It's the result of six months of hard work by 35 developers, 38 translators and countless bug reporters, tester, packagers, and just nice people.

Of course it comes with new features and enhancements :
  • eMusic store
  • support for the Nook
  • ability to preload default radio stations
  • several new Android device supported
  • a new "Smiley Face Curve" default equalizer
  • Lots more ! And bug fixes !
Check out the release notes for more details.

I'm particularly happy about the ability to preload default radio stations. In the 0.x series, Banshee used to ship with a set of default radio stations, but those were a pain to maintain, so that was dropped during the refactoring that lead to 1.0. This was of course not ideal either, so a bug about that was lingering for quite some time.

Then Martin Pitt came up with an idea, along with a patch : when Banshee first starts, just read any XSPF files from DATADIR/stations/ (usually /usr/share/banshee/stations) and import their content as radio stations.

As Martin mentions, this allows distros or admins to provide the default stations they want just by installing one or more files, and those stations can be locale or region specific. I think this is a nice solution, but maybe it's just because we don't have to do anything... ;)

This release is available in lots of shapes and sizes, all accessible through our download page :
This release also marks the first anniversary of our most beloved feature, the Amazon store integration. During that year, over $9000 USD have been contributed directly to the GNOME Foundation. And we have learned that apparently most people don't buy music in August.

With a new Banshee release comes a new version of our Community Extensions. It brings two new extensions (AlbumArtWriter and DuplicateSongDetector), along with several enhancements and bugfixes to existing extensions (more details here). The project on gitorious now brings together 23 extensions, and 28 people are listed as committers.

In fact, this extension business is working so well that there are people who are (kind of) extending extensions : we now have new visualizations for the OpenVP visualizer, combining existing visualizations

The new "Spectrum Rain" visualization

Before you ask, although it looks different than what you might be used to, this is really Banshee. Just go to "Now Playing" and click "Simplify".

I'd like to thank everybody who made all of this possible, and who make Banshee such a fun project to be involved with. If you want to join us, to help out or to get some help, just head over to our website.


Ich bin ein Desktop Summit Berliner

Right after I finished my studies, I had the opportunity to live in Berlin for 16 months. I worked in the French embassy, as part of my civil national service, and I really enjoyed my time there.

That was more than 10 years ago, and I never had the chance to go back to this wonderful city. That's why I'm particularly happy with the location for the Desktop Summit this year. After all this time, I'm really looking forward to re-discovering the city, and getting the answers for the following questions :
  • Are parts of the Berlin Wall's death trip still visible, or have they all been conquered now by new buildings ?
  • Can you still see bullet impacts on the building of the Museum Island ?
  • Do people still make barbecues in the Tiergarten, right in front of Schloss Bellevue, the official residence of the President of Germany ?
  • Can you still find bars that are only open one day a week, located in a cave and only accessible through a building site ?
I should land in Berlin on the 4th August, and I'm staying until the 14th, so that should give me enough time for those inquiries and more. Of course, I'm also looking forward to the conference itself, and I'll be happy to see everyone there.

If I'm not too lazy, I'll set up an ad-hoc BoF about Banshee and our porting effort to GTK+ 3. Watch this space for updates !

Let's finish with a little bit of trivia : Kennedy said his famous "Ich bin ein Berliner" in a speech in front of the Rathaus Schöneberg, which was the temporary city hall of West Berlin, because the "proper" city hall was on the other side of the Wall.

See you there !