Goals
Information we need to expose
- am I currently connected to other peers?
- am i discovering peers via network, Bluetooth?
- am i syncing via USB?
- do I have the latest version of the document?
- if not, how many changes need to be synced?
- if i'm offline, how many changes are going to be synced later?
Features
- User list
- pseudonymous name/identity
- sync status (?)
- last seen (?)
- show peers who have access but aren't online?
- Up/download status
- how much do i still need to up/download
- who am i up/downloading from/to (?)
- discovery mode
- network/bluetooth/offline
Questions
- do we expose all of these network status-related things in the same place?
- e.g. a single menu with discovery mode, user list, upload status
- which of these things need to be visible at a glance?
Relevant Art
Hedgedoc
- Only two states: offline and online (since it's not local-first)
- In online state, the button opens a list of users, can be logged in or not
- Color of people's edits is shown in the list
Offline:

Online:

Muse
- Really tries to avoid spinners (except initial setup)
- Circle is gray when nothing is happening, pulsates when network traffic is happening

Clicking the circle opens this popover, with three states
- Live (online, but not syncing)
- Syncing
- Offline with local edits
- size of local changes to be synced when you're online next time is visualized



Receiving side while syncing:

Offline state with closed menu:

Right-clicking the dot opens this debug menu:

@adz's notes on p2panda events:
💥 User: Enter document id -> join document t
➡️ Subscribe to data stream concerning document t
➡️ Find peers who are interested in the same document t
🔔 Discovered peer p being interested in document t
➡️ Connect to available peers, exchange latest document state with each of them. We sync with each discovered peer max. once (except when failed, then we re-attempt x times before giving up).
🔔 Sync started with peer p on document t
🔔 Received data (in our case it's state-based CRDTs / "snapshots") via sync from peer p on document t
➡️ Join gossip overlay via peer p (bootstrap)
🔔 Joined gossip overlay on topic t
🔔 Gossip neighbor up / down
🔔 Received data (in our case it's delta-based CRDTs / "patches") via gossip from peer p on document t
💥 = user action
➡️ = p2panda action (internal)
🔔 = p2panda event (can be subscribed)
Goals
Information we need to expose
Features
Questions
Relevant Art
Hedgedoc
Offline:
Online:
Muse
Clicking the circle opens this popover, with three states
Receiving side while syncing:
Offline state with closed menu:
Right-clicking the dot opens this debug menu:
@adz's notes on p2panda events:
💥 User: Enter document id -> join document t
➡️ Subscribe to data stream concerning document t
➡️ Find peers who are interested in the same document t
🔔 Discovered peer p being interested in document t
➡️ Connect to available peers, exchange latest document state with each of them. We sync with each discovered peer max. once (except when failed, then we re-attempt x times before giving up).
🔔 Sync started with peer p on document t
🔔 Received data (in our case it's state-based CRDTs / "snapshots") via sync from peer p on document t
➡️ Join gossip overlay via peer p (bootstrap)
🔔 Joined gossip overlay on topic t
🔔 Gossip neighbor up / down
🔔 Received data (in our case it's delta-based CRDTs / "patches") via gossip from peer p on document t
💥 = user action
➡️ = p2panda action (internal)
🔔 = p2panda event (can be subscribed)