Mp3sb Draft 0.1 21/10/2000 Jerome.Kerdreux@finix.eu.org
=======================================================
This document describe what the next version of mp3sb
should do. We need to add some improvement because of
several problems:
-----------------
1) the use of mysql is no really needed as you don't
have a bunch of mp3 (more than 10 000). And installation
process is really hard (remember the nb of Redhat user
post about installing php3-mysql :( ) Mp3sb should be
easier to install and maintain for small mp3 player.
2) Building client is really easy now (you just need to
know a bit of sql) but really dependant of :
- the sql server
- the mp3sb protocol
Swithing to postgresSQL for example will be a awfull work
for the mp3c maintainer for example .. and to sqlLite is
quite impossible
And adding a new to command in the server code requires
us to patch all the other client .. and that really sucks.
For example Nico send me a patch that support multi-cd,
that sound great but the only way to detect you have
to change CD is to look at the MSG result .. that sucks.
3) Lack of integration
We have a cgi that connect to the mp3sb .. but is it
really usefull. Why don't we integrate the cgi code
in the server code too ? or why a telnet of the server
don't show you a nice interface.
4) Thread pb
Perl is nice .. but doesn't support thread very well
so long request to the server (even with a bad written
client) cause the other client to block.
5) Lack of even oriented talk.
Right now all the client call the server to have
information about the status. But why the server
doesn't broadcast a msg when the status change?
This isn't reallty a big deal .. but think about
someone change the current playlist.. you won't
notice it until you reload the playlist.
6) streaming isn't really well supported it's a
hack more than anything.
Proposed solutions:
-------------------
To fix the problems :
The main think is to use some different database manager.
Choose it to fit with your needs. ( MYSQL,SQLLite .. )
And only the server talk to the database manager. And
switching to another manager is done by loading a library
in the server code. This solve 2 pb, the need of a huge
database manager and add the possibility of switching
to another one withou re-writing the client side.
To solve the issue about the new comand in server code
is a bit more complex. In fact as the server code is
designed to be used in embeded box, all the user have
different needs for example I want the abaility to
change the ip of my box throught mp3sb. This can
sound you really strange .. but when you have only a
LCD .. a lot of work is need to change the ip ..
think about the server side implement this command
SET IP=XXX.XXX.XXX.XXX .. But we can't provide a
patch for each user. and even if the changing that in
server isn't a big challenge .. rebuilding the client
will be awfull. So i talk about that w/ severals
mp3sb geeks (:)) .. and a solution seems to use a more
complex command in the server side.
example:
notation:
$$ this is for the client side
>> this is anwser form server
telnet mp3 2345
$$ use complex_io
>> ok ....
$$ host_config
>>
>> host config
>>
>>
>>
>>
$$ change_ip
>>
>> change_ip
>>
>> ...
Hum ..yes it's a bit as libglade do :))
It isn't really clear in my head right now .. but
as you can seem I use a xml notaion to simplify the
read and because using a tool like libxml will be
easy.So with this kind of stuff you just have to
build some callback for the request ..
And as I said before this abstraction layer
can be changed for different kind of client ie
http .. or telnet ..
Another issue that isn't really one right now is
the lack of thread in the server code. So if we
want the request (sql) done in the server side,
all the code need to be threaded .. to avoid
locking of client when we do a large request.
So we need to swtich to another langage. I have
think about python .. or C (Short note for
Java coder : no .. and no Java is not designed
for that .. it will eat more than 20 Mo of mem
and 80% of the cpu on my p133 box). And python
seems to be really slow for this kind of stuff.
And to close this short intro. I have a short
talk about the streaming process. If we want
to add this .. we need to have a playlist by
user connected .. so .. but as the playlist
really need to be rewriten.
And to cut with rumor: yes , we will try to
add support for queue as this can be done
easilly in the client side .. and yes we
will support the older mp3sb protocol
(but not the direct sql query..) for simple
client like gkrellm or mp3sbinfo
So as you can read we plan to make a really
big new version. So we are looking for
some developpers right now .. We need you !
The current Team about this stuff:
- Jerome (Me/): sql abstraction layer
- Vincent : qt xml/wrapping
- Nico : port (M$Sucks / BSD ..)
I really want to use mp3sb on my sister Win9X
- ChrisChris xml callback counsulting :))
- And I'm looking for a CVS Admin .. because
I hate to do this stuff ..