Chat Requirements

Here are my standards for a chat application/protocol. I think that (1) they are pretty simple and (2) they are rare to find in all applications. They are listed in descending order of priority (highest priority features first).

High:

    1. Full sync: all messages (sent or received) reach all compatible devices

    2. Full history: all past messages (sent or received) can be accessed on all devices

    3. Persistent groups: a group can be created, named, and will persist indefinitely. Members continue to receive messages until they are explicitly removed from a group.

    4. Cross platform: Supports 95% (two standard deviations) of users/devices (e.g., as of 2016-12-26, iOS + Android makes up 99% of the smartphone industry, but all mobile combined does not make up 95% of users: Windows and Mac desktops/laptops also matter.) Apple has about 7% market share of desktops/laptops, but of overall web browsing, covering iOS, Android, and Windows would probably cover 95% of devices.

    5. Configurable notifications: at a granular level, notifications can be set (sound, vibrate) and can be altered by the device state (e.g., vibrate-only or silent). Missed message notification is a must.

    6. Encryption: even if it is only traditional client/server

    7. Efficient: enough that it doesn't kill battery when in background

Medium:

    1. End-to-end encryption: server cannot read messages

    2. Push-to-talk (async) voice (channel or person-to-person)

    3. Live full duplex voice (channel or person-to-person)

    4. Push-to-talk (async) video (channel or person-to-person)

    5. Live full duplex video (channel or person-to-person)

    6. Background synchronization of messages

    7. Open protocol: interoperable with third party clients

    8. Hotkeys: can change channel/person with only keyboard

    9. Cloud backup: integrates with 95% of market share of cloud storage

    10. Multi-factor auth: supports 95% of market share of multi-factor

Nice to have:

    • Searchable history

    • Perfect forward secrecy (e.g., Signal)

    • Push-to-talk works in toggle-to-talk mode.

    • Push-to-talk works in true walkie-talkie mode (immediate voice)

    • Web app

[Edit]