Waasabi development update: Chat Integrations
Quick update after field-testing one of Waasabi's upcoming chat integration feature on Monday's Berline.rs Meetup!
The Waasabi framework intentionally leaves the well known "stream chat" functionality out of the package. The reason for this is not just the sheer complexity of implementing an accessible and abuse-resistant chat client, but is also based on the observation that most communities in Waasabi's target group will already have a chat system they were be using for the community and integrating these would be preferable than a wholly new, separate system just for the chat accompanying the stream.
— RustFest (@RustFest) November 2, 2020
An early prototype of Waasabi's chat integration from RustFest Global 2020
Access control and moderation of the stream chat is also an ever-present issue: to prevent abuse, some kind of access control for the chat is desirable for most communities. With existing event platforms, we have often found support for this lacking and reek with privacy compromises. That said, there is clear vlaue in providing frictionless access to the discussion even to those who may not want to join the chat channels for the broadcast: we accomplish this by displaying the ongoing discussion in a read-only fashion on the stream. As it is often with these things, this ends up being a balancing act and matter of personal preference, and so we are still experimenting with the best approach to exposing this feature in the user interface.
Chat messages are relayed in real time and display on the Waasabi page
For every community out there, there is a plethora of community platforms to choose from. Waasabi's chat support thus has been designed with a high degree of modularity and freedom in mind: by exposing a generalized Chat API that accepts new chat messages over a regular HTTP endpoint we can support various services through chat integration plugins. These plugins are usually external services that act as bridges between the network in question and Waasabi's backend, which takes care of forwarding incoming messages to clients following the active broadcast.
Waasabi's first such bridge integrates with the Matrix network. The plugin is written in the Rust programming language, and relies heavily on the Ruma framework for communicating with the Matrix network. Developed by Jan-Erik Rediger to support the RustFest Global event in 2020, the Matrix integration is currently undergoing work to bring its full feature set, such as private invites and handling of multiple rooms to Waasabi for the upcoming first public release.
Other integrations are also planned, Discord and Slack are two networks we are actively looking into bridging early on, but thanks to the open nature of Waasabi's API, it should be relatively easy for adopters of the framework to bridge any other network to their instance, even if Waasabi may not have out-of-the-box support for them.