Summer Coding 2010 ideas - Unified Mobile Sync - shortinfo

The main page for this idea is Summer Coding 2010 ideas - Unified Mobile Sync - shortinfo.

The main page for Summer Coding 2010 ideas is Category:Summer Coding 2010 ideas.

Status: Idea

Summary of idea: Synchronization tool for mobile devices. The creation of tool for data synchronization between mobile devices and desktop, such as contacts, calendar, schedule, tasks, messages. Today mobility is a major trend, so enabling synchronization between mobile and desktop is important for Linux desktop adoption.

Contacts: Alexey Vasyukov

Mentor(s): For the moment Alexey Vasyukov

Notes: Proposed features:
 * Synchronization of contacts and calendar (required), tasks and messages (desired)
 * Support for popular mobile devices, simple extensibility for new gadgets via plugins
 * Support for popular desktop applications, simple extensibility for other via plugins
 * Simple graphical synchronization tuning tool – what to synchronize, scheduling, rules (filters, conflict resolution, etc.)
 * Enabling mobile device backup and restore
 * Desirably running not only on Linux, but also on Windows and MacOS (TBD)
 * Think about future integration with open source collaboration suites and unified communication systems.

Current state

The current stage (stage 1) is about research and architecture design. It can not be stuck to certain technologies. You need a broad vision of different technologies to be successful at this stage.

Current stage will take at least 2-3 months. After it we will determine coding tasks and timeline and proceed to stage 2 - prototype implementation.

The tasks for current stage:
 * Find out how to upload/download to/from popular mobile devices (Android, iPhone, Symbian, PalmOS, Win Mobile, BB, etc) contacts, messages, calendars, todos, media content, etc. It includes studying what data is accessible, in what format we are to process it, what protocols-libraries-APIs should be used. As a result we should get clear understanding what and how can be synced for different devices. This task will require gathering and reading tons of technical documentation and writing code to check if documentation is really true. I can not predict what programming languages, libraries, standards and protocols you will encounter.


 * Find out how to upload/download to/from popular desktop apps (Evolution, Thunderbird, KDE PIM, Outlook, etc) contacts, messages, calendars, todos, media content, etc. Once again, it includes studing what is accessible, in what format, via which channels. As a result we should get clear understanding what and how can be synced with different apps. This task will require, similarly with the previous one, reading documentation and writing tests. Once again, I can not predict what programming languages, libraries, standards and protocols you will encounter.


 * Find out how to integrate mobile sync into current system infrastructure for Linux desktop (dbus, udev, PackageKit, etc) and, probably, Windows desktop (???). This task will require very good knowledge of system design.


 * Prepare concept of GUI application and implement the first version (with placeholders instead of real sync plugins). This task will require knowledge of cross-platform programming with Python or C/C++ and GTK/Qt/etc. Knowledge of GUI design and usability will be a big advantage.


 * Prepare the architecture based on the results of tasks #1-4. The architecture should meet the requirements [1]. Determine tasks for complete UMS implementation.

From my point of view each of the tasks #1-4 will require few person-months. Task #5 will be solved collaboratively.