<html>
<head>
        <title>Application for Summer of Code 2008</title>
        <style type="text/css">
                table.main{
                background-color: #000000;
                width: 66%;
                }
                table.main tr{
                background-color: #FFFFFF;
                }
                table.main td{
                font-family: arial;
                }
                td.title{
                font-size: 24px;
                font-weight: bold;
                text-align: center;
                }
                td.content{
                padding: 9px;
                font-size: 14px;
                font-weight: normal;
                }
        </style>
</head>
<body>
        <center>
        <table cellspacing="1" class="main">
                <tr>
                        <td class="title">Application for Summer of Code 2008: Alex Kosenkov
                        </td>
                </tr>
                <tr>
                        <td class="content">

                        <b>Project details</b><br><br>For the end-user it'll look like the following:<br>
                        Client connects to the remote server -> authentication -> gets the content of the server -> browsing it through the Amarok as if it were local content -> adding and playing songs from the current playlist. Also he can upload something to server.<br><br>
                        
                        Inside:<br>
                        First case is that we have the main server. There we have a service which is to be connected to from clients. Also there we have a web-frontend (I can write it from scratch, but also it can be Ampache. In case of Ampache I'll just rewrite some parts of the code and make design more handy and add some minor functionalities). Service and frontend are integrated with each other. Musical data is stored on this server.<br>
                        On the other hand we have clients and musical data there. This data will be backuped to the server in certain amounts (depends on the server capabilities).<br>
                        When user tries to listen something Amarok already knows the shortest path to get this data (it can be user or server). And offcourse each user has some sort of cache to store and preload songs.<br>
                        <br>The second case is the following: server suddenly goes offline.<br>
                        We don't want to stay without music at all. So in this situation clients will communicate with each other and elect the new main server (and maybe several slave-servers). So each user will be able to listen content of other users (it includes cached data). If offline-situation repeats again with the new main server - we have to elect a new one or use slave-servers.<br> When the real main server wakes up servers transfer to him statistics and other data.<br>
                        Basically, this system <b>can</b> work even without real main server at all.<br><br>
                        Also Amarok won't download the whole file which is playing now it'll be just the needed part of the file. (but user can select full-download mode to be able to move forward through the song). Second is that Amarok will download beginnings of songs in playlist - it'll make the listening even more comfortable - user won't feel any delay while switching between songs.
                        <br><br><br>
                        <b>Proccess</b><br>
                        <br>I'll work for 30-35 hours per week. Zero step is to study already written code of Amarok (and Ampache) to create appropriate architecture (week on researches and a week for designing). The first step will be creating fast, stable and flexible clients/servers architecture. I'm planning to make the base in one month. Second step is polishing things and adding functionalities (week). Third step is integrating this system with Amarok 2. So if you are interested please give me a feedback.
                        <br><br><br><b>Biography</b><br><br>
                        I'm 19 year old student from Academ City, which is located in Novosibirsk in Russia. I'm studying at Novosibirsk State University at Physics Department (third course). My pulpit is Automation of Phis-Tech Researches (AFTI).<br>
                        Since I was 12 I have a hobby: making web-sites (design, programming). My last small-work is site of <a href="http://lpar.net/2007">LPAR Conference</a> ( Logic Programming and Automated Reasoning ) and my current work is site of Alan Turing Conference. Also I was developing Thinstation Linux distribution and file-manager <a href="http://psj.nsu.ru/braces.zip">"Braces"</a> using QT. Now I'm working with Security System called Vostok (language is Java) and CMS called ASPID (under C#).<br><br>
                        I have following skills for this task: C/C++ programming under linux (client/server), programming under QT, PHP, Databases (MySQL/Oracle).<br><br>
                        That said, I <b>will</b> succeed in developing this, no doubt complicated, architecture specially for Amarok.


                        </td>
                </tr>
        </table>
        </center>
</body>
</html>