🐈

Introduction to Matrix for Researchers Tired of Slack

に公開

Introduction to Matrix for Researchers Tired of Slack

Flexible and Sustainable Research Communication Enabled by a Decentralized Chat Protocol

If you're involved in multiple international collaborations or interdisciplinary projects, you may find your number of Slack workspaces gradually increasing—making it difficult to manage them all.
Even sending a simple DM requires remembering which workspace to use, and notifications become fragmented.

To address these issues, I recently migrated to Matrix + Element. As a decentralized protocol, Matrix is exceptionally well-suited to academic collaboration. This article introduces its key features and how researchers can make the most of it.

Note: Matrix has issues with message search in multilingual environments. Please use it in English for best results (see Troubleshooting section below).


Getting Started

Download and launch the client app from the download page, then create an account on matrix.org.
Alternatively, you can launch the Element web client from the same page and register there. Using the web client for registration tends to reduce potential issues.

Please set the Element Desktop app to English mode for an accurate search for English terms.


What is Matrix?

Matrix is a decentralized, open chat protocol. Users create accounts on arbitrary servers known as homeservers.
Crucially, users on different homeservers can communicate seamlessly, regardless of server affiliation.
(For researchers, the default homeserver matrix.org—which is free—should be sufficient.)

For example, users like @alice:uni-wien.at and @bob:myuniv.jp can freely send DMs or join the same room.
This is in stark contrast to Slack, where workspaces are siloed.


Case Study: TU Wien

At TU Wien (Vienna University of Technology), Matrix has been adopted as the official chat platform, branded as TUmatrix.
The university’s IT department hosts the homeserver, and researchers can use their university accounts to log in directly.

🔗 Official TUmatrix Page

This shows how Matrix can serve as robust infrastructure even at the institutional level.


Organizing Rooms with Spaces

Matrix offers a feature called Spaces, which works similarly to Slack’s workspaces, allowing for hierarchical organization of rooms.
Example setup:

  • Lab Space

    • Seminar Announcements
    • Paper Reading Group
    • Lounge Chat
  • International Collaboration Space

    • Theory Subgroup
    • Experimental Subgroup
    • General Meetings

Such nesting makes it easy to manage multiple concurrent research projects.


Two official clients are recommended:

  • PC / Web: Element
    → Stable and feature-complete—ideal for academic use.

  • Smartphone: Element X
    → Designed as a next-gen client: extremely fast, lightweight, and E2EE-compatible.
    Note: Space view is not fully supported yet; all rooms are shown in a flat list.

Avoid using the older "Element Messenger" app, which is known for slow syncing.


Message History is Not Deleted

In Matrix, chat history is generally retained.
As long as you remain in the room, past messages are searchable.

This is vital for academic communication:

  • Preserves long-term discussions
  • Stores seminar logs and meeting minutes
  • Archives early-stage ideas and review comments

File Sharing and Storage Location

Uploaded files are stored on the user’s homeserver.
For example, if @you:matrix.org uploads a file, it's stored on matrix.org.

While matrix.org is a robust and free public server, avoid storing large files long-term.
Consider contributing to the ecosystem via paid options like Element One.


Hosting Your Own Homeserver

For most research use cases, matrix.org suffices.
However, you may want to host your own server if:

  • You need project-level account management
  • You want to handle large files
  • You have custom data retention policies

With Synapse (the official server implementation), self-hosting is relatively easy.
Alternatively, use a service like modular.im for hosted solutions.

One of Matrix’s core strengths is that users on custom homeservers can still interact seamlessly with others.


Security: Supports End-to-End Encryption (E2EE)

Matrix supports end-to-end encryption.
Private rooms are encrypted by default, and neither messages nor attachments can be read—even by the homeserver.

No complex configuration needed—Element handles encryption automatically.


Usage from Mainland China

In mainland China, domains like matrix.org and vector.im may be partially restricted.
If Element connectivity is unstable, consider routing these domains through a VPN.

Using Shadowsocks (gfwlist)

Add the following lines to gfwlist.js to route the required domains through VPN:

"||matrix.org",
"||vector.im",

Troubleshooting

Element still has a few issues worth noting.

Old Messages Cannot Be Decrypted on a New Device

When logging in from a new device, older messages may fail to decrypt, displaying an error such as "Unable to decrypt message".
This usually occurs when encryption keys were not properly synced across devices.

Solution

  1. On your existing device:
    Go to SettingsSecurity & PrivacyEncryptionAdvancedExport keys
    Export the decryption keys to a file and transfer it to the new device.

  2. On the new device:
    Go to SettingsSecurity & PrivacyEncryptionAdvancedImport keys
    Import the keys from the previously exported file.


Message Search Fails in Multilingual Environments (e.g., Japanese)

Sometimes even clearly visible words fail to appear in search results.

Cause

  • Element Desktop builds its search index based on the current UI language.
  • Non-Western languages (e.g., Japanese, Korean) are not tokenized properly during index creation.

Workaround

Switch to an English UI and rebuild the search index:

  1. Go to SettingsSecurity & PrivacyMessage searchManage
  2. Disable and then enable message search again

This will rebuild the index using English-language tokenization, which works reliably for English content.

Ongoing Fix

A patch is currently being proposed to improve multilingual search support:
GitHub Issue #2883

Discussion