Embracing Matrix for Enhanced Communication: Migrating the

WordPress Community from Slack to Matrix

Alex Kirk
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

What is WordPress?

How the WordPress project collaborates


  • 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)

Five for the Future


The many pillars of WordPress

About 640 people from 186 identified companies contributed to WordPress 6.3


Overview of the Making WordPress.org teams including meeting times
Calendar view of the WordPress.org community meetings

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:

Team Chat Pages

Making WordPress Polyglots Team chat page Making WordPress Polyglots Team chat page with highlighted upper section containing the next meeting time Making WordPress Polyglots Team chat page with highlighted lower section containing the Matrix chat

Chatrix FOSDEM Demo


This will use WordPress Playground to load a WordPress in your browser client-side with the Chatrix plugin installed and a demo


Creating a new post with a Chatrix block

Making it easier to join Matrix

We host a preconfigured Element Web

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

  1. Create room and bridge it (it won't have history)
  2. 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
  3. Copy events from the first room to catch up with real-time
  4. Change room aliases, reattach bridge, delete old room

Matrix Server


  • Synapse
    • Slack bridge
    • OpenID connect configured
    • Migration appservice
  • We migrated
    • ~ 3m messages in ~170 rooms
    • ~ 45k users
    • ~ 55GB database size

Updating the community

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)

Community collected issues 1/2


Community collected issues 2/2


Addressing Issues 1/2

Addressing Issues 2/2

We had to stop the migration

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


  • 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

Thank You!


(Lots of links in the slides)