GSoC 2011: Synchronizing F-Spot data



Hello list,

This is an evolution of my previous GSoC mails, with a much less
ambiguous formulation. Obviously, if you disagree with my decisions or
think I should clarify something, please tell me :)

Now I need to find a mentor.

GSoC 2011: Synchronizing F-Spot data
====================================
By Simon Lindgren <simon n lindgren gmail com>

DRAFT 1

Abstract
--------
I'm a long time user of the F-Spot photo manager. I use it to tag images
for easier retrieval later. Currently, F-Spot stores its data in a SQLite
database in the users home directory. This has a few drawbacks, namely

 * The data is only available on one computer, and therefore:
 * It is difficult to work with the data at geographically separate locations

In my particular case, I want to browse and edit my images on my main
computer, which is a desktop. When traveling I only have my laptop with me
and thus I do not currently have access to my F-Spot database. A workaround
is to copy the database between the computers, but that is tedious and error
prone. This project aims to solve this problem by introducing a synchronization
solution capable of synchronizing the F-Spot data model in its entirety
across multiple F-Spot installations.

Requirements
------------
The synchronization must:
 * support synchronization of all current metadata
 * be flexible enough to allow future additions of data in
   a backwards compatible way
 * Support conflict detection and resolution

It would also be nice if it could
 * support additional data that might be added by addins
 * support lightweight transfer of on-file metadata changes
It might be too much to implement those last two things this summer though.

Technical approach
------------------
I will implement this as a remote repository of the F-Spot data that
support pushing and pulling data to/from the repository and also
some extra functionality to simplify synchronization.
To communicate with the server an XML-based REST api will be used. XML makes it
easy to integrate XMP metadata, which I believe will cover much of the
per-image data. An addin to F-Spot keeps the local
F-Spot database up to date with the server so that F-Spot can continue to
use the already existing queries. This addin will also track changes
to the data and manage synchronizing the changes back to the server.

Deliverables
------------
The deliverables of the project would be:
 * An addin for F-Spot to support synchronization
 * (if needed) patches for F-Spot to support the addin
 * A specification of the REST api and the data format
 * A synchronization server implementation

Preliminary Schedule
--------------------
Before May 23		Familiarize myself with the F-Spot codebase,
			Read Mono.Addins docs,
			Read up on synchronization conflict handling methods
			Read through the Tomboy Snowy protocol for inspiration
May 23 	- May 26	Draft the serverside data model and the REST api
May 27	- June 1	School examinations
June 2	- June 5	Add extension points for change events to F-Spot
June 6	- June 19	Implement a basic working system to the state
			that images and metadata can be uploaded on change
			events in F-Spot, if network is available.
June 20 - June 26	Implement downloading images and metadata.
June 27	- July 3	Implement authentication (I intend to code in a
			"get it to work" mode up to this point, but ofcourse
			with authentication in mind)
July 4	- July 17	Implement the rest of full synchronization,
			including conflict handling
July 15			Mid-term evaluation deadline.
July 18	- July 31	Implement automatic merging of changes
Aug 1	- Aug 14	Buffer time, in case of delays
Aug 15	- Aug 22	Bug fixing, testing, documentation and cleanups

About Me
--------
My name is Simon Lindgren and I am a third year Computer Science student
at Linköpings Unversitet (the Linköping University). I have used C# and mono
extensively for small homegrown experimentations, and I have gained a fair bit
of knowledge of how it works. I have previously looked through the F-Spot code,
although that was before the big reorganization. I have also written
a Finance::Quote module in perl. It is currently living in it's own branch,
at https://github.com/pfenwick/finance-quote/blob/Morningstar/lib/Finance/Quote/Morningstar.pm.
Gnome patch is TBD.


-- 
Simon Lindgren



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]