This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

Overview

The goal of ZeroConf Note Sharing is to make Tomboy note sharing dirt simple and enabled "right out of the box". This includes Phase 1 and Phase 2 mentioned on Tomboy/NoteSharing.

Architecture

http://live.gnome.org/Tomboy/NoteSharing/ZeroConf?action=AttachFile&do=get&target=MdnsRecordDiagram.png

1. mDNS Service Type

The service type for a shared Tomboy client is:

    _tomboy._tcp.local.

2. mDNS Service Name

When Tomboy is running on a machine that has enabled note sharing, the machine must be advertised as an mDNS service. Since there may be multiple computers on the same subnet with the same host name (though not likely), a unique identifier (GUID) is prepended to the service name. This is the name that will advertise a Tomboy client on the local network:

    <Machine GUID>-<Machine Host Name>._tomboy._tcp.local.

When sharing is first enabled, Tomboy will generate a GUID for the machine and store it in GConf under /apps/tomboy/sharing/guid. The GUID will then be used to advertise shared notes.

Example:

    GUID: 01570188-e414-48ff-af79-748269d0fcb6
    Host Name: bht-tp
    mDNS Service Name: 01570188-e414-48ff-af79-748269d0fcb6-bht-tp._tomboy._tcp.local.

3. Text Records

mDNS text records allow other clients to know more information about the mDNS service being advertised on the network.

The following text records will be used for broadcasting a Tomboy client:

    name=<"Shared name" as typed by the user in the sharing preferences dialog>
    port=<HttpListener port that clients can use to communicate with this Tomboy service>

4. Message Types/HTTP API

I haven't decided what implementation would be the best for actually transferring the note data back and forth between machines yet, but the following things will need to be present:

Possible transport implementation:

Sharing Preferences

http://live.gnome.org/Tomboy/NoteSharing/ZeroConf?action=AttachFile&do=get&target=SharePrefsMockup.png

A Tomboy Client can be configured to share in the following states:

Preferences

Sharing Browser

http://live.gnome.org/Tomboy/NoteSharing/ZeroConf?action=AttachFile&do=get&target=ShareBrowseMockup.png

This is kind of a dual-purpose dialog. It allows users to:

If sharing is not enabled, the dialog should not show anything but an "Enable Sharing" button that takes them directly to the "Sharing" page in the Tomboy Preferences Dialog.

Once sharing is enabled, the dialog will show all Tomboy clients it can see on the local network. Clients that have previously been configured to be synchronized will show the latest synchronization status (i.e., "22 notes, synchronized 3 minutes ago").

If a highlighted machine has synchronization enabled (password protected), the "Configure Synchronization" button should be enabled and allow the user to enter the synchronization password. If a highlighted machine does not have synchronization enabled, the synchronization buttons will not be enabled. If synchronization has already been configured, the "Configure Synchronization" button should be disabled and the "Disconnect Synchronization" should be enabled. Prompt the user "Do you really want to..." when they press "Disconnect Synchronization".

By default, each machine should should a TreeView expander (little arrow image) (a dummy row should be added to the TreeStore to cause this to happen). When the user clicks the expander to expand the row, the following should happen:


2024-10-23 10:58