Changes between Version 9 and Version 10 of BluePrint/Mobile/P2PSync
- Timestamp:
- 05/29/17 15:23:08 (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
BluePrint/Mobile/P2PSync
v9 v10 3 3 4 4 == Introduction == 5 Peer-to-peer sync will enable [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines/EdenMobile EdenMobile] users to synchronize data between their devices without connecting to a server. This will allow mobileusers to operate and collaborate more easily in areas where internet access is unreliable or unavailable.5 Peer-to-peer sync will enable [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines/EdenMobile EdenMobile] users to synchronize data between mobile devices without connecting to a server. This will allow users to operate and collaborate more easily in areas where internet access is unreliable or unavailable. 6 6 7 Peer-to-peer sync capabilities exist in [http://developer.servalproject.org/dokuwiki/doku.php?id=content:servalmesh:main_page Serval Mesh] and a number of messaging apps including [https://briarproject.org/ Briar], [https://github.com/casific/murmur Murmur] and [http://whispercomm.org/shout/ Anonymouse]. 7 Peer-to-peer sync capabilities exist in [http://developer.servalproject.org/dokuwiki/doku.php?id=content:servalmesh:main_page Serval Mesh] and several messaging apps including [https://briarproject.org/ Briar], [https://github.com/casific/murmur Murmur] and [http://whispercomm.org/shout/ Anonymouse]. 8 8 9 == Stakeholders == 9 !EdenMobile users are the primary stakeholders - they will be able to use P2P sync to share data with each other. The data subjects will also be stakeholders, and appropriate data handling controls to protect the confidentiality, integrity and authenticity of data must be built in. If the server needs to be aware of P2P sync, for example in order to deduplicate data received from mobile clients, then the people deploying and operating the server will also be stakeholders. 10 !EdenMobile users will be the primary stakeholders. The data subjects will also be stakeholders, and appropriate access controls to protect the confidentiality, integrity and authenticity of data must be built in. Trainers who teach !EdenMobile users how to use the application will need to be aware of the new functionality. If the data being synchronized is ultimately delivered to a server then the people deploying and operating the server will also be stakeholders. 11 10 12 == User Stories == 11 [https://code.briarproject.org/akwizgran/briar/uploads/655c21456bbc36a83193bdb5e0473f07/SahanaEDENBrambleProjectUseCases.odt User stories] 13 [https://code.briarproject.org/akwizgran/briar/uploads/655c21456bbc36a83193bdb5e0473f07/SahanaEDENBrambleProjectUseCases.odt User stories document] 14 12 15 == Requirements == 13 16 … … 17 20 18 21 ===== 1.1. Peer visibility ===== 19 20 22 The P2P sync component '''must''' be able to make the device it is running on visible to nearby devices in order to establish a peer relationship. 21 23 22 24 ===== 1.2. Peer discovery ===== 23 24 25 The P2P sync component '''must''' be able to discover nearby devices that have made themselves visible. 25 26 26 27 ===== 1.3. Peer selection ===== 27 28 28 When peers have been discovered, the P2P sync component '''must''' allow the user to choose a device to establish a peer relationship with. 29 29 30 30 ===== 1.4. Peer authentication ===== 31 32 When the user has chosen a device to peer with, the P2P sync component '''must''' allow the user to authenticate the peer before granting the peer access to any resources. The P2P sync component '''may''' allow the user to continue without authenticating the peer. 31 When the user has chosen a device to peer with, the P2P sync component '''must''' allow the user to authenticate the peer before granting the peer access to any data. The P2P sync component '''may''' allow the user to continue without authenticating the peer. 33 32 34 33 ===== 1.5. Peer persistence ===== 35 36 When a peer has been authenticated, the P2P sync component '''may''' allow the user to store information about the peer, including information that will allow the peer to be authenticated automatically during subsequent connections. If information about a peer has been stored, the P2P sync component '''must''' allow the user to revoke the peer's access to resources. 34 When a peer has been authenticated, the P2P sync component '''may''' allow the user to store information about the peer, including information that will allow the peer to be authenticated automatically during subsequent connections. If information about a peer has been stored, the P2P sync component '''must''' allow the user to revoke the peer's access to data. 37 35 38 36 ==== 2. Destination servers ==== 39 37 40 38 ===== 2.1. Destination server configuration ===== 41 42 The P2P sync component '''may''' allow the user or an administrator to enter the details of a '''destination server''' for the data being synchronized. 39 The P2P sync component '''may''' allow the user or an administrator to enter the details of a '''destination server''' for the data being synchronized. If a destination server has been configured, the P2P sync component '''may''' deliver data to the server automatically when internet access is available. 43 40 44 41 ==== 3. Data synchronization ==== 45 42 46 43 ===== 3.1. Data selection ===== 47 48 44 The P2P sync component '''may''' allow the user to choose which data to synchronize, either with peers in general or with each specific peer. When data is received from a peer, the P2P sync component '''may''' automatically choose it for synchronization with other peers. 49 45 50 46 ===== 3.2. Data deletion ===== 51 52 The P2P sync component '''may''' allow the user to delete data from the device, regardless of whether that data has been chosen for synchronization. The P2P sync component '''may''' automatically delete data that has been received from peers, for example on receiving confirmation that the data has been delivered to a destination server. 47 The P2P sync component '''must''' allow the user to delete data from the device, regardless of whether that data has been chosen for synchronization. The P2P sync component '''may''' automatically delete data that has been received from peers, for example on receiving confirmation that the data has been delivered to a destination server. 53 48 54 49 ==== 4. Managing conflicts ==== 55 50 56 51 ===== 4.1. Conflict detection ===== 57 58 The P2P sync component '''must''' assign an identifier to each item of data chosen for synchronization, such that two peer devices performing synchronization can tell whether they are using the same identifier to refer to different data. 52 The P2P sync component '''must''' assign an identifier to each item of data chosen for synchronization, such that two peer devices performing synchronization can tell whether they are using the same identifier to refer to the same data. 59 53 60 54 ===== 4.2. Conflict resolution ===== 55 If a conflict is detected during synchronization, the P2P sync component '''may''' resolve the conflict automatically, either by merging the conflicting items or by assigning them distinct identifiers. If a conflict cannot be resolved automatically, the P2P sync component '''must''' be able to continue synchronizing other items with the peer. The P2P sync component '''may''' inform the user of conflicts that cannot be resolved automatically. 61 56 62 When a conflict is detected during synchronization, the P2P sync component '''may''' resolve the conflict automatically, either by merging the conflicting items or by assigning them distinct identifiers. If a conflict cannot be resolved automatically, the P2P sync component '''must''' be able to continue synchronizing other items with the peer. The P2P sync component '''may''' inform the user of conflicts that cannot be resolved automatically. 63 === Non-functional === 64 http://en.wikipedia.org/wiki/Non-functional_requirements 57 === Non-functional requirements === 58 59 ==== 1. Security ==== 60 61 ===== 1.1. Protection of data in transit ===== 62 The P2P sync component '''must''' ensure the confidentiality, integrity and authenticity of data in transit between peers. If a destination server has been configured, the P2P sync component '''must''' ensure the confidentiality, integrity and authenticity of data in transit between mobile devices and the destination server. 63 64 ===== 1.2. Protection of data at rest ===== 65 The P2P sync component '''must''' ensure the confidentiality, integrity and authenticity of data at rest on mobile devices, to at least the same level of protection as other components of the !EdenMobile application. 66 67 ===== 1.3. Access control ===== 68 The P2P sync component '''must''' authenticate peers, or allow the user to authenticate them, before granting them access to data. If a destination server has been configured, the P2P sync component '''must''' authenticate the destination server before granting it access to data. If a delivery confirmation from a destination server is received, either directly from the server itself or from a peer, the P2P sync component '''must''' authenticate the delivery confirmation before acting on it or synchronizing it with peers. 69 70 ==== 2. Performance ==== 71 72 ===== 2.1. Power efficiency ===== 73 The P2P sync component '''must not''' significantly reduce the battery life of the device when P2P sync is not being used. 74 75 ===== 2.2. Network efficiency ===== 76 The P2P sync component '''must not''' significantly increase the mobile data usage of the device, regardless of whether P2P sync is being used. 77 65 78 === Interoperability === 79 For each deployment, the same version of the !EdenMobile app will be used for all mobile devices, which should minimize interoperability issues. The protocols used between peers, and between mobile devices and the destination server, should use version negotiation so that any interoperability issues are detected as early as possible. Interoperability with other applications is not required. 80 66 81 === Standards === 82 Communication between mobile devices and the destination server should use HTTPS. 83 67 84 === System Constraints === 68 85 69 86 == Design == 70 87 <Where relevant include alternative design options> 88 71 89 === Data Model === 72 90 (e.g. EER or class diagrams) 91 73 92 === Workflows === 74 93 <Diagrams or Pseudocode> 94 75 95 === Site Map === 76 96 <for User Interface solutions> 97 77 98 === Wireframes === 78 99 <for User Interface solutions> 100 79 101 === Technologies === 80 102