2018-04-20 15:40:46 +00:00
---
2018-05-07 02:58:02 +00:00
id: 099-confidence
2018-04-20 15:40:46 +00:00
title: Confidence in Messaging
2018-05-10 05:08:52 +00:00
status: Active
2018-04-20 15:40:46 +00:00
created: 2018-03-22
category: core
2018-05-10 05:08:52 +00:00
lead-contributor: PombeirP
2018-04-20 15:40:46 +00:00
contributors:
- lukaszfryc
- dmitryn
- chadyj
- nikitalukianov
- jpbowen
- hesterbruikman
exit-criteria: yes
success-metrics: yes
clear-roles: yes
future-iterations: yes
---
2018-05-10 05:08:52 +00:00
# Preamble
2018-03-29 03:13:54 +00:00
Idea: 99
Title: Confidence in Messaging
2018-04-18 11:46:50 +00:00
Status: In Progress
2018-03-29 03:13:54 +00:00
Created: 2018-03-22
## Summary
2018-05-10 05:08:52 +00:00
2018-03-29 03:13:54 +00:00
As end users we currently don't have confidence that messages are being sent, delivered and read. This swarm aims to address this.
## Swarm Participants
2018-05-10 05:08:52 +00:00
- Lead Contributor: @PombeirP
2018-04-18 11:46:50 +00:00
- Testing & Evaluation: @lukaszfryc
2018-05-10 05:08:52 +00:00
- Contributor (Clojure): @cammellos
- Contributor (Clojure): @dmitryn
2018-04-09 10:47:13 +00:00
- PM: @chadyj
2018-04-18 11:46:50 +00:00
- UX: @nikitalukianov @jpbowen @hesterbruikman
2018-03-29 03:13:54 +00:00
## Product Overview
We currently don't have confidence in the reliability of messaging in Status. The reasons for this lack of confidence ranges all the way from how 'read' status is displayed in the app, to trivial - and non-trivial - bugs, to bad uptime of critical infrastructure, to how push notifications are decoupled from Whisper messaging, to a fundamental lack of (understanding of) reliability guarantees Whisper protocol provides.
What all these issues have in common is that they cause the end user to not have confidence in their messages being delivered and read. This swarm aims to attack this from a user point of view. It is expected additional swarms might be spawned for more core technical areas as these are identified (e.g. network visibility or push notifications v2).
### Product Description
2018-05-10 05:08:52 +00:00
2018-03-29 03:13:54 +00:00
This section is based on user feedback spawned as part of 75-status-everyday (https://docs.google.com/document/d/1pkfZWxr9I0AqidEuOfogzxEXrcg6ofs2bUkh-HSKD6o/edit)
1. Messages should always be sent.
2018-05-14 13:48:19 +00:00
- Generally: lack of trust in messages being sent
- Provide better feedback of when messages are or aren’ t sent
- Allow re-send of individual messages a la Whatsapp
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
1. Messages are in wrong order.
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
- Confirm fixed in 1on1
- Make decision re migrations for old messages
- Understand and clarify work needed for private group / public (placeholders)
- Design: Deal with right order but “message arriving too late” (see sidebar)
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
1. Messages lack timestamps.
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
- This appears to contribute to a lack of confidence in messaging
- Design (then dev): Add this to UI
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
1. Messages don’ t arrive despite being sent, or they arrive late.
- Disambiguate offline from mail server node copy
- Understand what is needed to make mail server HA
- Give user feedback while it is fetching messages (non-instant)
- Understand if there are more reasons messages would arrive late
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
1. Messages should always be delivered, 100% of the time.
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
- Similar to 1 but stronger
- What happens if mail server goes down?
- Can we implement read/re-send semantics at Whisper level (mailserver)?
- Look into how read receipts can be improved
- Clarify UI a la Whatsapp double-tick
- Consider tracking send/delivered ratio as a metric
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
1. Offline inboxing not working in public chat.
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
- Clarify perf dependency on smooth-ui swarm
- While perf is being worked on, educate user about offline only being 1-1
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
1. Perception of lack of notifications.
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
- UXR: understand expectation - for non-contacts? Public chats? in-app?
- Separate PN swarm, clarify dependency with this swarm
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
1. Get notification but nothing visible in app.
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
- PN delivery being decoupled from Whisper delivery, see point 7 above
- Clarify dependency on PN v2 swarm and where work done
1. Perception of never received messages from other people.
- Investigate if same as filter while offline bug and current limitations
- More 7: Investigate non-contact PN possibility
- More 7: Public chat PN?
- UXR: Understand this problem and perception better
1. Sometimes need to change mail server manually to get messages working.
- Make failure of individual mail server apparent and prompt switching
- Automated switching?
- How ensure no switching is necessary? (HA, see 4)
2018-03-29 03:13:54 +00:00
### Requirements & Dependencies
2018-05-14 13:48:19 +00:00
- ~~[Request messages history after background](https://github.com/status-im/status-react/pull/3493)~~
- ~~[New protocol](https://github.com/status-im/status-react/pull/3273)~~
- [New Status App communication protocol idea ](https://github.com/status-im/ideas/blob/master/ideas/087-new-protocol.md )
2018-03-29 03:13:54 +00:00
2018-04-18 11:46:50 +00:00
### Security and Privacy Implications
2018-03-29 03:13:54 +00:00
2018-04-18 11:46:50 +00:00
None currently known.
2018-03-29 03:13:54 +00:00
2018-04-18 11:46:50 +00:00
### Iteration 1
2018-03-29 03:13:54 +00:00
2018-04-18 11:46:50 +00:00
Complete several reliability improvements that have been identified so far:
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
- ~~[#3827 Message reliability survey](https://github.com/status-im/status-react/issues/3827)~~
- ~~[#3793 Improve timestamps in chat messages](https://github.com/status-im/status-react/issues/3793)~~
- ~~[#3787 Improve network offline and mail server error messaging](https://github.com/status-im/status-react/issues/3787)~~
- ~~[#3784 Provide users with delivery status feedback when sending messages](https://github.com/status-im/status-react/issues/3784)~~
- ~~[#3792 Measure message send/receive ratio on internal builds](https://github.com/status-im/status-react/issues/3792)~~
- ~~[#828 Send an expiration signal when envelope wasn't delivered to any peer](https://github.com/status-im/status-go/pull/828)~~
- ~~[#810 Notify clj side when the message actually "left" local node.](https://github.com/status-im/status-go/issues/810)~~
- ~~[#3785 Remove "seen by everyone" from public chat](https://github.com/status-im/status-react/issues/3785)~~
2018-03-29 03:13:54 +00:00
2018-04-18 11:46:50 +00:00
### Iteration 2
After iteration 1 is complete the swarm will meet and discuss the results of the UXR survey, send/receive ratio results, review current UX and discuss future iterations. Work will then be planned for a future iteration, or the swarm will be closed.
## Exit Criteria
- >99% message deliverability from [#3792 ](https://github.com/status-im/status-react/issues/3792 )
2018-03-29 03:13:54 +00:00
## Success Metrics
2018-05-14 13:48:19 +00:00
- 95% of a group of 100 users surveyed - who don't have additional context beyond Status providing a p2p IM capability - using the app for an extended period of time, should answer 'yes' to the question: "Do you trust Status to deliver messages for you?" (and possibly variants of this).
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
This is fundamentally a soft or qualitative goal. It is thus necessary but not necessarily sufficient, and additional harder numbers might be used as we develop the capability to measure this.
2018-03-29 03:13:54 +00:00
2018-05-14 13:48:19 +00:00
- Zero instabug reports within 30 days of alpha release
2018-03-29 03:13:54 +00:00
## Copyright
2018-05-10 05:08:52 +00:00
2018-03-29 03:13:54 +00:00
Copyright and related rights waived via [CC0 ](https://creativecommons.org/publicdomain/zero/1.0/ ).