cap channels to 500 subscribers
value
- absent a signald replacement, channels past a certain size experience crippling message lag, and degrade system-wide behavior by causing health-check failures that trigger auto-restarts
- until we replace signald to provide better high-throughput availability, we would like to prevent channels from getting to the size where they degrade performance in this way
- SO: let's cap all new channels to 500 members, and existing channels to their current size (providing a per-channel threshold that can be raised upon special request via
BOOST IT
- this will allow users of channels both big and small to have reasonable message lag and availability pending a deeper technical fix with
signalc
behavior
JOIN flow
GIVEN a new channel #foo with 500 subscribers
- WHEN a rando sends
HELLO
- THEN the rando will not be added to the channel and will recieve a message that says
Sorry, this channel has reached its limit of 500 subscribers.
GIVEN an existing channel with 600 subscribers
- WHEN a rando sends
HELLO
- THEN the rando will not be added and will receive the same message as above
GIVEN a new channel with 499 subscribers
- WHEN a rando sends
HELLO
- THEN the rando will be added to the channel and receive a welcome message
INVITE flow
GIVEN an new channel #foo with 500 subscribers
- WHEN an admin or subscriber sends an invite to one person:
INVITE <some rando's number>
- THEN the rando will not be invite to the channel
- AND THEN the inviting admin/subscriber will recieve a message that says
Trying to invite 1 new subscriber? Sorry, this channel has reached its limit of 500 subscribers.
GIVEN an new channel #foo with 499 subscribers
- WHEN an admin or subscriber sends an invite to one person:
INVITE <some rando number,>
- THEN a pending invite record will be creatd for therando
- AND THEN the inviter and invitee will receive the standard invite notifications
GIVEN an new channel #foo with 499 subscribers
- WHEN an admin or subscriber sends an invite to many people:
INVITE <some rando number, some other rando number>
- THEN neither rando
- AND THEN the inviting admin/subscriber will recieve a message that says
Trying to invite 2 new subscribers? Sorry, this channel has reached its limit of 500 subscribers.
GIVEN an existing channel with 600 subscribers
- same as above
ACCEPT flow
GIVEN an new channel #foo with 500 subscribers
- AND an invite that was issued to a rando before the channel reached 500 subscribers
- WHEN the rando tries to accept the invite by sending
ACCEPT
- THEN the rando will not be invited to the channel
- AND THEN the rando will recieve a message that says
Sorry, this channel has reached its limit of 500 subscribers.
GIVEN an new channel #foo with 499 subscribers
- AND an invite that was issued to a rando before the channel reached 500 subscribers
- WHEN the rando tries to accept the invite by sending
ACCEPT
- THE rando is added to the channel and receives the standard welcome message
GIVEN an existing channel with 600 subscribers
- same as above
Admin exemption
GIVEN an new channel #foo with 500 subscribers
- WHEN an admin tries to add a new admin with
ADD <some number>
- THEN the new admin is added as normal
maintainer overrides
GIVEN a new channel with 500 subscribers
- AND GIVEN a maintainer has used
psql
to set the channel'smemberLimit
to600
- WHEN a rando sends
HELLO
- THEN the rando will be added to the channel and receive a welcome message
user-facing docs
WHEN a user goes to signalboost.info/how-to
- THEN, they will see the following useful text in the
Getting Started
section:
4. Send announcements to (up to 500) subscribers
Now, any anyone who sends "HELLO" to your channel number will get announcements you send out!
You can publish your channel phone number on Instagram or keep it to a close circle. Importantly, after your channel hits 500 subscribers new members will be prevented from subscribing until existing subscribers leave. Your channel will also take longer (up to 10mins) to send out broadcasts the larger it grows.
If you are in an urgent situation and would like to request a larger channel you can do so via 947-BOOSTIT (+1-947-800-5717). However, large channels put stress on our servers and team.
We are working hard to make Signalboost support channels bigger than 500, but that work requires time and resources. You can help us get there by [donating!](/donate)
implementation
- add a
subscriberLimit
field to thechannels
table that defaults to500
- run a migration that sets the
memberLimit
for all existing channels to either500
or the current membership count (whichever is larger) - add a docs guide for how to change the
memberLimitField
- conditional subscriber count checks in
maybeAddSubscriber
andmaybeIssueInvite
out of scope
- it might be nice to have a
boost
command to raise member limits on an ad-hoc basis without shutting down the app to usepsql
. we defer that work to a later card (#373 )
Edited by aguestuser