<table><tbody><tr><td class="twolineformfieldlabel">Abstract:
 </td>
 </tr>
<tr title="">
 <td class="formfieldvalue"> Currently, Amarok users have
to manually add items to their media device(s). Additionally, other
media players such lack the functionality for the user to back-sync
items from their device to their local collection. My goal is to solve
both problems with this project. </td>
</tr>


  


 <tr>
 <td class="twolineformfieldlabel">
     Content:
 </td>
 </tr>
<tr title="">
 <td class="formfieldvalue">
  
<p> </p>
<p><strong>Name:</strong></p>
<p>Rashad Tatum</p>
<p> </p>
<p><strong>Email Address:</strong></p>
<p><a href="mailto:tatum.rashad@gmail.com">tatum.rashad@gmail.com</a></p>
<p> </p>
<p><strong>Freenode IRC Nick:</strong></p>
<p>progmanos</p>
<p> </p>
<p><strong>Location (City, Country and/or Time Zone):</strong></p>
<p>Marietta, Ga, USA UTC/GMT -5 hours (Daylight Saving Offset, +1 hour)</p>
<p> </p>
<p><strong>Proposal Name:</strong></p>
<p>Playlist and Collection Synchronization</p>
<p> </p>
<p><strong>Motivation for Proposal / Goal:</strong></p>
<p>I own an iPod and would love to have this feature.</p>
<p><strong>Implementation Details:</strong></p>
<p>Definition: Synchronization will keep copies of selected items from
the Collection and/or Playlists on the a particular media device.</p>
<p>All items will be checked to see if they already exist on the device.</p>
<p>Improve device support in Amarok 2.</p>
<p>Items that can be synchronized:</p>
<ul><li>All (Parent group of all items)<br> 
<ul><li>Synchronizes all items from the collection, playlists, and podcasts.</li><li>Items on the device not in the collection, playlists, or podcasts will be removed or added to collection, playlist, or podcasts.</li></ul>

</li><li>Collection (Parent group of Artist, Genre, Composer, and Year)<br> 
<ul><li>Synchronizes all items from the collection</li><li>Music on the device not in the collection will be removed or added to collection. </li></ul>
</li><li>Artist 
<ul><li>Synchronizes all items in collection by select artist(s)</li><li>Items by select artist(s) on the device not in the collection will be removed or added to collection.</li></ul>
</li><li>Genre 
<ul><li>Synchronizes all items in collection of select genre(s)</li><li>Items by select genre(s) on the device not in the collection will be removed or added to collection.</li></ul>
</li><li>Composer 
<ul><li>Synchronizes all items in collection by composer(s)</li><li>Items by select composer(s) on the device not in the collection will be removed or added to collection.</li></ul>
</li><li>Year 
<ul><li>Synchronizes all items in collection by year(s) of track(s)</li><li>Items of select year(s) on the device not in the collection will be removed or added to collection.</li></ul>
</li><li>Playlists <br> 
<ul><li>Synchronizes all playlists or select playlist(s)</li><li>Select playlist(s) on the device not in the local list of playlists will be removed or added to collection.</li></ul>
</li><li>Podcast 
<ul><li>Synchronizes all podcasts or select podcasts</li><li>Select podcast(s) on the device not in the local list of podcasts  will be removed or added to podcasts.</li></ul>
</li></ul>
<p>Any combination of subgroups may be selected.  In that case the union of the selected items will be synchronized.</p>
<p>The graphical visualization could be displayed as a widget.</p>
<p><strong>Tentative Timeline:</strong></p>
<p>Community Bonding Period: Study Amarok code base (which I have
already started doing) to get an idea of what I classes to use to
implement the project idea.  Become more familiar with development
environment.  Develop algorithm and test cases.  Includes learning
documentation standards.</p>
<p>May 23: Refine algorithm.  Ensure it covers all desired features
(communicate with community and developers).  Begin prototyping (define
classes and functions).</p>
<p>May 30: Finish prototype of classes and design basic gui configuration.</p>
<p>July 6: Test prototype for midterm</p>
<p>July 13: Midterm deadline.</p>
<p>Interim Period: Optimize algorithm and implementation. Continue
refining gui configuration and algorithm implementation.  Mentor
assists with project.  Fix bugs and finalize test cases. Ensure GUI
meets standards.  Write documentation.</p>
<p>August 10: Suggested Pencils Down.  Finalize documentation. </p>
<p>August 17: Firm Pencils Down.  Submit evaluation to Google.</p>
<p>August 24: Evalutation deadline.</p>
<p>August 25: Final Results Announced!  Begin coding my next idea (non-GSoC) for the Amarok project.</p>
<p>September 3: Submit required code samples to Google.</p>
<p> </p>
<p><strong>Do you have other obligations from late May to early August (school, work, etc.)?</strong>:</p>
<p>I am planning on taking two courses for a total of 6 credit hours during a 10-week summer semester.</p>
<p> </p>
<p><strong>About Me (let us know who you are!):</strong></p>
<p>I am a Computer Science/Mathematics student at <a href="http://www.spsu.edu/" target="_blank">Southern Polytechnic State University</a> .
 I am a 23 yr. old male from LaGrange, Ga.  I have taken the following
Computer Science Courses: CS 1 & 2 and Data Structures.  I am
currently taking the following CS courses: Database Systems, Digital
Design, Algorithm Analysis, and Objective-C and Cocoa.  I enjoy
learning new algorithms and programming languages.  I intend on
pursuing graduate studies in Algorithms, Combinatorics, and
Optimization or Computational Science at Georgia Tech.</p>
<p>I recently began developing for the Amarok project this year.  I
implemented the backend of the auto-download of podcasts feature with
the guidance of Bart Carneels and <span class="contentdata">Mark Kretschmann (who helped me get my development environment running)</span>. 
I worked through the introductory Qt tutorials last summer.  I started
using KDE and GNU/Linux in 2001.  I started using Amarok in 2004.</p>
<p> </p></td></tr></tbody></table>