Tales of software craftsmanship

Tales of software craftsmanship

GSoC: Beginning Amarok Mobile

When the Google Summer of Code program was announced again this year I decided to submit a proposal for a project that would hopefully take Amarok in a new and interesting direction.

My proposal was accepted, so this year I’m a GSoC student again, for my third time, working on an Amarok port for mobile devices, primarily tablets.

Why mobile? In the past few years some profound changes have been set in motion in the computing market. What we still call “desktops” might soon become mostly workstations and gamer rigs. We’re not there yet, but computers are already becoming increasingly mobile, invisible and wearable, and computing is becoming ubiquitous. In this changing environment, complex desktop apps like Amarok 2.x will have a harder time staying relevant, and are being challenged by leaner, simpler and flashier mobile counterparts.

Amarok has a strong brand and a good reputation as the ultimate music player for GNU/Linux systems, prominent features where Amarok innovates and excels are web services integration and smart context-sensitive information. I believe the Amarok team can take advantage of that and make a successful entry into mobile markets.

There is certainly a lot of work involved: the existing GUI simply would not work well on touch screen devices, and a lot of the underlying stuff is also not so well suited for a mobile app because it provides a very extensive feature set and requires a lot of dependencies.

The foundations for a mobile version were laid down about a year ago, when Amarok developer (and my GSoC mentor) Jeff Mitchell made some deep changes to separate Amarok’s core logic from “everything else”, including collections, the user interface, etc. However, not much happened after that besides maintaining this separation, so I simply figured that if we indeed want to see Amarok running on tablets and handsets the actual porting work had to begin.

So what am I aiming for? At this point, a platform that is accessible almost immediately is MeeGo (and Maemo 6), represented by the upcoming Nokia N900 successor and Intel x86 based tablets, as well as devices which come with other operating systems out of the box but have a MeeGo port. While during this GSoC project I’m focusing on MeeGo, when making technical decisions I will be taking into account their impact on possible future ports to other platforms.

This port will require a completely new GUI, but since I’m not a QML GUI designer (yet), so far I’m only promising to deliver the underlying stuff.

Until now, I’ve done a bit of work on yanking out Amarok’s core and building it with a minimal set of dependencies, and setting up a MeeGo development environment. The next step will be porting this core to MeeGo, and then building the required functionality on top of it while keeping the whole app light but smart 🙂