Google Summer of Code 2008 / Ideas
Feel free to add your Ideas for a Google Summer of Code 2008 project.
Random Ideas
- "Try-Sync" Testing Tool
- Tool based on OpenSync? try to validate if application/device is supported by OpenSync?
- Intended for normal users which want to check if there device will work reliable
- Test synchronization:
- Read all entries and show users the resutls (create backup)
- Commit a test entry to the device/application and ask the user to validate the entry is present on the app/device
- Get all entries and look compare original committed test entry with entry received from the device
- Refactor the vformat-plugin into libvformat (vcard 3.0, vcard 2.1, iCalendar, vCalendar, ..)
- Simple GUI for handhelds (e.g. GPE device) to use OpenSync? to synchronise the handheld PIM with mobile phones (e.g. using SyncML over Bluetooth or gnokii)
- (ideas which doesn't fit elsewhere)
OpenSync
- Client Engine
- Currently OpenSync is limited to a "Server Engine", which means this engine is doing conflict resolution, multiplying of entries and so on.
- "Client Engine" is actually only a limited version of "Server Engine"
- Refactoring of OpenSync Core components to implement the Client and Server role
- Example: Synchronizing two OpenSync instances which each other - Server <-> Client
- Filtering
- Protocol specific filtering:
- some protocols are able to perform quite efficient filtered queries
- "Content" specific filtering:
- filter on attributes (e.g.: "CATEGORY: Family", DATESTRATED > 30days)
- Protocol specific filtering:
- Alternative Conflict Resolution Function
- Implementing an "merging" conflict resolution function
- Suggest a "merge" for changes which are similar enough
- Protocol specific (one/two) uni-/bi-synchronization support
- Some implementation can handle differnet types of synchronization (e.g. SyncML)
- Provide Interface
- Comparer enhancement: OpenSync causes a conflict for fields which aren't equal. Nevertheless some of those fields have the same meaning, e.g.
<telephone>004991123456</telephone> <telephone>+4991123456</telephone> <telephone>091123456</telephone> <telephone>0911 23456</telephone>- The goal is to make the comparer more flexible to avoid such conflicts.
- Google Contact API OpenSync? plugin
- XMLFormat-Bookmarks for syncing Bookmarks from different formats
- XMLFormat-Keys synchronizing KeyRings? from different boxes (Gnome Keyring - KWallet)
- Enhance/Redesign XMLFormat-Note to support richtext (see Tomboy) and plaintext (Tomboy - KNotes)
- Backup Plugin with revision control system (archiving changes)
- GPE plugin: automatically locate and configure handhelds using DNS-SD/Zeroconf
- SyncML server plugin: do synchronization between desktop applications/mobile devices and a SyncML server.
- Palm plugin: porting it from opensync 0.20 API to 0.30 API.
- Google Calendar plugin: one of its dependencies, httplib2 supporting proxy. Currently it doesn't support proxy setting.
- Capabilities support: OpenSync introduced capabilities support in version 0.30 to avoid data loss and conflicts. There are still some plugins which doesn't provide device capabilities.
libsyncml
- Python bindings
- OBEX Server initialization with AT+ commands
gnokii
DBUS integration for gnokii libgnokii handles communication with the connected mobile phones. It opens the device/port and talks directly to the phone. It makes impossible to use two applications talking to the phone in parallel. The idea is to create a daemon application taking care of the device communication and detection and exposing phone events and functionality to the user space (for example, using DBUS). The task is to design the user space API, implement communication daemon and few sample applications.
Symbian S60 3rd Edition driver Gnokii uses various protocols to communicate with the phone. Main two protocols are FBUS (Nokia proprietary protocol) protocol and AT Hayes Command protocol. Unfortunately modern Symbian phones do not support FBUS and AT command set is very limited (for example, they don't give access to phonebook). Gnokii provides gnapplet driver for Series 60 version 1 and 2. The task is to extend the current driver with more functionality provided by libgnokii and add USB connection support. The other task is to create gnapplet driver for Series 60 version 3 (it is not backward compatible with previous versions).
gnokii configuration wizard Currently gnokii requires manual preparation of the config. Various fields depend on each other, few of them could be autodetected. The task is to write a decent GUI that does autodetection of possible things (bluetooth, irda, usb) and provides step by step wizard for other options for creating gnokii config file. Wizard can be written in any language but it should be portable between various operating systems. Application should support standard way of i18n.
MMS support While SMS support in libgnokii is nearly completed, it completly lacks support for MMS. The task would be adding MMS support to libgnokii and exteding a GUI for reading it from the phone and composing new ones.
Improvements to SMS support Support TEXT SMS, not just PDU. Give more convenient API to handle SMS creation.
Python/Perl/PHP/C#/Java libgnokii bindings Gnokii development is done using C language. If you want to use libgnokii in your application you also need to use C (or C++). That limits somehow the possibilities of libgnokii usage. There is some job done within area of Perl and PHP bindings but they are far from complete.
FUSE/GVFS gnokiifs driver libgnokii supports Nokia mobile phones filesystem access using FBUS protocol. There are two ways of doing this and both of them are supported. There exists CODA gnokiifs supporting one of them. FUSE or GVFS seem to be more popular way of creating userspace drivers these days. The task would be to create gnokii userspace driver for FUSE/GVFS supporting both ways of accessing filesystem.
Phone configuration database External database with phone capabilities would strongly help either in gnokii development and in other mobile phones applications (like event Network Manager). The task is to design such capabilities database to be integrated with some already existing solution (HAL? UDEV?) and port libgnokii and gnokii project applications to use it.
gnome-sync-tool
gnome-sync-tool is a GTK+ GUI application for OpenSync?, allows user configure/manage/use OpenSync? easily. Draft design doc is located at http://www.genunix.org/wiki/index.php/Opensync_new_gui_design
Plugins for gnome-sync-tool There are only two plugins implemented now, file-sync and evo2-sync, need more as following:
- google-calendar
- palm-sync
- syncml-http-server
- gnokii
- syncml-obex-client
- moto
- GPE
Schedule feature Schedule feature allow system execute synchronize opensync groups with user-defined time.
HAL/DBUS support Adding HAL/DBUS allows gnome-sync-tool popup when a device is plugged into system. If the device is ever configured as a member, point user to that group, ask user whether to execute a synchronization. If not configured, guide user to config it.
