openSUSE 11.4 and Banshee: Amazon MP3

Great news! openSUSE 11.4 was just released, and it’s loaded with goodies! I am of course most excited about the inclusion of Banshee 1.9.3 with full Amazon MP3 store support included out of the box.

Banshee Amazon MP3 support in openSUSE 11.4
Within seconds after the 11.4 installation, I had made my first Amazon MP3 purchase.

In openSUSE, 100% (not 25%) of referral revenue generated by Banshee’s Amazon MP3 support goes directly to the GNOME Foundation. 100%. What are you waiting for? Install openSUSE 11.4 and start buying music – an easy way to help Free Software!

You can even help GNOME by shopping with Amazon through your usual browser. No excuses!

openSUSE 11.4 is out!

An Open Proposal to Canonical

Firstly, this post is a personal one. I am not speaking on behalf of the Banshee community, any corporation, foundation, or my maintainer peers.

Since Banshee will be shipped in the upcoming release of Ubuntu, Canonical has decided it will take 75% of the Amazon MP3 referral revenue that, in the upstream/default codebase and configuration of Banshee, has historically been donated to the GNOME Foundation, a nonprofit organization.

25% will continue to flow to the GNOME Foundation. Of course this change will only affect those running Banshee as distributed by Canonical/Ubuntu. Other builds and distributions are unaffected.

Given that this decision appears to be final, I propose to Canonical my vision of the execution of this revenue sharing from a technical and accounting perspective:

  • Let Banshee handle the revenue sharing on the banshee.fm server. Currently, when launching the Amazon MP3 store in Banshee, the user is redirected through a proxy on banshee.fm. This proxy does a few important things:
    • Use IP address geo-location to redirect users to the most appropriate Amazon MP3 store (e.g. amazon.fr, amazon.com, etc).
    • Inject the appropriate Amazon MP3 referral code depending on the store chosen (and in this new case, also depending on whether the user is coming from a Canonical build).
    • Act as a level of indirection in case changes are made on Amazon’s side – if something happens, we can update our server and users remain unaffected as software updates do not need to be pushed.
    • Finally send the user to Amazon MP3.
  • With revenue sharing happening through the existing proxy, we can ensure that funds to the GNOME Foundation are delivered through the existing referral codes, and in a timely manner. We will be able to continue to provide public disclosure of referral revenue for GNOME.

    I am very concerned about accountability, and want to ensure that 25% is indeed making it to GNOME in a timely manner, consistent with what we already have in place.

Additionally, as part of Canonical’s decision to donate 25% of Banshee’s Amazon MP3 referral revenue to GNOME, they have also stated that 25% of referral revenue from their own UbuntuOne Music Store and from referral revenue from their builds of Rhythmbox will also be donated to the GNOME Foundation. I applaud them in this choice, especially around U1MS, as this is their own service and investment.

However, as partly implied by the Ubuntu News article on the matter, one thing that does concern me is that while this issue was discussed between Canonical and the Banshee maintainers many times, I am not aware of Canonical involving anyone in the actual Ubuntu community. I will be interested to see how we end up handling this matter technically, and what, if anything, Canonical does regarding packaging, patching, and involving the existing Ubuntu packagers and contributors.

Finally, I am excited about the new potential Banshee has in the near future to generate truly significant referral revenue for the GNOME Foundation as we near Banshee 2.0 and its availability on Windows and Mac OS X, where we will fully control its distribution as an upstream.

Changing Roles

About 6 years ago I started working for Novell to develop Banshee into much of what it has become today. I’m quite fond its evolution, but perhaps more proud of its community. As is likely obvious, I have not been too technically involved with Banshee over the past year. The last major thing I developed to production was the Amazon MP3 store integration and downloader, which was over the summer of 2010 (and is currently bringing in a respectable amount of revenue to the GNOME foundation!); yet Banshee has kept on growing – at a fantastic and exciting rate. This is all thanks to the numerous people actively and passionately involved in the project.

Over the last two years I found my duties leaning much more towards the Linux distribution side of things at Novell – specifically engineering of SUSE MeeGo this year, and SUSE Moblin the year before. My hands were in pretty much every aspect of the projects, and I found myself working closely with so many great people, many with whom I had not previously worked. This includes talent from both Novell and Intel.

Out of the MeeGo project arose an opportunity for Banshee as well. Working closely with the team at Intel, it became the default and integrated media player not just for our SUSE version, but also for Intel’s reference version of MeeGo for netbooks.

Recently I found myself faced with an opportunity to work with a new set of talented people on something fresh. Today was my last day at Novell, and next week I will be starting at Rdio, where I expect to take Banshee into yet another new direction. I’m excited about the possibilities ahead, but will save my thoughts for another time.

I’ve been a happy Rdio user for quite some time, and have been very inspired by its fresh and unique take on a few aspects of media playback and management. And while there’s much I’d like to do in Banshee that Rdio is already doing, there’s perhaps even more I’d like to see Rdio doing that Banshee does. It will be an exciting time to come, and I’m eager to jump in.

I intend to continue to be involved in Banshee as an application and community. I am looking forward to again spending more time in the project. Similarly, you won’t find me leaving the GNOME and openSUSE communities I’ve grown quite fond of over the years. Apologies for that!

As I write this I am headed to FOSDEM, and I am very much looking forward to seeing so many great people again, and I look forward to the times in the future where we will continue to meet, preferably over copious amounts of beer!


Miguel calls this the new "abock lolcat."
The only problem is that it’s a dog! But this is fine with me…

Banshee, GNOME, & Amazon MP3

GNOME Love!The Banshee logo During Gabriel’s talk at GUADEC, after working with members of the GNOME Foundation board, we were very excited to announce that the Amazon MP3 Store in Banshee would begin using an Amazon Affiliate ID, and that 100% of all revenue generated through this affiliate ID will go to the GNOME Foundation!

This means that any time you purchase MP3s through Banshee’s integrated Amazon MP3 Store, you are helping the GNOME Foundation help others.

These funds can be used in a number of creative ways that ultimately better Free & Open Source software and its communities.

We look forward to the future around this initiative, and hope that your purchases will help with things like sponsoring participants at conferences, organizing hackfests, and so on.

So what are you waiting for? Go buy some music!

Announcing Banshee 1.7.3

The Banshee logo We’re very proud to announce the release of Banshee 1.7.3, which brings some much anticipated WebKit goodness: the Amazon MP3 Store and the Miro Podcast Directory integration. Amazon MP3 downloading is fully supported, separate from the integrated store itself. There are also a handful of other smaller new features and enhancements, and a good deal of bug fixing as well.

Download Now

Amazon MP3 Store

This new extension provides a source from which users can browse, search, preview, purchase, and download music from the Amazon MP3 store in all countries where it is offered: United States, United Kingdom, France, Germany, Austria, Switzerland, and Japan.

Amazon MP3 Store in Banshee
Watch the Banshee Amazon MP3 Store Screencast!

Music that is purchased through the new integrated Amazon MP3 store will automatically begin downloading and importing into the Banshee music library.

When previewing music on the Amazon MP3 store in Banshee, the previews will play through Banshee, showing up in the header, and not through Flash.

Amazon MP3 Downloader

The support for Amazon MP3 is not limited just to the store. If you decide to purchase music through your regular web browser, Amazon MP3 will provide a .amz file, a sort of playlist that indicates how the MP3s can be downloaded.

Banshee now associates itself with these .amz files and will download and import the MP3s referenced in them.

Banshee Amazon MP3 support

The Amazon MP3 Store and Downloader extensions are entirely separate. This allows you to pick your preferred user experience for purchasing music through Amazon MP3. The Amazon MP3 Store extension can be disabled if desired and the downloader will still work with an external web browser.

Other ways to download .amz files include opening manually with your operating system’s file manager, the Import Media dialog available through the Media → Import menu, or the command line client distributed with Banshee: $ bamz foo.amz. Bamz will download the .amz contents in the current directory, and will not import the MP3s into the Banshee library automatically.

For more information on the Amazon MP3 integration in Banshee 1.7.3, read my previous blog posts on the two separate extensions:

Miro Podcast Directory

Miro Guide Screenshot

Building on the same new WebKit integration in Banshee 1.7.3 as the Amazon MP3 Store, a new Miro Podcast Directory extension has been implemented. The source integrates with miroguide.com, allowing users to discover, stream, and subscribe to podcasts in a way never before possible in Banshee.

Much more work for tighter integration with the Miro Podcast Directory will come in future releases.

Bulk Metadata Fixup Extension

A new tool is available from the Tools → Fix Music Metadata menu item that allows for bulk metadata fixing. This feature proposes to merge artists and albums that vary only by case, & vs and, etc.

Other Enhancements

  • Visual separators were added in the source view between categories of sources: special (Now Playing, Play Queue), local media, and online services.
  • Item counts in the status bar are now culturally formatted (e.g. in en_US show 1,000 instead of 1000).
  • Improved downloading and visual refreshing of new cover art.
  • Visual tweaks to the grid view album artwork hover effect.
  • Developers:new Banshee.WebBrowser API for creating embedded WebKit web browsers and sources. Currently used by the new Amazon MP3 store, Miro Guide, and the Wikipedia context pane.
  • Developers:new Hyena.Downloader API for performing downloads and easy HTTP operations: HttpFileDownloader, HttpStringDownloader, etc.
  • Distributors:the webkit-sharp dependency was dropped, and instead we now take a dependency directly on libwebkit 1.2.2+ for the new Banshee.WebBrowser API.

Amazon MP3 Store in Banshee

The Banshee logo I’ve landed a new extension in Banshee — an integrated Amazon MP3 Store source. This source allows you to browse, search, preview, purchase, and download music from the Amazon MP3 web site.

Building on last week’s announcement of the Amazon MP3 downloader extension, the Amazon MP3 Store extension allows for tighter integration and a better user experience — music can be explored and purchased all from within Banshee.

Amazon MP3 Store in Banshee
Watch the Banshee Amazon MP3 Store Screencast!

I employ no gimmicks. The extension is very simple, just embedding a WebKit GTK web browser, and integrates with a few hooks:

  • Intercepts audio/x-mpegurl content, to stream previews. This provides natively integrated music previews that play in Banshee, not in the web page via Flash.

  • Intercepts audio/x-amzxml content, the playlist (or “download queue”) that Amazon provides after a purchase, and load through the Amazon MP3 downloader extension to immediately begin downloading the newly purchased music. This eliminates the need for Amazon’s external downloader. Everything happens from within Banshee.

  • Set a cookie ahead of time so that the Amazon MP3 web site is aware that a downloader is installed (Banshee), making the purchasing experience faster and less confusing.

  • Search the Amazon MP3 store from the usual Banshee search box.

  • Provide basic web-browser navigation controls: back, forward, refresh, home.

Amazon MP3 SourceAs simple and obvious as this approach may be, the reality is that this integrated experience was previously unseen on the Linux Desktop. This approach levels the music purchasing playing field — no extra software to install, no browsers, file managers, or mime systems to configure, and no more manually importing externally downloaded music. Just click, buy, and enjoy.

The code is all committed and available for immediate use in Banshee’s git master branch. It will be available in the next release for packaging: 1.7.3.

Remember, Amazon MP3 music is all DRM-free, and there is tons of free content on Amazon as well for you to try the extension out if you’re not up for purchasing more music just now.

Banshee on Linode

The Banshee logo I recently migrated all of the Banshee web server stuffs to a Linode 768. We were previously running on an incredibly slow, unreliable, and expensive dedicated co-lo machine that once hosted a number of Novell community projects. As part of the migration, go-oo (Novell’s edition of OpenOffice) has migrated to openSUSE infrastructure, and I’ve taken F-Spot with me to Linode.

The performance and reliability so far has skyrocketed, and the flexibility we now have is very welcome. The Banshee web site is powered by openSUSE 11.2, lighttpd, MySQL, and WordPress. The new Linode backup service is a huge relief, which we are using in addition to daily cron-based on-system backups. I’ve been a huge and loyal fan of Linode since 2005, and am happy to bring Banshee along!

I’m also excited to note that I’ve switched our “main” domain name to banshee.fm, a domain I’ve owned for Banshee for about a year but have done nothing with. A number of people seem to love the new domain name, much preferred to the old banshee-project.org. What do you think?

Linode - Linux Virtual Servers

If you are thinking of signing up for a Linode (and if not, you should be), you can help the Banshee Project out by signing up using our referral code: 5ea2a167caa5bec58b16800303350173e3dd094

Three cheers for Linode, and for better web performance for Banshee!

Amazon MP3 downloader support in Banshee

The Banshee logo I’m very excited to announce I have just landed support for downloading and importing your Amazon MP3 purchases into Banshee.

It is a simple extension that understands the download queue file that Amazon delivers after a purchase is made. Linux Desktop integration is provided so that your web and file browsers associate Banshee with the download queue file.

Banshee Amazon MP3 support

Further improvements are on the way, but I’ve downloaded many albums in Banshee at this point (and subsequently burned a decent amount of money!) Of course, there are a number of free downloads that Amazon offers, which were good for testing. Unfortunately, I didn’t think to look for these until I had finished the feature.

In addition to the integrated Banshee extension, there is a command line client called bamz. It requires Banshee to be installed for support libraries, but does not integrate with your Banshee library in case you are into that sort of thing. By default, bamz downloads the tracks into your current working directory with the following structure: $PWD/<Artist Name>/<Album Title>/NN. Track Title.mp3.

bamz command line client

I will be merging the Amazon MP3 support into the 1.6 stable series, and it is currently available in Banshee’s git master branch. Enjoy!

Banshee for MeeGo

Banshee for MeeGo After lots of intense work and collaboration, the Netbook profile for MeeGo 1.0 has been released today. As such, I am particularly pleased to announce in conjunction that Banshee is the default and integrated media player for MeeGo.

Currently, MeeGo 1.0 features the latest stable Banshee release: 1.6.1. As new Banshee versions are released, we’ll be providing updated packages for MeeGo.

The Media Panel

In MeeGo, most tasks are performed through panels that slide out from the top toolbar. This is how you can chat with friends, get lost in Twitter and other social network feeds, quickly browse and play your media, access the web, and launch and switch between applications and zones.

MeeGo Media Panel
Media Panel in MeeGo

In Banshee, the MeeGo integration extension provides a panel that integrates into the MeeGo toolbar. From the Banshee panel, you have quick access to your music and play queue sources. The new grid view introduced in Banshee 1.6 is quite prominent here as is the track list and now playing display.

When you’re just in music consumption mode, the panel is really all you need – quick access to entertainment.

A Richer Experience

While the MeeGo Media Panel is great, there will be many cases where a more traditional media player interface is desired. For this the more familiar and feature-full Banshee interface is a click away – it can be launched from the Myzone or Applications panel (it’s an out-of-the-box favorite), and of course, from the Media panel.

Launch the Banshee Media Player

The traditional Banshee interface will feel familiar, especially if you’ve used Banshee before, but there are a few customizations exclusive to MeeGo:

  • Optimized for smaller screens
  • No main menu – all actions are contextual or available through a quick-access menu at the top right of the toolbar
  • MeeGo look-and-feel
  • No status bar

Traditional Banshee Interface for MeeGo
Traditional Banshee Interface with MeeGo Customizations

From the traditional interface, you have all the power of Banshee at your disposal: Last.FM radio, video playback, podcasting, etc.

For Developers

All the code to build the MeeGo profile of Banshee is available in the regular Banshee git tree on both the master and stable-1.6 branches. There are no hidden repositories or forks. All the code has been developed as an extension to Banshee in our regular upstream tree.

There are two main MeeGo pieces:

As such, you can easily build Banshee for MeeGo (and you don’t even need to be running MeeGo). Assuming you’re already familiar with building Banshee from source, just pass the --enable-meego configure flag. For convenience, you can also use ./profile-configure meego to configure with a selection of other flags that best match how the Banshee packages for MeeGo are built.

You will also want to touch /etc/meego-release to trick your non-MeeGo system into taking some MeeGo specific code paths. This is quite handy for development.

When running the MeeGo extension to Banshee on a non-MeeGo system, the panel interface will simply appear as another window.

The Future

Banshee 1.6 for MeeGo 1.0 is just the beginning of the adventure in this space. We’ve got a lot planned for the next MeeGo release and certainly Banshee in general.

Foremost, there will be a continued focus on performance improvements and core/UI splits. Expect a bigger main interface overhaul as well in the near future.

With MeeGo 1.0 for Netbooks out in the open finally, expect to hear more exciting details around Banshee and MeeGo in general. Fun times are ahead!

Banshee + GNOME 3.0

The GNOME logo I spent a little time this weekend doing one of the things I’ve wanted to do for years – eradicate one of the oldest files in Banshee: banshee-dialogs.glade.

The vast majority of Banshee’s UI is custom widgetry that is laid out dynamically at runtime. The main window and the preferences dialog hasn’t been restricted by Glade for a couple of years, but all the other dialogs were defined in part in Glade:

  • Open Location
  • Seek To
  • Import Media
  • Smart Playlist Editor
  • Error list dialog (very unlikely anyone has ever seen this)
  • Last.FM Station Editor

These were all fairly simple dialogs in Glade — mostly consisting of a table, some static labels, and placeholders to pack in custom widgets at runtime (e.g. the import source combo box in the Import Media dialog, or the actual query builder UI packed in the Smart Playlist Editor dialog).

Old Banshee Glade Dialogs
Old Banshee Glade Dialogs

These are now fully defined in code, allowing the dialogs to derive directly from BansheeDialog, which provides extra common functionality for dialogs on top of Gtk.Dialog.

The big take-away here is no longer depending on the deprecated libglade/glade-sharp libraries (well, almost — later this week Gabriel will port Muinshee — an alternative Banshee client in the image of Muine, but not a core component). Additionally, I removed our dependency on libgnome/gnome-sharp, which is also deprecated.

This means that Banshee 1.5.4 will be GNOME 3.0 ready. The last thing to do is implement a udev hardware backend. We already have partial DeviceKit support, and GIO support. However, we don’t take a hard dependency on HAL. The removal of the last Glade file represents the eradication of any hard obsolete GNOME 2.0 dependencies. Exciting!

As a quick aside: what was really nice about the porting from Glade to C# was the use of C# 3.0 features – specifically type inference and object initializers. This permits interface construction using a more terse syntax than available in C# 2.0, yielding improved readability and organization. For instance:

    var table = new Table (2, 2, false) {
        RowSpacing = 12,
        ColumnSpacing = 6
    };

    table.Attach (new Label () {
            Text = Catalog.GetString ("Station _Type:"),
            UseUnderline = true,
            Xalign = 0.0f
        }, 0, 1, 0, 1, AttachOptions.Fill, AttachOptions.Shrink, 0, 0);

Bring it on, GNOME 3.0. We are ready!