Embracing Matrix for Enhanced Communication: Migrating the
WordPress Community from Slack to Matrix
Alex Kirk
Alex Kirk
- From Vienna, Austria
- At Automattic (runs WordPress.com & more) since 2014
- Engineer, leading teams around Localization & Matrix
- Sponsored to contribute to WordPress.org in Meta and Polyglots
- Sideprojects in the decentralized web space
How the WordPress project collaborates
https://make.wordpress.org/
- 22 "Make" teams: Accessibility, Core, Design, Polyglots, ...
- Each team has
- A P2 (=blog) for announcements, proposals, decisions, etc.
- (Bi-)Weekly chat meetings for sharing updates, coordination
- A defined time at which you know you can reach project participants to discuss issues and figure out a path forward
- Meetups & WordCamps: e.g. Asia (March 5-7 in Taipei, Taiwan), EU (June 13-15 in Turino, Italy), US (Sep 17-20 in Portland, OR)
The Plan to migrate
- January 25, 2023
- January to April 2023
- Evaluate and create the Matrix infrastructure
- May to September 2023
- Migrate history and integrations, test with teams
- October to December 2023
- Launch, finalize migrations, turn off Slack
Things we anticipated
- People are no fans of change
- We needed to provide a superior solution to convince them
- Complexity
- People are not used to decentralized systems and might struggle
- Lock-In
- Over the years we've built many integrations with Slack that need to be migrated
Slack & an open source community
- Complexity through E-Mail-based signup with invites
- Common issue at WordCamps where we onboard new people
We have a guide for this → disconnected experience
- Message retention
- 10,000 / 90 days message history limit for free plans
- Data is siloed behind Slack’s doors
- But: Slack is used in many companies, easy to just add one more workspace for WordPress
Matrix & an open source community
- Federation has been designed so that anyone can join
- Login via existing authentication system (SSO / OIDC)
- No retention limits
- Unite multiple Slack workspaces (e.g. for local communities)
- Open Source chat for an Open Source project
Making it easier to join Matrix 1/2
OpenID Connect Server WordPress plugin
- Makes your WordPress an OIDC provider
- → WordPress.org users can login with their account
Making it easier to join Matrix 2/2
Chatrix: Matrix client in a WordPress block
- Block = part of a WordPress post that can be placed anywhere
- Each Chatrix block can be configured individually
- Predefine a home server, optionally restrict to a single room
- Based on Hydrogen with upstream contributions:
Creating a new post with a Chatrix block
Making the Migration easier with a bridge
- Created the users on the homeserver with a script
- Slack bridge
- We’re using a forked version of matrix-appservice-slack
- Extended the bridge to puppet users on the Matrix side since we know the users exist
Migrating history seamlessly
We figured out this process to avoid gaps in the Matrix room history
- Create room and bridge it (it won't have history)
- Create a second room and migrate the history there
- Add all users who are in the room in Slack
- Import in sequence, backdating events (appservice)
- If a user is no longer in the room, we re-invite them
- Copy events from the first room to catch up with real-time
- Change room aliases, reattach bridge, delete old room
Matrix Server
community.wordpress.org
- Synapse
- Slack bridge
- OpenID connect configured
- Migration appservice
- We migrated
- ~ 3m messages in ~170 rooms
- ~ 45k users
- ~ 55GB database size
The Migration!
- November 30, 2023
- Plan
- Actively ask people to use Matrix instead of Slack
- Before the final migration, post "good bye" messages to all Slack channels and link our guides
- Finally, disable posting to Slack channels
- (turns out, disabling DMs in Slack is not possible)
Feedback we anticipated
- Most people don't want to choose clients, they want to go with the standard provided → Element
- Notification Management in Element
- No dedicated threads and mentions view
- Cannot mark message as unread
- Search in Element: No filters, (global) search discoverability
- Other clients miss important features like threads
- All the troubles that come with providing a homeserver for any community member (e.g. unrestricted room creation)
We had to stop the migration
- December 11/12, 2023
- Accessibility Problems were too big, pushback from our community. We submitted patches #12189 #12190
- Uncertainty around
- Where our UI needs are on element-web's roadmap
- Effect of the license changes of Synapse et al to AGPL
- Alignment of Element's goals with WordPress's ethos
Current Status
- Making WordPress remains a Slack community...
- ...but now with a Matrix bridge and all Slack history
- New contributors don't need a Slack account
to join chat conversations
- Turning off Slack is currently not planned
- WordPress keeps observing how the Matrix project develops
Summary
- The WordPress community didn't fully migrate in the end
- Maybe things that didn't work for us are not relevant for you
- Hopefully this talk could help you identify & decide
- Open Source contributions along the way