GSoC: Playlist and Collection Synchronization (Rev. 3)

Rashad Tatum tatum.rashad at gmail.com
Thu Apr 2 11:42:40 UTC 2009


In this revision, I added some additional features I would like to have for
this project.  One of the features I believe users will enjoy is the
synchronization of tag information.  I also defined, (albeit somewhat
broadly), how files would be copied.  To speed up synchronization, I could
store a history of synchronizations.  I have begun doing some light reading
on synchronization algorithms.

My updated proposal is listed below.

*Proposal Name:*

Playlist and Collection Synchronization



*Motivation for Proposal / Goal:*

I own an iPod and would love to have this set of features.

*Implementation Details:*

Definition: Synchronization will keep copies of selected items from the
Collection and/or Playlists on the a particular media device.

All items will be checked to see if they already exist on the device.

Improve device support in Amarok 2.  Currently podcasts are not displayed
properly for iPods.  I could fix this problem by allowing the podcasts to be
displayed under the device's collection or the device's podcasts and
playlists could be displayed under the Playlist tab.  I will need more
feedback to decide which design would be more usable or if I should consider
an alternative design.

Items that can be synchronized:

   - All (Parent group of all items)
   - Synchronizes all items from the collection, playlists, and podcasts.
      - Items on the device not in the collection, playlists, or podcasts
      will be removed or added to collection, playlist, or podcasts.
   - Collection (Parent group of Artist, Genre, Composer, and Year)
   - Synchronizes all items from the collection
      - Music on the device not in the collection will be removed or added
      to collection.
   - Artist
      - Synchronizes all items in collection by select artist(s)
      - Items by select artist(s) on the device not in the collection will
      be removed or added to collection.
   - Genre
      - Synchronizes all items in collection of select genre(s)
      - Items by select genre(s) on the device not in the collection will be
      removed or added to collection.
   - Composer
      - Synchronizes all items in collection by composer(s)
      - Items by select composer(s) on the device not in the collection will
      be removed or added to collection.
   - Year
      - Synchronizes all items in collection by year(s) of track(s)
      - Items of select year(s) on the device not in the collection will be
      removed or added to collection.
   - Playlists
   - Synchronizes all playlists or select playlist(s)
      - Select playlist(s) on the device not in the local list of playlists
      will be removed or added to collection.
   - Podcast
      - Synchronizes all podcasts or select podcasts
      - Select podcast(s) on the device not in the local list of podcasts
      will be removed or added to podcasts.

Any combination of subgroups may be selected.  In that case the union of the
selected items will be synchronized.

Album art will be synchronized.  Album art may also be back-synchronized.

Also, if the user updates tag information for files on the device that are
also in the collection, the latest tag information should be updated.  Tag
information should also be updated if the collection tags are updated.  Tag
updates should occur as the files are being checked.

Back-synchronization, as described in the aforementioned list, will allow
the user to automatically add music from his device to the local
collection.  This feature is especially useful for users that add media from
using other applications or computers.

For devices that support user created folders, the user could be given the
option of organizing the files on the device into folders by the categories
of his choice or the collection file heiarchy could be copied to the
device.  For iPods, the iPod file structure will be used unless the user
specifies otherwise.  This will be useful for users that have media not
supported by the iPod firmware but supported by open firmware such as
Rockbox.

The algorithms that will be designed will involve locating files, comparing
file attributes, and determining when synchronization or
back-synchronization should occur.

The graphical visualization could be displayed as a widget.  Furthermore,
options should be added under the right-click menu for the device's.   The
user will be given the option of which items to synchronize.  The design of
the configuration widget could use a tabbed view with one tab per category
of synchronization.

*Tentative Timeline:*

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.

May 23: Refine algorithm.  Ensure it covers all desired features
(communicate with community and developers).  Begin prototyping (define
classes and functions).  At this point my algorithm and test cases should be
completed.

May 30: Finish prototype of classes and start designing basic gui
configuration.

July 6: Test prototype for midterm

July 13: Midterm deadline.

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.

August 10: Suggested Pencils Down.  Finalize documentation.

August 17: Firm Pencils Down.  Submit evaluation to Google.

August 24: Evalutation deadline.

August 25: Final Results Announced!  Begin coding my next idea (non-GSoC)
for the Amarok project.

September 3: Submit required code samples to Google.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/amarok/attachments/20090402/a10e6ce9/attachment.html>


More information about the Amarok mailing list