← → to navigate · N for notes · F for fullscreen

Pacific Northwest Drupal Summit · October 17, 2026

Building the Chat Layer for Drupal Groups (and Beyond)

John Locke · Freelock

Thank you to our sponsors

Thank you to the Summit sponsors: Acquia, Slalom, Diffy, Tag1, imageX, MindSing, Affinity Bridge, Morrison Multimedia, Sandstorm, Blue Drop, Woolwich Web Works, and Tugboat.

opening · John Locke · PNW Drupal Summit

You have been assigned to communications testing

Create your account while we get underway.

www.drupal-matrix.dev/user/register

Three tasks. No lab coat required. Participate or just observe.

Groups Initiative context

If you have a Matrix account, join #fleet:drupal-matrix.dev.

Scan to register

Different spacecraft. Shared history.

A homeserver per arklet

Conversation with Matthew Hodgson · May 29, 2016

John compares Matrix homeservers to Seveneves arklets. Matthew replies “hell yeah :D” and describes resyncing history when spacecraft rejoin, and reading newly synced scrollback.

The original conversation ↗

the missing return path

Notifications aren’t a conversation.

Drupal ⇄ Matrix

Content + community ⇄ conversation + federation

Basic sync → Identity → Application service → Entity mapping

basic sync · activity 1

Publish a node. Bring the reply back.

Drupal node → Matrix message → Matrix reply → Drupal threaded comment

“We received your distress call. Why is it dated tomorrow?”

Continue someone else’s story in one or two sentences.

Open the transmission ↗

identity

Who actually said that?

  1. Sign into Matrix using Drupal credentials.
  2. See the linked account on the Drupal profile.
  3. See a Matrix reply attributed to the Drupal username.

application service · activity 2

A linked identity. A place in the fleet.

Room + user namespaces → rooms inside a space → live posting rights

Read-only → link account → allowed to post

Introduce yourself and propose one rule for the fleet.

Join the fleet ↗

entity mapping

Where does the conversation live?

A dedicated map service—not fields required on every entity type.

  • Group ⇄ Space / room
  • Node ⇄ Space / room / thread
  • Comment ⇄ Event, with or without thread structure

reading experience · activity 3

Would you move your family into this?

Read two critiques. Reply to one. Revisit the first.

ACT: fetch on demand · fetch ahead · show bodies upfront

Open the design review ↗ · Optional loading comparison ↗

Concept habitat design for critique

internal Matrix case study

Connected doesn’t mean solved.

  • Can you find this thread six months later?
  • Which discussions deserve their own room?
  • Useful automation—or somebody else’s noise?

not done yet

A shared conversation. Not yet every feature.

  • Reactions
  • Widgets
  • Polls, spoilers, and other Element features
  • Media: images and video

beyond Groups · discussion

Where would your community take this?

Built for Drupal Groups first.
The pattern goes beyond Groups—and Drupal.

www.drupal-matrix.dev

Groups Initiative context ↗ · Matrix API ↗ · ACT ↗