Mono 2.6 + MonoDevelop 2.2 on openSUSE 11.2

Fantastic news — Mono 2.6 and MonoDevelop 2.2 are out! Be sure to read the detailed Mono 2.6 release notes.

If you are running openSUSE 11.2, it’s quite simple to safely update your entire Mono stack and stay up to date with any 2.6 updates:

  • zypper ar -f -n Mono http://ftp.novell.com/pub/mono/download-stable/openSUSE_11.2 repo-mono
  • zypper mr -p 10 repo-mono
  • zypper refresh
  • zypper dup -r repo-mono

Those instructions will change the Mono distribution from openSUSE to the upstream Mono repositories.

I highly recommend installing MonoDevelop 2.2 (zypper in monodevelop), though if you already had it installed, the above will update you to the 2.2 release.

MonoDevelop 2.2 Integrated Debugger
Integrated Mono 2.6 soft debugger in MonoDevelop 2.2

A huge congratulations and thank you to the Mono team for another exceptional major Mono milestone!

UPDATE: apparently there is a problem on the x86_64 build in the openSUSE Build Service. This appears to be an OBS bug, but for this reason, it’s recommended that you use the repositories at http://ftp.novell.com/pub/mono/download-stable.

Exciting updates on the road to Banshee 2.0

At the Gran Canaria Desktop Summit last week I demoed my new work-in-progress Netbook-focused interface to Banshee called Cubano.

Cubano: Experimental new Banshee Interface

Cubano is designed with the Netbook in mind, but is certainly not limited to such a device. I prefer this clean and simple interface to the more traditional Banshee interface already, even on my desktop. Cubano is more about experiencing your music than managing it.

I am aiming to introduce visual metadata (photos, colors) and simple whitespace as UI elements to separate and emphasize content instead of the hard lines from traditional toolkit widgets.

However, even with a minimal interface you don’t lose any of the power to which you may be accustomed from the traditional Banshee interface.

Cubano: Experimental new Banshee Interface

I must stress that not all of the UI concepts here are solidified or indeed implemented. A few quick things to note about what will change in the very near future:

  • The painful source combo box will go away, don’t worry! It was just a widget that already existed in Banshee that I was able to easily reuse to connect the dots.
  • We’re working on a grid view for artists and albums.
  • I don’t care for the header either — it will receive much attention in due time.

Feel free to checkout Cubano’s source code, but you’ll also need clutter, clutter-gtk, and clutter-sharp from Clutter git master, and Banshee from GNOME git master. Bleeding edge!

Lastly, let me further stress that Cubano does not replace Banshee as we know it today. It only augments it. Cubano simply provides a different user experience on top of the existing Banshee platform.

Platform you say?

Trendy, I know. Banshee is in its third generation now. It’s been designed to be completely extensible, and major components are abstracted and organized in reusable ways.

As such we’ve fostered the development of many Mono/.NET libraries, most of which are not specific to Banshee and can easily be reused in other projects.

We essentially glue everything together with Mono.Addins, and build user interfaces on top of it all. What this means is the traditional user interface we’re used to in Banshee is an astonishingly small 875 lines of C# code.

Therefore, it’s conceivable, and even quite easy to think of Banshee as not just an application, but a platform for building new applications and user experiences. Ergo, Cubano.

A quick overview of the Banshee platform building blocks

For those interested in some of the wider details of the design and utility behind Banshee as platform, I recently had lovely a discussion on the topic with Scott Hanselman — Senior Program Manager in the Developer Division at Microsoft — for his podcast, Hanselminutes.

F-Spot

A major take-away from this platform discussion at GCDS last week is talk of re-basing the core of F-Spot — the wonderful photo management application — on top of Banshee itself.

The goal is simply to allow F-Spot to benefit from Banshee’s mature and maintained core, which provides many of the underpinning necessities in F-Spot, and allow the F-Spot developers to focus on the more interesting task of organizing and manipulating Photos.

While nothing is set in stone, I have a simple proposal:

  1. Re-base F-Spot’s non-UI core on Banshee’s non-UI core.
  2. Implement basic photo importing, tagging, and viewing as a Banshee extension (an optional feature). This would mean showing photos in Banshee like we do for videos.
  3. With Banshee/Cubano supporting basic photo management, grow the F-Spot user interface and experience to be more like that of professional tools such as Adobe Lightroom — an experience missing today on the Linux desktop.

GCDS Slides

The talk I gave at GCDS covered the above and a bit more. The slides are available here, but may be a bit terse if you weren’t in the audience. I’m not sure if my talk was recorded or not.

Nevertheless, for your perusal:

Slides from GCDS 2009 talk

Cross Platform thoughts through the lense of Banshee

Banshee running on OS X 10.5
Banshee 1.3.2 on Mac OS X 10.5

A huge amount of thanks goes to Eoin Hennessy for all of his efforts to bring Banshee to the Mac. Eoin singlehandedly fixed cross platform bugs in our core, worked out some kinks in the build, and implemented a Mac OS X platform backend to provide tight integration with the OS (i.e. the menu bar).

So how do I get it?

On Friday we will release Banshee 1.3.3, the last preview/developer release before we officially bless 1.4 as the new stable series in a couple of weeks.

As Miguel mentioned, we will be releasing for the Mac from here on. That means that along side our source code tarballs, RPMs for openSUSE, and packages published through other distributions, we will have a .dmg available to download.

If you are courageous, you can try to build Banshee on OS X today. However, our trunk does not yet run. Eoin has done all of his work in github, and while this branch runs, it’s slightly outdated, and does not use the new build environment I wrote this weekend.

Eoin is in the process of extracting patches that we will merge this week into trunk. These patches include the fixes to core, and the OS X integration.

Banshee running on OS X 10.5
More bling, before I ramble on about technical things and get teary-eyed and nostalgic

How does this cross platform stuff work?

Banshee is designed in a very modular way. We have a fairly small core, which is completely platform agnostic. It uses only ECMA/OSP .NET APIs and APIs of libraries which are themselves cross platform and open source (Mono.Addins, NDesk.DBus, Cairo, GTK, etc).

Additionally, all real features are designed as extensions: the Play Queue, video playback, the notification area, Last.FM, and so on. This means that we can easily pick and choose features by adding or removing assemblies from a package.

Finally, anything requiring a platform specific implementation is abstracted into an agnostic factory/interface, and implementations are loaded as extensions.

Cross platform frameworks give you the 90%, but it’s really the 10% that matters

It’s virtually impossible to write a cross platform application that does not suck if you just stick to what a single framework provides. By this I mean if we used only features in .NET or if a Java application used only features in the Java framework, the user experience would feel isolated and sandboxed.

  • In GNOME this means using GConf to store settings and working with DBus services like GNOME Settings Daemon. We interact with the screensaver, we support multimedia keys, integrate with Brasero for CD burning, and so on.

  • In the general UNIX world (Linux and BSD/OS X), we have a POSIX IO backend that performs much better than the System.IO .NET backend.

  • In Linux we have the HAL hardware backend (which I like to think of as HALAL, but don’t read too far into that).

  • On OS X we integrate with the dock and the system menu bar.

Okay, but what about Windows?

Ah, right. Windows. There’s one tiny little drawback to making a media player written in C# cross platform. Namely, we require GStreamer on all three platforms, and in turn we have a small library, libbanshee, written in C. Of course this pain is more than eased by the incredible power and functionality that GStreamer offers.

The truth is, I know next to nothing about Windows, and I find it incredibly frustrating to work in that environment. I am getting close however to getting a build of libbanshee on Windows. With this piece in place, we’ll be able to release on WIndows.

Currently the goal is that we’ll always distribute libbanshee as a binary on Windows, but the rest of Banshee can be built using “F5” in Visual Studio. This will be very interesting as it opens up Banshee to a whole new world of contributors.

Google Chrome has seen an incredible amount of contribution from external contributors simply because the source can be downloaded, opened with Visual Studio, and compiled. Users can tweak some code, and immediately see the results. This is where we want to be – Linux, Mac, and Windows.

The End Result

What is important with all of this cross platform work is simple: infiltrate the proprietary platforms, attract users and developers to free software, and grow the open source ecosystem. Ultimately, we’d like to think this will help Linux adoption. Applications are the key, not the platforms.

Banshee on Mac OS X is symbolic to me. It marks a period in our project where we step out of the realm of our comfortable and lovable GNOME community and into different communities, creating and bridging through the shared goal of open and free software. Users unite!

Finally, I’d again like to thank Eoin for his great efforts with our code, Imendio for their great work on GTK for OS X, the Mono team for the solid 2.0 release, and the GStreamer community for the best multimedia framework an application developer could ask for.

A few updates from the farm

Banshee Collection Indexer API

  • While Scott is working on all sorts of awesome, Gabriel and I are hard at work in mostly bug-fix mode to prepare for Banshee 1.4, to be released on November 10th.

    Tomorrow we will release Banshee 1.3.2, the third release in the development series leading up to 1.4.

  • Currently I am finishing up the new collection indexer API that allows other applications to index or monitor the Banshee library over DBus. Alex Launi is patiently acting as a guinea pig – implementing support in GNOME Do!

  • Check out the new Banshee Calendar that we’ll try to keep up to date and relevant, with new release information being added hopefully well in advance of actually making releases.

  • Mono 2.0 has finally been released – and the web site got a huge, long over due face lift!

  • And of course this weekend is the Boston GNOME summit! See you there!

Banshee 1.0 Released!

The Banshee logo

It is my immense pleasure to formally announce the release of Banshee 1.0. After nearly eight months of vigorous, non-stop work (since the last major Banshee release), it’s here – and we couldn’t be happier!

I’m not going to highlight much of the release in this post since we have written up some rather dashing release notes, full of pretty pictures and exciting detail.

Do yourself a service today, and try the release for yourself!

Install Banshee 1.0 – Binaries Ready Today

openSUSE Logo    Foresight Logo    Ubuntu Logo    Fedora Logo    Debian Logo    Mandriva Logo    Linux Logo

Release Highlights

I would however feel a little disappointed if I didn’t at least mention some of the awesomeness that Banshee 1.0 has in store, but really, you should read our release notes. We spent a lot of time on them!

  • Artist/Album browser
    Visually filter your collection with album art

  • Video playback and management
    Create video playlists, smart playlists, browse, search, and sort your video library — just like your music library

  • Powerful Podcasting
    Supporting video podcasts and stream content before or while you download — no waiting!

  • Rich Last.fm integration
    Create your own radio stations and discover new music

  • Play Queue Source
    You be the DJ

  • Lots of supported hardware
    MTP/PlaysForSure players, USB mass storage players, iPods, audio CD playback and ripping, CD burning

  • Performance improvements
    Better scalability, impressive speed, lower memory footprint

  • Compelling framework
    It’s easy to bring new features to life in Banshee through its powerful extension framework and rich APIs. In fact, most of the features in Banshee are extensions themselves. Drop into IRC and start hacking on your favorite feature today!

New Web Site — Finally

Gabriel and I have spent the last four days cranking out the new Banshee web site. We’ve still got tons of content to organize and migrate from the old wiki, but we think this new web site will become a strong asset to the Banshee Project in due time.

Why are you still reading this?

        Get It!

Digg It!

Dear Firefox 3 Lazy Web

I’ve been using Firefox 3 Beta 2 for weeks now, and it’s absolutely amazing. There’s not much else to say other than that. Just a few quick points, and then I have a gripe.

The Good

  • Memory consumption is so amazingly low compared to Firefox 2. I actually don’t find myself constantly killing my browser these days.

  • GNOME/GTK+ integration is finally up to par I think. Browser shell widgets look more native, web controls look native. Fantastic icon theme integration. Firefox finally feels like part of my desktop now. Kudos to all the great GNOME love. It’s about time!

  • The new location bar drop down is awesome.

  • There are subtle attempts of humor.

  • It’s been rock solid, more-so than Firefox 2 ever has been, barring the typical Adobe Flash freezes.

  • We have packages with proper distro-integration patches for openSUSE 10.3 (1click Install and yes, it will replace your Firefox 2. I live on the edge!)

The Gripe

I hate the new full page zoom! So many people rant and rave about how awesome this feature is. It’s horrible. It breaks usability and accessibility of web pages.

When reading a page in a properly designed web site (proper semantic markup and good CSS) in Firefox 2, text would re-flow properly when I zoomed. This allowed me to read a page with increased zoom without breaking the layout of the page, but also not causing it to scroll horizontally. In Firefox 3, everything zooms in, often causing me to have to scroll horizontally to read the page in question. Utterly bad.

The closest thing I’ve been able to do is set mousewheel.withcontrolkey.action to 3, causing text zoom to happen when I hold control and use the scroll wheel. The problem with this is that it’s hard to know how many levels you’ve zoomed (I have an insane scroll wheel with ball bearings… it’s very fast and sensitive) and there is no reset (like CTRL+0, traditionally). Also… I just like CTRL++, and CTRL+-.

Firefox 3 - about:config

So how can I completely disable the full page zoom and have my normal buttons behave like I’m used to?

This is the biggest downfall in Firefox 3, but on the whole, it’s awesome.