Streamers may want to directly collaborate with one another via a shared live experience such as a multiplayer game, tournament, challenge, podcast/panel discussion, etc. with their respective communities. Co-streaming should allow these creators to share their streams simultaneously with viewers on each participants’ channel.
The base feature should cover, but not be limited to, the following requirements:
- Streamers should be able to host a co-stream and invite other streamers to it.
- Invitees should be able to accept, decline, or block an invitation.
- A co-streaming-specific block list should be maintained and should include the chat blocked users list by default.
- A host should be able to start or stop a co-stream. Invitees should be able to join or leave a started co-stream.
- A host should be able to create/maintain a co-stream without the need to be live.
- At the very least, two streamers should be able to co-stream and both streams should be viewable on the standard stream page.
From speccing out this feature, it is clear that it will be a very large code change and such I believe it would be a good idea to break it into phases:
- Phase 1 – base feature, create/maintain co-streams; invite others; basic qualifications; block list maintenance; join/leave co-stream; stream page modifications to view co-streams.
- Phase 2 – chat relay
- Phase 3+ – changes based on community feedback.
Here, streamers will be able to turn on co-streaming (off by default), turn on whether to use the tags/category defined by the co-stream when joining one, begin the “create a new hosted co-stream” flow, manage their co-stream specific block list, and be able to respond to invitations from other streamers or join a started co-stream they previously accepted an invitation for.
Streamers must meet minimum criteria to participate in co-streams:
- Their account must be a least 5 days old
- They must not be platform banned and their channel must not be deactivated
- They must have an email-verified account
- They cannot invite other streamers that are blocked in their chat or co-stream blocked
- They cannot be invited by other streamers they have them blocked
Co-streaming is off by default as I strongly believe in a “opt-in” approach where it makes sense to do so. Using the category/title/tags defined in the co-stream should also be off by default since it is a destructive operation (it will replace the title/category/tags of the participants’ streams).
In an effort to keep the body of the settings page to a reasonable length, the process of creating a co-stream (hosting) should take place on a child page.
Here the streamer can see all the co-streams they have been invited to or accepted and they can manage their block list. In the actions column, the following buttons will be available depending on the status of the invitation:
|Pending||Accept||Sets the invitation to accepted status. Streamer is now visible to other invitees via the “Show Participants” button|
|Pending||Reject||Sets the invitation to rejected status. Only the host can see rejected invitations.|
|Pending||Block||Removes the invitation and adds the host to the block list|
|Rejected||None||Rejected invitations are hidden by default|
|Accepted||Block||Removes the invitation and adds the host to the block list. If necessary, will change the co-stream status from ‘ready’ to ‘waiting’ if there are no other accepted invitees|
Allows the streamer to block or unblock other streamers from inviting them to co-stream. Note that streamers already blocked in your chat also cannot invite you to co-stream. Additionally, this blocking does NOT prevent you from participating in a co-stream with a blocked streamer if neither of you are the host.
The act of unblocking another streamer will re-enable all invitations (if any) and their status (accepted/pending) with that streamer.
For our purposes, creating a co-stream designates you as the “Host”. As the host, you dictate when a co-stream takes place, who is invited to the co-stream, and what layout the co-stream should adopt when viewed on the participants’ stream pages. Some points of note:
- There is no limit to the number of streamers that can be invited to a co-stream. However, only a maximum of 6 participants can join at the same time.
- The visibility of the participants’ streams will be dictated by the layout chosen. For “stacked right” and “stacked left” there will be 4 visible streams and 2 “swappable” streams shown as icons (“swappable” means viewers can, at their discretion, swap one of the visible streams for one of the invisible ones thus making it visible). For “host only”, only the host’s stream will be visible.
- Co-streams can be long-lived – streamers are encouraged to “re-use” a co-stream they’ve created as often as they like.
- The host can optionally set an appropriate category/activity/tags for the co-stream. This will allow participants to automatically use those settings if they desire. The title will also be automatically used but is required to create the co-stream.
- Streamers can be invited as “Guests” – this means that their invitation will expire after they have joined and then left the co-stream. To join the co-stream in the future, they will have to be re-invited.
Work-in-progress concept of the streaming page look and feel:
Any feedback/suggestions are greatly welcomed!