Schedule
Development (Overview)
- Connection Handling
- Mailbox to Owner key agreement
- Introduction Protocol
- Mailbox Handling
- User Interface/ Setup
- Documentation
- Tests
- Review
Time Estimates
Feature | Detailed | Estimate (Days) |
---|---|---|
Connection Handling | 15 | |
Use contact transport properties for mailbox connections | 2 | |
Update poller implementation | 4 | |
Update handling for incoming connections | 4 | |
Update connection registry to handle direct/mailbox connections separately | 2 | |
Implement handlers for sync/mailbox sessions | 3 | |
Mailbox to owner key agreement | 5 | |
Mailbox pairing without contact types | 2.5 | |
Handle owner mailbox without dedicated contact type | 2.5 | |
Introduction protocol (Mailbox to contacts) | 5 | |
Mailbox handling | 8 | |
Implement chunking | 3 | |
Implement session handling files/writing & sync sessions | 5 | |
User interface/setup | 5 | |
Documentation | 10 Days | |
Tests | 30 Days | |
Review | 35 Days | |
Total | 113 Days |
Discussion
Connection Handling
- Where? Bramble (plugin)
- Who? Mailbox/Briar dev
-
What? Implement handling and identification of incoming and outgoing connections for the mailbox.
- Update poller to establish mailbox connections when necessary (Private and contact mailboxes)
- Add callbacks/handler to plugin poll() function to handle mailbox/contact connections separately
- Implement connection identification for incoming connection from a contact to the mailbox
- Add transport properties for mailbox connections and messages stored on the mailbox
- Update Connection Registry to handle direct/mailbox connections separately
Tasks
-
Discussion
- Instead of using dedicated contacts, we use multiple entries in a contact's transport properties for a contact's mailbox
- Separate connection handling and session handling. (Connection manager passes connections to sync/mailbox session handlers)
- Since only the mailbox receives mailbox connections, and since the mailbox ONLY receives mailbox connections we might be able to simplify handling by identifying whether bramble is running on the mailbox vs. briar
- The poller will handle when connections to a mailbox are established. (If a contact can't be contacted otherwise)
- The poll functions of the plugins will get a receiver depending on the connection type (contact/mailbox connections)
- We can only identify a connection's type (contact/mailbox/private mailbox) after we read the tag. Hence the connection manager should identify the connection's type and pass it to an appropriate handler
- Different handling for mailbox/direct connection is required. (Online status for contacts)
- Implementation
- Documentation
- Tests
- Review
Owner (Briar) to Mailbox: Key agreement and contact management
- Where? Bramble (key agreement) / Briar and Mailbox keyagreement
- Who? Mailbox/Briar dev
-
What? Implement "pairing" between owner and their mailbox. Includes contact management of the owner's mailbox
- Contact handling for private mailbox in briar.
- Update key agreement to use contact handling introduced in 1)
- Handle Mailbox deletion
Tasks
- Discussion
- The owner's mailbox is stored as a contact but needs special treatment as compared to other contacts:
- Use a unique contact Id (?)
- Mailbox must be ignored in contact lists
- Implementation
- Documentation
- Tests
- Review
Introduction Protocol
- Where? Bramble (introduction)
- Who? Mailbox/Briar dev
-
What? Implement introduction between owner's contact and their mailbox.
- Design state machine for introduction based on #1231
- Implement BSP client for mailbox introduction.
Tasks
-
Discussion
- Error handling: Ensure mailbox/owner contact lists are in sync and recover after failure (Do we need a Mailbox Protocol request to synchronize contact lists?)
- Contact deletion during introduction
- Implementation
- Documentation
- Tests
- Review
Mailbox Handling
- Where? Bramble (mailbox)
- Who? Mailbox dev
-
What? Implement Mailbox Sessions, File chunking and update the Mailbox protocol.
- Chunked files for sync streams
- Storage for chunked files (structure/maintenance)
- Mailbox sessions for creating/sending chunked files
- Session creation (connection management) and file recovery (up/download continuation)
- Protocol for chunk exchange (mailbox protocol)
- Handle Contact deletion
Tasks
-
Discussion
- File structure (BDF lists)
- structured reading/writing (caching?)
- storage maintenance
- CHUNK_FIN
- briar/briar#1374 (closed)
- Implementation
- Documentation
- Tests
- Review
User Interface/ Setup
- Where? Mailbox / Briar
- Who? Mailbox/Briar dev , UI/UX
-
What? Implement Mailbox and Briar user interfaces.
- Design and implement "pairing" interface for Briar and Mailbox
- Design Status overview for Mailbox and Briar
Tasks
-
Discussion
- Implement setup procedure for android/pc
- Implementation
- Documentation
- Tests
- Review