mikaela.github.io/pages/matrix.markdown
Aminda Suomalainen 5042758bd0
pages/matrix: attempt to explain DAG splits in addition to state resets
apparently they are the same, but different,
while the same, and some communities I
participate in appear to be experiencing
them unintentionally in worse forms than
my Dendrite invisibility.
2022-09-29 23:31:45 +03:00

15 KiB
Raw Blame History

Just like IRC, Matrix has became a part of my social life online. My room can be found from my discuss page alongside some protocol comparison and my main accounts are in index.

I also have a txt with a list of all my accounts which has SSH signature.

Note that this section is manually updated and might be missing some links.

Questions and Answers

Where else can I read about Matrix?

Why so many accounts?

In my opinion its preferable to have multiple accounts on different homeservers for ensuring decentralisation instead of having a single authority in power and being able to issue commands from multiple servers in case of federation meltdown which multiple rooms experienced during the period of room version 9 before homeserver software started to nag on unintentionally open registration refusing to start. Additionally state resets are a good reason to keep old accounts around.

Why do you use Matrix URI scheme instead of matrix.to?

I dislike matrix.to as a concept. Its a centralized service on decentralized protocol and in my opinion it shows lack of self-esteem on Matrix side considering neither XMPP or IRC require something like it, both of those trust being known or handled appropiately.

What are ghost and puppets?

They are related to bringing Matrix to other protocols or vice versa.

  • A ghost is a Matrix account on another protocol like IRC or XMPP (controlled from Matrix).
  • A puppet is the opposite, a Matrix account controlled from another protocol such as IRC or XMPP (the controller/puppetmaster being the user there).
  • A double-puppet is when you are using both protocols and have connected them to each other such as a message from Discord appears as your real Matrix account and message from Matrixx appears as your real Discord account instead of something virtual only existing due to the bridge.

What are state resets?

The term is used least in two different scenarios:

  • when your display name and/or avatar return back to what they were previously without anyone doing anything.
  • more seriously when the Matrix federation decides that the room is actually in the past adding/removing users who were (or werent) in the room at that time. This also affects administrator/moderator access.

This issue was supposed to be fixed at room version 2 with Stare Resolution Version 2, but regardless still happens in all versions after that. If you are affected, your best bet is to /upgraderoom {{site.matrixLatestRoomVersion}}, which is a bit distruptive operation as all your users have to join the upgraded version and all homeservers involved must support it.

You shouldnt just trust me or the variable on this site on what is the latest version, consult the Spec and add Version Checker or Fluff Generator or their sibling to your room and once they join, !servers upgrade {{site.matrixLatestRoomVersion}} replacing the {{site.matrixLatestRoomVersion}} with your target version.

How about DAG splits?

DAG splits are a phenomenon somehow related to state resets above, but instead of all servers accepting the same old state, they disagree and split to different directions with varying severity.

In minor case some servers may decide that a user is not in the room and not display messages from them, while in more severe situations the room may practically be two different rooms with no new messages in common between different sides kind of resembling IRCs netsplits before sync.

People understanding state resolution (which by the way dont include me) disagree on the exact cause only agreeing that its difficult to fix. From what is told to me, I understand it to be tracked in the same Synapse issue #8629.

What are these idlekicks for inactivity, why are they for?

Some Matrix rooms decide to connect their channel to IRC maintaining the same users on both sides, which can be heavy for the IRC network depending on bridge type of which there are three “major” variants:

  • matrix-appservice-irc which creates a ghost for every Matrix user on the IRC side. All of these pretend to be separate clients, so if you have 1000 ghosts at IRC, all internal PING/PONG (keepalive) traffic will be sent 1000 times every few minutes and so will every message received.
  • heisenbridge has two modes, either it acts as a IRC bouncer keeping everything separate for every user or a single bot connection to IRC while creating puppets for IRC users to use at Matrix. It also supports RELAYMSG for more modern IRC networks.
  • matterbridge is the most lightweight of the three working as a traditional relaybot on both sides. Unlike the others, it doesnt require selfhosting your own homeserver making it the most accessible for those with less resources and the option I use whenever possible. Sadly it doesnt look that great without RELAYMSG support I live in hope of Matrix implementing one day.

As matrix-appservice-irc very quickly becomes traffic-intensive, its operators generally have agreement with IRC networks (or are IRC networks by themselves) to remove unused connections after a month or three of inactivity, which is judged by lack of public read-receipts anywhere the bridge can see. It could have been implemented better pretending to be a server instead, which would have a problem of practically being root and thus not many IRC networks would open their door to a third party bridge and the Ergo IRCd doesnt even support server linking (opting to be HA instead, but more of that in “Why should I use Matrix instead of IRC?”).

Being a server would also resolve IRC users getting annoyed by huge disconnection floods whenever matrix-appservice-irc restarts as it could be batched by the IRCd users are connected to.

The issues of matrix-appservice-irc grow worse when the room has bridges to other protocols, as those grow the IRC user count, use nicknames (sometimes capturing nicknames of people using both protocols and may be difficult to regain if the bridge doesnt answer to !irc nick SomethingElse) especially when the other protocol doesnt support direct/private messages and doesnt have even that excuse of using a connection slot.

I hope this answer helped explain why this behaviour exists and that IRC users arent opposed to bridging out of malice.

But the relaybots look so ugly

IRC users have dealt with them since always, I tend to use Limnoria IRC bot which is forked from Supybot and has had the Relay plugin (for relaying messages between multiple IRC networks) since possibly before Wed Feb 2 06:45:35 2005 +0000 and I imagine it was far from the first IRC relay.

This means that even before IRCv3 RELAYMSG and displayname proposals, which I wish to merge so modern clients could show displaynames and legacy RELAYMSGs, there have been client-side solutions that have also been evolving:

  • Irssi I havent used personally, but I hear it has a detelexify that looks a bit like its made with Heisenbridge in mind.
  • WeeChat used to have a separate script for this, but at version 1.1 in gained the Trigger plugin able to perform actions without scripts, thus meaning you can use something like this Relaybot 2 Trigger example without having to install anything (while /script would be easy too).

I hope Matrix will get better at this too.

Which client do you recommend?

The one that fits your needs. Personally I mix-and-match:

  • FluffyChat on mobile
    • I am a Finnish translator and moderator. It does multiple accounts.
  • hydrogen.element.io PWA mainly on mobile, sometimes on desktop
    • Its the only Matrix client that is yet to log me out randomly, very stable, multiple account support and so far the only Matrix client running on Nokia 1 (TA-1047).
  • develop.element.io / Element flatpak on desktop
    • /devtools is essential (see my critiques), and they dont support Fedora.
  • Nheko nightly flatpak on desktop
    • I am a Finnish translator, its actually the most Spec-complete client in my experience without long delays before something becomes supported and its lightweight probably for being a native app instead of Electron.

Which homeserver do you recommend?

I am hesistant to recommend any. Finnish users may be interested in the Linux.fi wiki listing, everyone else may be served by joinmatrix.org listing.

Why dont you run your own?

As can be read between the lines from my critiques, I dont consider any homeserver to be in the state that its either safe to run legally or lightweight enough or not require constant maintenance as opposed to IRC which I do selfhost.

The world situation in general discourages me from anything as heavy.

Why cannot I see history in your Matrix rooms?

Matrix doesnt support self-destructing messages or message expiry in general, so I dont feel comfortable with world-readable logs (which would easily end to search engines forever).

If you need to see something in the backlog, I suggest using IRC (IRC@Etro or PirateIRC especially) or XMPP which each store messages only for 7 days (Ergo default) or some months (Prosody default) on a single server.

I am told that I should Matrixify my IRC channel, what does that mean?

You are likely using IRCnet and I am sorry that you have to deal with this raider group. It means some mix of:

  • setting a Matrix avatar to the room
  • removing the # from the name of the Matrix room
  • setting a main alias to the Matrix room that doesnt contain the IRC networks name
  • bridging to Matrix in a way that Matrix user (that may not be you) has full power over the room, potentially also over the bridge bot
    • be careful if you are told to answer a bot yes in a /query!

Why should I use Matrix instead of IRC?

No reason, if IRC suits you better than Matrix. As I have said before, I find maintaining IRC easier. IRC also tends to work better for me in poor network conditions and with IRCv3 specifications and implemented draft proposals, it can be very pleasant modern experience without the issues that come from federation.

There is a usecase for every tool and while federation is important feature in general I am yet to miss it in IRC.

I keep mentioning Ergo IRCd, which scales, has serverside history and integrated bouncer feature so its just a matter of adding it to your IRC client alongside your SASL credentials and you will receive your offline messages whenever you reconnect. Ergo also supports RELAYMSG making messages from other protocols seem more native to read and many graphical IRC clients even provide integrated image uploading support.

Pirate Party of Finland considers Ergo-based PirateIRC and its webchat a reasonable fallback should we have to leave other protocols or they would be unusable otherwise.

Why isnt Pirate Party of Finland using Matrix?

This goes a bit past my personal Q&A, but we are using it kind of as a “tech demo”. However it cannot currently mature past that as:

  • we dont have people interested in Matrix (obviously excluding me).
  • we dont have resources for hosting a Matrix homeserver, while we had IRC before we were founded.
  • moderation tools are so bad its only me dealing with them (see critiques near top of the page).
  • Matrix flagship clients, Element Web, Element Android and Element iOS dont support knocking which has been supported by Matrix Specification since September 2021 or so meaning users of those arent able to request access to our rooms.

If you want in, you may knock using Nheko. Additionally/Alternatively your best bet is to come to #verkkopalvelut and tell AmindaSuomalainen your Matrix ID in a nice message (to show you arent a bot) that you wish in.

So do you wish Matrix to fail?

No, I have been using countless of hours at writing these critiques and performing “quality assurance”/testing, localizing clients to Finnish, providing support on their rooms for users of those clients, writing a Matrix Spec Change proposal (that was merged), having coauthored another, writing or contributing documentation in two languages and whatever else I have been doing since 2016.

Matrix has a place in my heart, just as IRC and XMPP and while none of the three are perfect, I wish for the issues get resolved and the fighting between them to end and I am tired of the “stop having fun” or “you are worse person for still using deprecated IRC” or “I wish IRC/XMPP just died already as its so old” or whatever attitude I see amongst certain Matrix user/enthustiastic groups.


The lucky Matrix number is {{site.matrixLatestRoomVersion}}, but do consult the Spec for that and definitely ask !servers upgrade {{site.matrixLatestRoomVersion}} from Version Checker or Fluff Generator or their siblings.