MultipleComputersSynchronization

Summary

This spec discuss the inclusion and integration of a remote synchronization/storage/sharing solution in Edgy. The proposed solution is currently based on unison, although suitability of other tools (may be one of the version control systems, i.e. Mercurial) should be considered.

Rationale

Having a multiple computers configuration is more and more common everyday : one desktop at work, one desktop at home, one laptop. Keeping tracks of a given file or synchronization is often a real pain. Also, there's no easy way to share a file across the Internet if you don't have webserver and the knowledge of ftp/sftp.

Use cases

  1. Emma will soon fly to a conference in America with her whole new laptop. She wants to be sure that she can access all the necessary files that are on her home computer.
  2. Joe wants to share a 6 MB file with Jack. Unfortunately, his SMTP service will only allow mail messages that are less than 5 MB.
  3. William can never remember if a given file is on his laptop or desktop. Sometimes the file is on the desktop AND on the laptop, but he only wants the newest version.
  4. Sally has three computers, and wants a common home directory, including her Firefox extensions, and mail setup.

Scope

  • Decentralized model
  • 2 types of share public(no password)/private
    • A strong cryptography and security model - like SSH - for confidential data
    • A weak security model - read only - like anonymous ftp - for use case 2
  • Integration with the system file browser
  • On-demand file sharing and file synchronization
  • Display a list of available shares, their type and available actions
  • It's preferable that the solution could be used with other distribution or desktop/window managers (like Xubuntu and Xfce).

Design

General

A special location in the file browser will show all nodes from LAN having files for sharing. Selecting a node will show all it's shares and right clicking a share will display a context menu with available actions (open, sync to, sync from)

Extended attributes or nautilus emblems should be used to mark folders for syncing/not syncing, public or private share, instead of the clumsy and incomprehensible Unison configuration files.

File sharing

File synchronization

From the Preferences Dialog the user could allow a default set of sync targets. This will enable a user to easily configure home dir syncing of things like firefox bookmarks/extensions (whole profiles, extensions, without caches!!!).

From the Prefereces Dialog the user could check what to sync between home folders (see above), and choose whether to sync video, music, or other large files. This could be bandwidth dependent, something which can be tested.

From the Preferences Dialog the user could check if he/she want all folder synchronized at log on or select some of them.

From the Preferences Dialog the user could manualy add new synchronization shares. This will allow Ubuntu Synchronization to work with other system.

A remote folder will be synchronized with the local folder having the same path.

User Friendly Unison

  • In the case of inconsistencies warning the shares should be brought to a consisent state without warning the user. Just follow the indication from unison warning.
  • If there are no conflicts, the default action should be performed and a progress bar displayed to the user.
  • Integration with gnome-keyring
  • In the case remote host does not have unison installed, a static version of unison should be transfered to the host into the .unison dir.
  • In the case the remote host has other version of unison and there is no unison database in the user folder, transfer our version to the system. Else warn the user about the conflict

Implementation

Existing solutions

  • iFolder , an open source solution from Novell would fit quite nicely.

  • Unison a command line program that can keep multiple directories in sync. (even if there are changes on both) Works great, but would need a good nautilus extension (with a real gtk/gnome front end) to really make it amazing.

iFolder has disadvantages compared to Unison: it is less conservative in wiping data instead of adding new files. However, it is supported albeit semi-commercial, whereas Unison appears to be stagnant.

iFolder had a great disadvantages compared to Unison: you need the server part! In many use cases Ubuntu Linux is used just on the client side and the server side is some other GNU/Linux based distribution. Having a static build of Unison (for Linux, FreeBSD, Solaris) we will only need a valid ssh account on another computer.

Architecture

  • based on avahi http://avahi.org/

  • the "fshare" will advertise it's shares and share types
  • the shares will be available in nautilus or other file browser at "network:///" location
  • public file sharing is using ftp
  • private file sharing is using scp
  • File synchronization works on top of private file using unison

DNS-SD entries

* public share - anonymous ftp

  • type = _ftp._tcp
  • subtype = _anon._sub
  • txt keys: path=<path>

* private share - ssh and sftp-subsystem

  • type = _sftp-ssh._tcp
  • txt keys: u=<username>,path=<path>, sync=no

* sync share - ssh and sftp-subsystem

  • type = _sftp-ssh._tcp
  • txt keys: u=<username>,path=<path>, sync=yes,

=== Emblems used===

* public share - anonymous ftp

  • artwork needed

* private share - ssh and sftp-subsystem

  • artwork needed

* sync share - ssh and sftp-subsystem

  • artwork needed

Screenshots

Preferences Dialog

http://adi.roiban.ro/misc/Screenshot-FShare Preferences.png

http://adi.roiban.ro/misc/fshare.glade

Data preservation and migration

Outstanding issues

BoF agenda and discussion

  • Added unison as existing solution
    • I use this program to keep my usb key in sync with a directory on my hard drive. This allows me to work on either and still sync the changes. The only minor issue is that if you change a non-text file on both directories you will have to decide which one to keep. It will not merge the differences. This program can keep complete backups if necessary and can merge more then two directories, in any order. Amazingly powerful it just needs a GUI and to be integrated into nautilus. -- PeterVanderKlippe 2006-04-24 13:23:53

  • iFolder looks like a good product, but I think the enterprise mode server would be a bit much for Ubuntu's main purpose (though great for a server). The workgroup mode seems to be more appropriate, but it is not yet complete, according to Novell. It is also unclear how workgroup mode will work; to some extent it sounds like it will operate as extensions to chat clients and such. Also, a solution that can operate behind a firewall (and NAT) would be ideal, because, in my experience, many people are do not know how to modify the settings on their firewall/router (or can not because of their ISP). -- MatthewIsaacs 2006-04-27 01:16:14

Update: The 3.x open source versions of iFolder can operate in p2p mode using Avahi and has the advantage of being cross platform.

  • Unison seems like a good product. It currently works without the need for a central server, though it lacks a gui. A linux/Ubuntu gui could be modeled after gui for the windows version. The Unison FAQ points out some deficiencies that may arise in more complicated situations, such as sync loops and differences in timestamp granularity between different filesytems, and others. I'm not sure if iFolder has some of these problems or not. If Unison were used as a basis for the Ubuntu sync tool, some mechanism to handle this would probably have to be developed (though Unison does fail gracefully). -- MatthewIsaacs 2006-04-27 01:21:29

  • Unison has a GUI, but not a great one. Unison is more ambivalent about filesystems than iFolder (which just takes charge in sometimes destructive ways).
  • Unison requires ssh login, and is relatively time consuming. iFolder syncs itself in the background with a saved login. Unison would need an unprivileged account with only access to the sync folder on the remote machine. iFolder watches the file system for changes and can sync more cleverly. A Unison daemon could run which watches inotify.
  • A lightweight http server could be use for file sharing instead of ftp allowing the use of webdav enabled applications http://www.webdav.org

  • A further use case requiring something similar to iFolder enterprise mode would be: At work Anna has two computer (one laptop, one desktop) and a ssh account on the company's central server running a Unix-Like OS.The company sysadmin will not install any other software on the server. She wants to have it's application settings and documents synchronized (the newest version on each computer).

* Take a look at Conduit (http://www.conduit-project.org/). It does synchronization. Gshare handles file sharing already, http://yimports.com/~cpinto/projects/gnome/gshare

  • I found conduit to complex. It is a great project but i don't think it is suitable to be a default application in ubuntu.
    • We need to decide how many feature will be included in the synchronization tool. For now I think it is enough to have a simple documents and some application setting synchronization between computer. No gmail, pda or ipod synchronization.
    • Maybe we need another specification for advance device and web application synchronization
  • Gshare is great! It is very close to the specification and might be a good start.
    • Allows only one share folder
    • Only FTP is supported. Good for password-less public data, not enough for synchronization of private data.
    • Is very good that it uses avahi
    • instead of a builtin FTP server I prefer an anonymous only version of VSFTPD.
    • I don't know if we need mono for this application. I prefer plain C.

* Realistically, any app which will easily share files across a trusted local network is going to have security issues or is going to require a knowledge base above that of the average PC user. There are also plenty of 3rd party solutions to internet information sharing (IM transfers, email, rapidshare, dropbox (soon) etc etc). Why don't we concentrate on something robust for a local network - this is increasingly important with laptots like the Asus EEE pc, which bring multi-pc syncing issues to a new userbase.

* Having all shares at location "network:///" might be a problem in the case of many share available in the LAN. It will be difficult to locate them. Instead the usage of a location "fshare://blinky" will display all shares provided by node "blinky". Depending of the share type opening a share will redirect the file browser to a scp:// or ftp:// location.

* Emblems are a good way of taging files. Unfortunatly Nautilus has to many emblems shiped by default and no application make use of them. It would be great to manage all share/sync options using emblems. Like having special emblems for public share, private share, sync folder, sync at startup, master sync (don't delete files)

* Using Source Control Managemnt Tools could be useful for backup, but I dont' think we need to do synchronization with it. These tools are designed for text files. There is a reference of using such tools for simulating "time machine" on the Ubuntu GSoC2007 Page.


CategorySpec

Ideas

Just to add some ideas, stuff, here is a project, I'm thinking about. It talks about the concept of personal domain, which may give some ideas about multiple computer synchronization.


CategoryUdu

MultipleComputersSynchronization (last edited 2008-08-06 16:26:19 by localhost)