20081116 xmms2

Preview:

Citation preview

XMMS2A short introduction

or..

how to make a presentation with less than 50 words

Hello and thanks for listening. I would like to introduce the xmms2 project, the background and motivation for it and also where we are and going in the future. I will try to not bore you with a lot of words, instead use a lot of pictures.

History

You all probably know this, our history. It’s has been one of the most popular music players in the open source community, because of it’s uncomplicated UI and small footprint. It has really served us all well. But it not has been without it’s fair share of problems. And the biggest problem of the code was very apparent when GTK2 was introduced, XMMS1 had a harddep on GTK1 which was not removable. The XMMS team decision was to not change the dep to GTK2 mostly of the plugin problem (all plugins depended and called GTK1 directly). This resulted in a lot of forks.

Motivation for XMMS2

“The XMMS code we inherited is old and messy. In more specific terms, it is poorly structured, poorly documented and littered with duplications. It is difficult to modify or extend one component of XMMS without breaking another. We spent most of our time fixing problems that were introduced after seemingly innocent modifications.”

BMP Developers

The BMP team had this to say about XMMS1 code, <recite the text>. Very flattering. But we have a news flash for you! We know about this, and we have been spending a lot of time to fix the problem.

Motivation for XMMS2

“The XMMS code we inherited is old and messy. In more specific terms, it is poorly structured, poorly documented and littered with duplications. It is difficult to modify or extend one component of XMMS without breaking another. We spent most of our time fixing problems that were introduced after seemingly innocent modifications.”

BMP Developers

We know!and we are fixing it!

The BMP team had this to say about XMMS1 code, <recite the text>. Very flattering. But we have a news flash for you! We know about this, and we have been spending a lot of time to fix the problem.

Flaws in XMMS

When we started to plan the next generation of XMMS we realized that the flaws where numerous. No abstraction, duplication... the lists goes on and I am not here to talk about XMMS1.

Demise of XMMS

Bye bye Gentoo and Slackware

XMMS1 is being phased out from several distros, we have already seen Gentoo and Slackware saying goodbye. Any century now Debian will probably remove it also.

Start of a new era

Many people probably don’t realize it, but XMMS2 has been around for a while, this graph from ohloh show you that we have been working on this since late 2003. The codebase is written from scratch and the only thing it shares with XMMS1 is the name (and some developers also).

Buzzword bingo for music players

Medialib Cross platform Sexy interfaces

Streaming Format support

Chained decoding

Smart playlists Services ?

When we sat down and looked at the future we played a bit of buzzword bingo with current music players, I bet you recognize the list above, these are things you expect from a music player these days. One of the most important things we learned from XMMS1 was that we shouldn’t be hard depending on a graphical interface, because then we are all screwed over again when GTK3k is released or whatever...

Buzzword bingo for music players

Medialib Cross platform Sexy interfaces

Streaming Format support

Chained decoding

Smart playlists Services ?

When we sat down and looked at the future we played a bit of buzzword bingo with current music players, I bet you recognize the list above, these are things you expect from a music player these days. One of the most important things we learned from XMMS1 was that we shouldn’t be hard depending on a graphical interface, because then we are all screwed over again when GTK3k is released or whatever...

Same same but different

So XMMS2 is something you already have, in players like: amarok, bmpx, rythmbox, the singing bird. And this is a interface of the glorious XMMS2 player! That sound you just heard was the whole room going WTF? The fact is that XMMS2 doesn’t have a sexy interface. Let’s see what XMMS2 does have.

Same same but different

So XMMS2 is something you already have, in players like: amarok, bmpx, rythmbox, the singing bird. And this is a interface of the glorious XMMS2 player! That sound you just heard was the whole room going WTF? The fact is that XMMS2 doesn’t have a sexy interface. Let’s see what XMMS2 does have.

Same same but different

So XMMS2 is something you already have, in players like: amarok, bmpx, rythmbox, the singing bird. And this is a interface of the glorious XMMS2 player! That sound you just heard was the whole room going WTF? The fact is that XMMS2 doesn’t have a sexy interface. Let’s see what XMMS2 does have.

Same same but different

So XMMS2 is something you already have, in players like: amarok, bmpx, rythmbox, the singing bird. And this is a interface of the glorious XMMS2 player! That sound you just heard was the whole room going WTF? The fact is that XMMS2 doesn’t have a sexy interface. Let’s see what XMMS2 does have.

Same same but different

So XMMS2 is something you already have, in players like: amarok, bmpx, rythmbox, the singing bird. And this is a interface of the glorious XMMS2 player! That sound you just heard was the whole room going WTF? The fact is that XMMS2 doesn’t have a sexy interface. Let’s see what XMMS2 does have.

Same same but different

So XMMS2 is something you already have, in players like: amarok, bmpx, rythmbox, the singing bird. And this is a interface of the glorious XMMS2 player! That sound you just heard was the whole room going WTF? The fact is that XMMS2 doesn’t have a sexy interface. Let’s see what XMMS2 does have.

Same same but different

So XMMS2 is something you already have, in players like: amarok, bmpx, rythmbox, the singing bird. And this is a interface of the glorious XMMS2 player! That sound you just heard was the whole room going WTF? The fact is that XMMS2 doesn’t have a sexy interface. Let’s see what XMMS2 does have.

Music framework

IPC layer

Decoder layer

Medialib layer

Collections layer

Playlists

SQLite

XForms

Service clients

User interactive clients

xmmsclient

bindings

Media files Audio output

XMMS2 is a music framework in a client server model. All the heavy parts live in the server while the client is just a fancy front-end to the API. This model of course like all models are very boring, but as you see we have tried to address some things that we really didn’t like in xmms1, like the client abstraction. A front-end is actually just a client that connects to XMMS2 via the API.

APIs

The base API of course in C but we have today bindings for all kinds of animals, gems and coffe.

Power at your fingertip

The API is very very simple and powerful, this is just a glimpse of what you can do with the API. I actually wanted this whole thing written in C because I don’t know Ruby and find it pretty confusing, but it might say something to someone in here.

Multiple clients

All this client abstraction leads to that we can have multiple front-ends and we are no longer locked into a specific toolkit. Choose your poison, gnomes, trolls or something worse.

Everything is a client!

One important part of the arcitecture is that the API allows extensions via other clients. So actually everything around the core media playback engine is a client. Things like last.fm, growl notifications, album downloader, ipod syncronization everything is a client ... not that we have all those things yet, but we could have them!

All these choices has a backside though, as of today we still lack a kick-ass-client.

Everything is a client!

CLIENT!

One important part of the arcitecture is that the API allows extensions via other clients. So actually everything around the core media playback engine is a client. Things like last.fm, growl notifications, album downloader, ipod syncronization everything is a client ... not that we have all those things yet, but we could have them!

All these choices has a backside though, as of today we still lack a kick-ass-client.

Everything is a client!

CLIENT!

One important part of the arcitecture is that the API allows extensions via other clients. So actually everything around the core media playback engine is a client. Things like last.fm, growl notifications, album downloader, ipod syncronization everything is a client ... not that we have all those things yet, but we could have them!

All these choices has a backside though, as of today we still lack a kick-ass-client.

Everything is a client!

CLIENT!

CLIENT!

One important part of the arcitecture is that the API allows extensions via other clients. So actually everything around the core media playback engine is a client. Things like last.fm, growl notifications, album downloader, ipod syncronization everything is a client ... not that we have all those things yet, but we could have them!

All these choices has a backside though, as of today we still lack a kick-ass-client.

Everything is a client!

CLIENT!

CLIENT!

One important part of the arcitecture is that the API allows extensions via other clients. So actually everything around the core media playback engine is a client. Things like last.fm, growl notifications, album downloader, ipod syncronization everything is a client ... not that we have all those things yet, but we could have them!

All these choices has a backside though, as of today we still lack a kick-ass-client.

Everything is a client!

CLIENT!

CLIENT!

CLIENT!

One important part of the arcitecture is that the API allows extensions via other clients. So actually everything around the core media playback engine is a client. Things like last.fm, growl notifications, album downloader, ipod syncronization everything is a client ... not that we have all those things yet, but we could have them!

All these choices has a backside though, as of today we still lack a kick-ass-client.

Everything is a client!

CLIENT!

CLIENT!

CLIENT!

One important part of the arcitecture is that the API allows extensions via other clients. So actually everything around the core media playback engine is a client. Things like last.fm, growl notifications, album downloader, ipod syncronization everything is a client ... not that we have all those things yet, but we could have them!

All these choices has a backside though, as of today we still lack a kick-ass-client.

Everything is a client!

CLIENT!

CLIENT!

CLIENT!

CLIENT!

One important part of the arcitecture is that the API allows extensions via other clients. So actually everything around the core media playback engine is a client. Things like last.fm, growl notifications, album downloader, ipod syncronization everything is a client ... not that we have all those things yet, but we could have them!

All these choices has a backside though, as of today we still lack a kick-ass-client.

Still no kick-ass client you say?

But we do have a very neat CLI.

That’s the cat again, he likes things graphical.

Still no kick-ass client you say?

But we do have a very neat CLI.

That’s the cat again, he likes things graphical.

But we do...

And there are graphical clients, everything from Qt, to Gtk, to Small, to big, to mobilephones.

But we do...

And there are graphical clients, everything from Qt, to Gtk, to Small, to big, to mobilephones.

But we do...

And there are graphical clients, everything from Qt, to Gtk, to Small, to big, to mobilephones.

But we do...

And there are graphical clients, everything from Qt, to Gtk, to Small, to big, to mobilephones.

But we do...

And there are graphical clients, everything from Qt, to Gtk, to Small, to big, to mobilephones.

But we do...

And there are graphical clients, everything from Qt, to Gtk, to Small, to big, to mobilephones.

http://xmms2.xmms.se

But what we really need is help.. because we need that kick ass client, we need that new database back-end and we need less beatle bugs. Here at FOSDEM we are ten regulars from XMMS2, you can identify them easily, because they are all nerds.... eh... I mean some of them have pretty t-shirts. If you have more questions about XMMS2 or you have ideas on how you can help, please find us during tonight or tomorrow. Or #xmms2 at freenode

Now I hear there is a dead cow with my name on it somewhere in central brussels.