Element X is a Bad Neighbour
I’m chanop on several IRC channels. Most of the time this makes no difference on how I interact with a channel. A few months ago I was asked to configure a Matrix bridge for a channel on OFTC, one of the very few IRC networks who still offer a Matrix bridge. The setup of the bridge went fine, and the people on the Matrix side do their best to make sure the Matrix bridge doesn’t make the IRC side a nightmare to use. The people are trying their best, but what if the client they choose makes a mess for them, with no way for them to even tell it is doing this?
This is how I learned of the difference between Element, and Element X. The old Element, without the X, is not causing too many issues. There’s the regular issues that come with a protocol supporting much more modern features trying to interoperate with a protocol that is much more limited, such as long or multi-line messages, or media uploads. I think there should be some way for Matrix rooms to put limits on use of these features to improve the situation for the bridged rooms. Such attributes should be optional, as some people see the IRC side as “legacy” and only bridge it to make the transition smoother.
But my issue is not with the bridge itself, but with one particular client. You see, every other Matrix client I’ve seen used does this one little thing correctly. I’m talking about mentions, or highlights as they’re more commonly known as on IRC. For the majority of clients, this is translated correctly to the IRC nickname, making it easy for both sides of the bridge to see who is being referred to.
Element X, however, decided to ignore the Matrix spec here, and dump a blob of Markdown to the IRC bridge, which then does not get translated properly. This causes the IRC side to get some Markdown URL referencing the Matrix username of the user mentioned. This Matrix username is also not guaranteed to be the same as the nickname used, in which case the IRC side gets a Markdown URL referring to a name that they have no knowledge of. This in turn makes it impossible for the IRC side to infer who was mentioned.
Now, it so happens that I am a Matrix user myself, so I can actually join the Element X room and report this. At my first attempt I was not aware of the Matrix spec on this issue, so I mostly inquired why this was done. The people in this room were not particularly interested in hearing their client was wrong, and I was instead told it must be an issue with the IRC bridge. Highly unlikely, since every other client does not cause this behaviour. After insisting it must be the client, luckily a more technically literate user came into the discussion. He listened to my actual complaint, compared two Matrix messages (one from Element, one from Element X), and took to the spec to see that I was correct about it being a client-specific issue. From the spec he also gathered that Element X was in the wrong here.
Two months pass, the issue still persists, so I go back to the Element X room on Matrix, and ask for an update. Immediately I’m told this must be an issue with the bridge. Me linking to the earlier discussion was ignored, and several people told me I should not complain about this, because the devs are doing their best. I’m not saying the devs are not doing their best, but if they decide not to follow the Matrix spec, and are causing a mess because of it, it seems odd not to be allowed to point this out.
One person points out that the devs will not consider anything to fix unless it is reported to Github, a service I refuse to use for various reasons. This immediately gets a laughing reaction, and I get told to either use Github, or accept that Element X will simply cause issues for others. In fact, the people get so upset at me for telling them Element X should follow the spec and definitely not make a mess of other rooms, that I get called a “troll” and someone even calls upon a room admin to get me banned.
Luckily, just like last time, a single technically literate user actually takes time to read my issue, compares two messages, and reads up on the spec. Turns out, again, I was not wrong. He is not unwilling to use Github, and tells me an issue for this behaviour was already filed. A year ago. No signs of it getting any attention soon.
This does make me a little annoyed to say the least. Element X decides to make a mess of other places, and pointing it out in their own room just makes the majority of the room antagonistic against you. Reporting the issue on Github clearly doesn’t have much effect either. It makes it very hard to take Element X seriously as a modern chat client in my opinion. They cannot even implement their own specs correctly!
The advice I was given in the end was to simply… kick Element X users and tell them to use a different client. But that doesn’t solve the underlying issue, and shifts the blame instead to users of the Matrix client who are doing their best to interoperate nicely. There is also no way to proactively identify the use of an Element X client user, so you have to wait until it messes up in the channel and then punish people for something they had little means of being aware of.
To me, this is clear behaviour of a bad neighbour. Making a mess for others, then refusing to clean it up; instead they get upset at people for pointing out the mess they’re making. I want to urge Element X to clean up their act, their current behaviour is only causing more resentment to all Matrix users.