sync/sync_ux.md
author Thomas
Thu, 27 Jun 2019 09:29:20 +0200
branchsequoia_windows
changeset 3878 37426cf0d1fe
parent 3556 8e33bdbe4698
permissions -rw-r--r--
Merge with ENGINE-581
     1 # p≡p Sync UX
     2 
     3 Sync is a protocol to form one device group. It first is driving a
     4 transaction named the Negotiation. There are two situations Sync can be
     5 in:
     6 
     7 1. either there is no device group yet
     8 2. or there is already a device group
     9 
    10 ## Case 1):
    11 
    12 In case 1) we have two devices in the state Sole. When the user
    13 configures the first device, nothing happens. When the user configures
    14 the second device, it will detect that there is another device being in
    15 state Sole.
    16 
    17 The two devices detect each other. Both are showing a dialog asking the
    18 user: “There is another device detected. Shell we form a device group?”
    19 
    20 There are three possible answers:
    21 
    22 1. Accept
    23 1. Reject
    24 1. Cancel
    25 
    26 If one of the devices gets a Cancel, then the device group is NOT
    27 formed. Sync remains enabled on both devices. This is corresponding with
    28 a ROLLBACK of the Negotiation.
    29 
    30 If one of the devices gets a Reject, then the device group is NOT
    31 formed. Sync then is disabled on both devices. This is corresponding
    32 with a COMMIT of the Negotiation with the result REJECT.
    33 
    34 If both devices get an Accept, then the device group is formed. Sync is
    35 then enabled on both devices. This is corresponding with a two-phase
    36 COMMIT of the Negotiation with the result ACCEPT.
    37 
    38 ## Case 2):
    39 
    40 In case 2) we have at least two devices forming a device group already
    41 (named “old devices”), being in state Grouped. And we have one device,
    42 which is not yet in a device group (named “new device”), being in state
    43 Sole.
    44 
    45 The new device and the old devices detect that there is a new device,
    46 which could join the existing device group. The new device is showing
    47 a dialog with “There is already a device group. Shell this device join?”
    48 Possible answers are Join/Accept, Reject and Cancel. The old devices are
    49 ALL showing a dialog with “A new device is detected. Shell we accept
    50 the new device as new member in our device group?” Possible answers are
    51 Accept, Reject and Cancel.
    52 
    53 If one of the devices gets a Cancel, then the new device is NOT added to
    54 the device group. Sync remains enabled on all devices. This is
    55 corresponding with a ROLLBACK of the Negotiation.
    56 
    57 If one of the devices gets a Reject, then the new device is NOT added to
    58 the device group. Sync remains enabled on the old devices, but gets
    59 disabled on the new device. This is corresponding with a COMMIT of the
    60 Negotiation with the result REJECT.
    61 
    62 Only if the new device gets an Accept and at least one of the old
    63 devices gets an Accept, then the new device is added to the device group.
    64 Sync then remains enabled on the old devices, and gets enabled on the
    65 new device. This is corresponding with a COMMIT of the Negotiation with
    66 the result ACCEPT.
    67 
    68 Key sync is starting while Sync is taking place. The Sync dialog is a
    69 Trustwords dialog offering Trustwords to check for the user. User's
    70 decision is not only based on if she/he wants to have a device group in
    71 case 1) – or – if she/he wants to add a new device to an existing device
    72 group in case 2), but also on the question, if the Trustwords on the
    73 two handled devices (either the two Sole ones or the new one and one of
    74 the old ones) are identical.
    75 
    76 Because there is a Trustwords check, from then on the connection is
    77 becoming green, and secret keys will be sent and shared on all devices
    78 being member of the same device group.
    79 
    80 When Sync is switched off on a device, then it leaves the device group
    81 it is in. A Key reset is needed then on the remaining devices, dealing
    82 out new group keys for all own identities.
    83 
    84 Sync can be switched on in two ways:
    85 
    86 1. Switched on for all (default in p≡p apps)
    87 2. Switched on only for a list of accounts (reached by switching it off
    88    first)
    89 
    90 If Sync is enabled in 1) then adding a new account will have Sync for
    91 this account, too, implicitely.
    92 
    93 If Sync is enabled in 2) then adding a new account will have Sync
    94 switched off for this account by default.