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 ..