Draft hypothesis: If we set up a public Matrix server, bridge it to select Slack and IRC channels, and invite staff and community to test it, we’ll know whether Matrix is a viable solution for incident response and understand the associated costs.
Test plan:
- Clients:
- All the use cases below should be tested on the web interface (Element), and the Android and IOS apps (ElementX, presumably - it's slightly less feature complete than the old Element app, but that one is abandonware).
- The more fundamental use cases should also be tested with the Windows / Mac / Linux desktop apps (not a dealbreaker if those don't work well, they are basically just browser-in-a-box, but nice to know)
- Basic UX:
- Is the interface in general intuitive and easy to use?
- Does it meet basic accessibility checks?
- Is it easy to format rich text, add images etc?
- Is the thread implementation decent?
- Can users see messages from before they joined (if the channel is configured accordingly)?
- Is it reasonably fast?
- Is it easy to create a new room? Is it easy to bridge it?
- Is the Slack bridge reasonable, in either direction? (See here for more specific questions.)
- Is the IRC bridge reasonable, in either direction? (Can it handle long messages? Does it degrade rich text etc. reasonably? Does it degrade complex actions like message editing? Past pain points have been netsplits, flood control on the IRC side, and side effects of IRC anti-abuse functionality (especially setting +r).
- Stretch goals: bridge to Discord, Telegram, Mattermost (WMDE instance)
- Inviting users to a public channel:
- Ask someone with a Wikimedia SUL account to join a channel (this assumes we'll use SUL login as the only Matrix authentication method - we could have multiple, but that brings its own mess) and see if the UX is reasonable
- Check especially how the username discrepancy between Wikimedia (basically any character, can be very long) and Matrix (basically ASCII) is handled
- Same for someone who doesn't have a SUL account
- Test how easy it is to use a wiki page link to join if you already have Matrix set up
- Test specifically the user experience for someone who is already using Matrix but on a different home server (this is probably a pain point at least on apps which don't support multiple accounts, so we need how to work around that)
- Ask someone already using Matrix to find a given topic via channel search
- Ask someone with a Wikimedia SUL account to join a channel (this assumes we'll use SUL login as the only Matrix authentication method - we could have multiple, but that brings its own mess) and see if the UX is reasonable
- Inviting users to a private channel:
- A user who is on Matrix gets invited to a private channel
- A user who is not on Matrix gets invited to a private channel (is there some built-in workflow to invite them before their account gets created?)
- A user who is on Matrix requests to be invited to a private channel (is there a "knock" feature?)
- Pings / presence
- Is there a way to configure the client to show when you are online? What if there are multiple clients (e.g. browser + a mobile phone)?
- Is there a way to configure the client to not show when you are online? (We probably want that to be possible for privacy reasons.)
- Can you publicly ping (@-mention) someone who is using Matrix? Is the phone notification reasonable? Is the desktop notification reasonable? How easy is it to find out their username?
- Same for private ping (direct message)
- Is it possible to watch (get notified for all comments in) specific channels / threads?
- Are there reasonable notification controls (work time, priority channels)?
- Can you publicly + privately ping someone who is using Slack? How easy is it to find out their username?
- Can you publicly + privately ping someone who is using IRC? How easy is it to find out their username?
- Bot API
- Port 1-2 IRC bots over to Matrix. Should involve some complex formatted output, and controls (e.g. the bot reacting to ! tags). Test whether it works reliably, can take advantage of the richer format of Matrix, still appears reasonably on IRC, and the DX of the porting process (is the Matrix documentation good? community support? are there good libraries? is it easy to debug?)
- Port over a Slack bot that uses features unavailable in IRC (e.g. reacji controls) or if there isn't anything, come up with a mock use case.
- Moderation tools
- Do basic moderation options (deleting another user's message, voicing/silencing, kicking/banning, opping/deopping) work well and are they easy to use?
- Do they carry over reasonably over the IRC bridge?
- Is there a reasonable flagging/reporting functionality? How flexibly can reports be routed?
- Can users protect themselves on their own (e.g. use blocklists)?
- (more privacy/legal than moderation) Is it possible to limit how long messages are retained? Can it be done per channel?
- Maybe we should try out Mjolnir or Draupnir, although at our scale probably not needed.
(This only includes user testing criteria. SRE and ITS will probably have their own criteria about evaluating self-hosting and compatibility with the existing office infrastructure.)
ITS would suggest testing the following items about Administration and governance:
- Are there approval controls for third party extensions (allowlists, blocklists, admin approval triggers, audit trails, etc.)?
- Are there data retention controls?
- Can we use SCIM to automate user creation, update, and deactivation/deletion?
- Can we set up enforce an Okta SSO integration (SAML or OIDC) for our email domain (wikimedia.org)?
- Can we configure authentication polices for native logins (e.g., password requirements, MFA enforcement)?
- Can admin roles with customized privileges be created and applied to groups of users?
- What kind of reporting metrics can be accessed via the admin user interface or the API?