i
welcome
Licensed under CC-BY 4.0 :: Daniel Hromada ()
Daniel Hromada
Berlin University of the Arts

CC-BY 4.0

welcome

Matrix is an open protocol for communication.

Element is one client - one window into the Matrix.

Let us begin with the things you can actually use.

Matrix is not Element

Matrix is an open communication protocol.

Element is an application that speaks Matrix.

Other clients (e.g. SchildiChat), bots, scripts, artworks and artefacts can speak Matrix too.

Think: Web is not Firefox.

A tiny Matrix alphabet

@alice:matrix.org - a user

#seminar:udk.ai - a human-friendly room alias

!XyzAbc:udk.ai - the actual room ID

$eventID - an event

@ means a person

@alice:matrix.org

@d.hromada:medienhaus.udk-berlin.de

A Matrix user has a globally addressable identity.

The part after : belongs to the identity too.

Different people in one conversation can belong to different homeservers.

# means a room address

#digitaleducation:udk.ai

This is a human-friendly room alias.

It can point to a room whose underlying ID looks more like:

!XyzAbc:udk.ai

So # is what humans like to remember; ! identifies the room itself.

: denotes the homeserver

Matrix is a protocol for communication between homeservers

:HERE-COMES-THE-HOMESERVER-DOMAIN

most populated one :matrix.org

UdK one  :medienhaus.udk-berlin.de

The ones I operate  :m3x.baumhaus.digital , :udk.ai...

many German universities and communities (e.g. Chaos Communication Club) already run their own homeserver

Rooms

Rooms are where communication happens.

A room can contain two people or thousands.

It can be private, public or invite-only.

It can persist for years.

Participants do not all need accounts on the same server.

IMPORTANT: Direct message between two people is also a room (e.g. You can invite other people into it later).

Spaces

A Space organizes rooms.

A PROJECT can have a Space containing discussion rooms, working rooms and archives. Example: midap:medienhaus.udk-berlin.de

Or there can be TOPIC-related spaces: AI:medienhaus.udk-berlin.de

Or a special FUNCTION: #archive:udk.ai

Technically, a Space is itself a special kind of Matrix room.

Your first superpower

/join #kitchen select the midap-kitchen and send the command

Type /rainbow My first rainbow !

and send it.

🌈

Become the narrator

Try:

/me enters the Matrix

Instead of an ordinary message, Element displays an action.

This is also a small cultural fossil from IRC-style online communication.

There is much, much more ...

In the message box, type:

/

Element can show slash commands supported by your particular version.

IMPORTANT: The chat box is also a tiny command line.

(some nice commands /myroomnick /myroomavatar /jumptodate /invite ...)

Write richly

**bold**bold

*italic*italic

`code`code

```code block``` → code block

> quote → quote

[link text](https://example.org) → link

Element supports richer textual communication than plain SMS-style chat.

Hide a spoiler

Some text should not immediately be visible.

Select it and format it as a spoiler.

Everyone else has to reveal it deliberately.

Useful for stories, puzzles and answers.

Correct yourself

Send: Matrxi is wonderful

On desktop, press Up Arrow.

Edit the previous message.

Send the correction.

The conversation remains readable instead of accumulating correction messages.

React

👍 ❤️ 😂 🤔 🎨

A reaction can answer without adding another full message to the timeline.

Several people can react to the same message.

For a large group, reactions can become an instant lightweight vote.

Reply

Imagine Peter has written five messages.

You could write: Peter, regarding what you said above...

But which message?

Reply points explicitly to the particular message you mean.

The relationship remains meaningful even after another 100 messages arrive.

Threads

Reply: I am responding to this.

Thread: Let us have a conversation about this.

Threads keep a substantial side-conversation attached to its originating message without filling the main timeline.

A simple communication policy

Just write when the context is obvious.

Reply when the context might be unclear.

Thread when a conversation within the conversation develops.

@mention when you specifically want someone's attention.

Stay on topic.

Polls

A Matrix room can contain polls.

For example:

Had you heard of Matrix before today?

○ Yes

○ No

○ I thought this presentation was about the movie

Pin it

Some messages should not disappear into history.

Meeting link.

Deadline.

Current document.

Important decision.

Pin important messages so the room can function as more than an endless stream.

Link to a message

Individual messages can be referenced.

Instead of saying:

Look somewhere in the discussion from last Tuesday...

copy a permalink to the relevant message.

Communication becomes addressable.

Control your attention

Not every room deserves the same amount of attention.

Some rooms: notify me about everything.

Some rooms: mentions only.

Some rooms: silence.

Good communication infrastructure should let the recipient control attention.

Control your read receipts

Element can expose settings controlling read-receipt behaviour.

A tiny setting with an important consequence:

When should other people learn that I have read something?

Privacy is not only about encryption. It is also about metadata and social expectations.

Search encrypted conversations

End-to-end encryption creates an interesting problem.

If the server cannot read your messages, how can the server search them?

Element Desktop can maintain a local search index for encrypted message history when the corresponding feature is enabled.

Search can therefore happen on your machine rather than by giving plaintext to the server.

Federation

@alice:matrix.org

@bob:udk.ai

@carol:example.net

They can all meet in one room.

Matrix is designed so communication does not require everybody to have an account with one central provider.

Homeservers

Your Matrix account belongs to a homeserver.

The homeserver participates in rooms on your behalf and communicates with other homeservers.

An institution can operate its own.

A community can operate its own.

Yet their users can still communicate.

The Web analogy

Firefox is not the Web.

Thunderbird is not email.

Element is not Matrix.

Element is one implementation of a client speaking an open protocol.

Underneath the chat

So far we have seen users, rooms, messages, replies and reactions.

Matrix sees something more general.

Events.

A message is an event.

A reaction is an event.

An edit is an event.

A room-name change is an event.

$ means an event

$someEventIdentifier

Events can have identifiers.

This allows one event to refer to another.

A reply can point to a message.

A reaction can point to a message.

An edit can point to the event it replaces.

The Matrix alphabet revisited

@ - Who?

# - Which human-friendly room address?

! - Which actual room?

$ - Which event?

Four little symbols reveal a large part of the architecture.

Open the trapdoor

Try /devtools on an Element installation where developer tools are available.

The friendly interface gives way to the underlying Matrix events.

What looked like a messenger starts looking like a programmable distributed communication system.

Relationships

Replies, reactions, edits and threads are not merely graphical decorations.

They can be represented through relationships between Matrix events.

The UI hides this complexity - until we want to inspect it.

Element is optional

A browser can speak Matrix.

A phone can speak Matrix.

A terminal script can speak Matrix.

A Raspberry Pi can speak Matrix.

A sensor can speak Matrix.

An artwork can speak Matrix.

A bot or AI agent can speak Matrix.

A communication substrate

Once communication is based on an open protocol, the interesting question changes.

Not: Which chat application do we use?

But: What kinds of communicating things can we build?

Five things to remember

1. Matrix is the protocol; Element is a client.

2. @ users and # room aliases are globally addressable.

3. Replies preserve context; threads organize substantial side-conversations.

4. Federation allows different servers to participate in shared rooms.

5. Underneath the friendly interface is a world of addressable events.

One last command

/rainbow Slava Ukrajine.