Open
Description
Here I will collect all information around implementing broadcast channels, similar to the ones known from Telegram/WhatsApp. As oppsosed to Telegram/WhatsApp, channels will be end-to-end encrypted in Delta Chat. Some other features known from Telegram/WhatsApp will be missing.
Implementation
Show broadcast channels in their own, proper "Channel" chat
I checked all checkboxes which I implemented in a PR, even if it's not merged yet.
Core work (#6901):
- Add new chat type
InBroadcastChannel
andOutBroadcastChannel
for incoming / outgoing channels, where the former is similar to aMailinglist
and the latter is similar to aBroadcast
(which is removed)- Consideration for naming:
InChannel
/OutChannel
(without "broadcast") would be shorter, but less greppable because we already have a lot of occurences ofchannel
in the code. Consistently calling themBcChannel
/bc_channel
in the code would be both short and greppable, but a bit arcane when reading it at first. Opinions are welcome; if I hear none, I'll keep withBroadcastChannel
.
- Consideration for naming:
- api: Add create_broadcast_channel(), deprecate create_broadcast_list() (or
create_channel()
/create_bc_channel()
if we decide to switch)- Adjust code comments to match the new behavior.
- ASK Desktop developers what they use
is_broadcast
field for, and whether it should be true for both outgoing & incoming channels (or look it up myself)- I added
is_out_broadcast_channel
, and deprecatedis_broadcast
, for now
- I added
- When the user changes the broadcast channel name, immediately show this change on receiving devices
- Allow to change brodacast channel avatar, and immediately apply it on the receiving device
- Make it possible to block InBroadcastChannel
- Make it possible to set the avatar of an OutgoingChannel, and apply it on the receiving side
- DECIDE whether we still want to use the broadcast icon as the default icon or whether we want to use the letter-in-a-circle
- We decided to use the letter-in-a-circle for now, because it's easier to implement, and I need to stay in the time plan
- chat.rs: Return an error if the user tries to modify a
InBroadcastChannel
- Add automated regression tests
- Grep for
broadcast
and see whether there is any other work I need to do - Bug: Don't show
~
in front of the sender's same in broadcast lists
UI work (deltachat/deltachat-android#3783):
- Rename "broadcast list" to "channel" or "broadcast channel" both in UI and code (depending on whether it's important to be concise in the particular place). There are new stock strings in which
broadcast_list
is replaced withchannel
- Adapt to the new chat types
InBroadcastChannel
andOutBroadcastChannel
for incoming / outgoing channels, where the former is similar to aMailinglist
and the latter is similar to aBroadcast
(which was removed) - Adapt to the new
create_broadcast_channel()
API
UI Testing:
- Creating a channel
- Adding/removing members from a channel
- Set a channel avatar, and check that receivers see it after sending a message
- Change the channel name, and check that receivers see it after sending a message
- On the receiving side of a channel, check that it's not possible to send a message
- On the receiving side of a channel, check that it's possible to block the chat
- On the sending side of a channel, check that it's possible to add and remove members, and that the shown texts are correct (e.g. "Remove X from Channel?" instead of "Remove X from Chat?")
- Both on the receiving and sending side of a channel:
- In that chat, open the 3-dots menu, and check that things look fine
- In the chat, check that the subtitle is correct
- Open the profile page for a channel, and check that things look fine
- Check that ephemeral messages actually disappear
Symmetrically encrypt broadcast channels
Channels need to be symmetrically encrypted, because if we encrypted them asymetrically, like we do for all other messages:
- with some technical expertise, it would be possible to find out who the other recipients are
- when there are a lot of recipients, the messages would be very big.
This will need a lot of work (like new QR codes) which I'll write about later.
- Talk to some PGP experts that the general idea is fine