2012-07-04

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 !

2011-09-22

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.

2011-07-31

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 !

2011-04-27

A new Banshee bundle of joy

The release of Banshee 2.0 is already a few weeks behind us, so after a non-negligible delay I'm happy to announce the availability of the Banshee 2.0 bundle for Linux :
Download the file corresponding to your system, uncompress it and run it !
Those files are now compressed with bzip2, so use "tar xjf ..." if you're the command-line type.
You might notice that the files are now hosted on ftp.gnome.org, making this thing look much more serious (and DropBox doesn't seem to be popular these days...).

But that's not the only thing that changed, I've improved several aspects of the bundle :
  • GStreamer integration
    We now use the system-installed GStreamer plugins, from the usual locations (/usr/lib/gstreamer-0.10 and /usr/local/lib/gstreamer-0.10). That's why there is now a 64 bit version of the bundle : a 32 bit bundle would run fine on a 64 bit system, but won't be able to load the 64 bit plugin binaries. This means that you should now be able to listen all your music, as long as the proper codecs are available on your system.
  • Theming
    We also try to use the current GTK theme, if there's one available. If there isn't, we use the theme included in the bundle. You can tell the bundle to ignore the current theme by passing the --use-bundled-theme parameter when starting the bundle. We currently only support themes that use the Murrine or Clearlooks engines. If your favorite theme requires another engine, just drop me a line and I'll try to add it.
  • Font handling should be better, as the default configuration files for fontconfig are now included.
  • Navigating to the HTTPS pages on the Amazon store should work, thanks to having the right gio module in the bundle.
  • Various packages have been updated to their latest stable versions, including taglib-sharp, sqlite and libsoup.
  • And of course there's all the goodness that is Banshee 2.0 !
A small gotcha to keep in mind : if you have ever run a previous version of the bundle on your 64 bit system, you'll have to delete the following file : ~/.config-glick/banshee-1/gstreamer-registry.bin
All the changes for the bockbuild build/bundling system are available on my GitHub branch, and maybe soon on the main repository, and you can read more about the way the bundle is built in my previous post.

So go ahead, try it ! You won't break your system !
But if it doesn't work, please file bugs in Bugzilla. Just make sure to mention you're using the Linux bundle, indicate which distro you're using and include any log output.

Update : Modified last paragraph to direct bug reports to Bugzilla.

2011-03-07

Banshee Bundle on Linux : One file to run on them all

As you might know, Banshee is available for Mac OS X, as a single file, which is a self-contained bundle of the Banshee binaries, along with all the dependencies. You just have to download it somewhere on your system, and run it.
Back in late 2009, when working on the tools to create this OS X bundle, Aaron already had the idea to create a similar thing for Linux, calling it "an interesting hack".
I'm happy to report that it was indeed an interesting hack, and you can enjoy the result by clicking on this link : banshee-1.9.4.run.tgz (49 MB)
Download the file, uncompress it with your favorite tool and you'll get a banshee-1.9.4.run executable. Just run it !



What do I get in that big file ?

The bundle contains almost everything you need to run Banshee, except maybe an operating system : GLib 2.28.1, GTK+ 2.24.1, SQLite 3.7.5, WebKit 1.2.5, GStreamer 0.10.32, Mono 2.10.1, GTK# 2.12, etc. What is missing though are MP3 codecs, but you should be able to play ogg file and other formats.
So you should be able to run that file on pretty much any Linux system, provided it has an X server and supports fuse (more on that later).

How does it work ?

This bundle is built using two great tools :
  • Bockbuild by Aaron, which is a light-weight build/packaging/bundling system for OS X, Linux, and Windows and is used to produce the Banshee OS X bundle.
  • Glick by Alexander Larsson, which is set of tools to easily create application bundles, using a nice trick with /proc/self and file descriptors.
So that big file is just a regular 32-bit i386 ELF executable, with a small bootstrap code and an ext2 filesystem image in one of its data section. When you launch that executable, the bootstrap code will mount the filesystem image in a temporary directory and do it's trick so that /proc/self/fd/1023 point to the root of that filesystem. It will then run the "start" script that sets up a nice environement and launches Banshee from that filesystem.

I've tried to do everything so that there's no interference with any thing on the system, in particular with an existing Banshee installation : configuration files are stored under $HOME/.config-glick/ and Banshee uses its XML configuration backend instead of the usual GConf. But of course standard disclaimers apply !

I had to modify and slightly extend both Bockbuild and Glick, so you will find my changes in the following branches on GitHub :
That last branch also contains a README.linux-bundle file with what I hope are clear instructions on how to create a bundle with these tools.

Why ?

The idea here is not to replace the packages you get through your Linux distribution (we love our packagers !), but to cover the use cases that aren't covered yet :
  • Allow users to quickly and easily try out a new version of Banshee, without having to wait for the packages to be available for their distro.
  • Provide an easy to test experimental features, instead of asking people to compile from a git branch.
  • Run Banshee with the latest versions of its dependencies, without any risk of compromising system stability.
  • Provide a custom UI theme (aka skin), using GTK theming.
  • [Insert your idea here]

What's next ?

There are a few things missing and some things that could probably be improved :
  • The bundle doesn't contain any hardware backends, so you won't be able to see your media player in Banshee. It should be possible to make that work by adding the missing build dependency, and let everything work its magic at runtime.
  • Although the bundle contains Mono 2.10.1, the new SGen garbage collector is not enabled yet. I just wanted to play it extra-safe for now.
  • I've seen some weirdness with fonts on some systems, maybe we could just add a nice font in the bundle.
It would be really great if somebody with artistic talent could come up with a nice and elegant UI theme for Banshee. Right now the bundle contains the Shiki-Brave GTK theme, but I'd be happy to add others to the mix !
I'm also looking forward to hear about your experiences running Banshee from this bundle, good or bad. Bonus points for running on the craziest Linux systems out there !