Upload
linuxfb
View
629
Download
0
Tags:
Embed Size (px)
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.