This weekly roundup thread is intended for all culture war posts. 'Culture war' is vaguely defined, but it basically means controversial issues that fall along set tribal lines. Arguments over culture war issues generate a lot of heat and little light, and few deeply entrenched people ever change their minds. This thread is for voicing opinions and analyzing the state of the discussion while trying to optimize for light over heat.
Optimistically, we think that engaging with people you disagree with is worth your time, and so is being nice! Pessimistically, there are many dynamics that can lead discussions on Culture War topics to become unproductive. There's a human tendency to divide along tribal lines, praising your ingroup and vilifying your outgroup - and if you think you find it easy to criticize your ingroup, then it may be that your outgroup is not who you think it is. Extremists with opposing positions can feed off each other, highlighting each other's worst points to justify their own angry rhetoric, which becomes in turn a new example of bad behavior for the other side to highlight.
We would like to avoid these negative dynamics. Accordingly, we ask that you do not use this thread for waging the Culture War. Examples of waging the Culture War:
-
Shaming.
-
Attempting to 'build consensus' or enforce ideological conformity.
-
Making sweeping generalizations to vilify a group you dislike.
-
Recruiting for a cause.
-
Posting links that could be summarized as 'Boo outgroup!' Basically, if your content is 'Can you believe what Those People did this week?' then you should either refrain from posting, or do some very patient work to contextualize and/or steel-man the relevant viewpoint.
In general, you should argue to understand, not to win. This thread is not territory to be claimed by one group or another; indeed, the aim is to have many different viewpoints represented here. Thus, we also ask that you follow some guidelines:
-
Speak plainly. Avoid sarcasm and mockery. When disagreeing with someone, state your objections explicitly.
-
Be as precise and charitable as you can. Don't paraphrase unflatteringly.
-
Don't imply that someone said something they did not say, even if you think it follows from what they said.
-
Write like everyone is reading and you want them to be included in the discussion.
On an ad hoc basis, the mods will try to compile a list of the best posts/comments from the previous week, posted in Quality Contribution threads and archived at /r/TheThread. You may nominate a comment for this list by clicking on 'report' at the bottom of the post and typing 'Actually a quality contribution' as the report reason.
Jump in the discussion.
No email address required.
Notes -
Let’s talk about Matrix/Element.
With the Telegram CEO getting gotten and Twitter being banned, you may have heard Matrix/Element shilled as a potential alternative platform for communication. There’s also talk of interoperable messaging in Europe, and the pipedream of Matrix being involved. Unfortunately, Matrix/Element is a dead end, but it’s worth talking about. Information gathered from lurking Matrix discussions as well as private DMs.
I
In 2016, the folks at New Vector ltd. decided to make an end-to-end encrypted and federated instant messaging service. They created Riot.im (now known as Element), which communicated over a new protocol they called Matrix. Under the Matrix protocol, users on independent homeservers could communicate with each other, similar to Mastodon/ActivityPub. Also similarly, independent implementations of the protocol are able to communicate in the network. Like Misskey can communicate with Mastodon, apps such as FluffyChat can use Matrix to communicate with Element.
New Vector struggled to get Element off the ground, first positioning it as a Slack alternative. They even snapped up the declining Github-centric im service Gitter and subsequently did nothing as the entire userbase fled to Discord and Slack. When that failed, Vector pivoted to providing bespoke encrypted services to government spooks including shipping white-labeled walled gardens and trying to make Element a Zoom competitor. With a steady source of Cash, the Vector team lost interest in the rest of us. From the CEO himself:
II
So where does Matrix come in? The Matrix protocol was supposed to be federated and Vector felt that adoption of the protocol with Element as the flagship client would be good PR. Vector set up the Matrix foundation with the goal of promoting federation in an ecosystem by offering the promise of an open protocol. The foundation was also put in charge of the “matrix.org” homeserver - ostensibly a peer to many homeservers but the de-facto hub for reasons that will be explained below. What the Matrix Foundation wasn’t given was the power or directive to implement features actually needed for growth. Something as basic as sharing an invite with someone off Matrix is something that’s impossible to this day. And even with Vector recently abandoning any interest in Element as a social platform, the Matrix Foundation has categorically refused to endorse an alternative (non-Element) app run by a team that cares more about growth.
They had a little bit of success in getting a few open source communities to dip their toes in, but it was fleeting. Unfortunately with a lagging featureset and inscrutable onboarding process, Matrix floundered while Discord, Telegram, and WhatsApp launched to the moon. Only the deplorables kicked off of Discord flocked to Matrix, most notably sharers of CSAM content. With a complete lack of algorithmic ranking and constant churn of discussions that fizzle out because they can’t onboard new members, the server has become a graveyard filled with unpleasant and illegal land mines.
Is there any hope for the Matrix protocol? Can any other servers step in where the Matrix Foundation failed?
The problem is the Matrix federation protocol doesn’t actually work! It can’t even ensure two servers think the same members are in a particular room, which has obvious consequences. As a result there isn't a single large community on Matrix with substantial participation over federation. While other homeservers exist, they effectively act as independent islands with communication happening between server members and little to no productive traffic transiting to other servers.
The Matrix Foundation is now a zombie, created to evangelize a protocol (that doesn’t work!) that is de-facto controlled by a company no longer interested in federation. It dutifully works on “trust and safety” to hide the CSAM so they can keep their matrix.org server running, a server which is a graveyard of dead discussions devoid of any meaningful discussion not about Matrix itself.
III - CW topics for discussion
With the biggest tech platforms becoming explicitly left-wing, the space for the grey and red tribes online has shrunk. Federated solutions such as Matrix and Mastodon seem like a tempting way to escape censorship, but are plagued with organizational and technical problems. Witches may find respite in these places, but only because the admins are too incompetent to successfully carry out a witch hunt. Twitter orienting itself as a free-speech platform may be the only whitepill for the current generation of deplorables.
Does the restriction of compliance tools such as photodna to major players act as regulatory capture against smaller players? Posting known CSAM on Discord or any other major platform will result in an instant permaban. Upstarts and deplorables don’t have the privilege of accessing these tools.
What is the future picture of interoperable messaging? Is it an email-like level of federation? EU has mandated interoperability but will it promote free speech or stamp it out? (anyone want an unhinged rant about "RCS"?)
The willful refusal to implement table stakes features in order to pursue differentiation at all costs. (invites, emojis/stickers, user statuses, cosmetics) The Slack competitors Chime by Amazon and Hangouts Chat by Google both fell victim to this, actively refusing (I have inside knowledge of this) to pursue feature parity with slack despite having blank-check level resources. I think this says something about human nature.
The baggage of the broken protocol has been a deadweight on the team, but momentum has the team papering over the problem with additional layers and proxies. Vector's cash cow, bespoke white-label encrypted apps for government agents, benefits literally nothing from federation. Yet these apps carry the vestigial protocol like an albatross around their necks.
Edit:
You might think "I've used Element casually and it pretty much mostly works, so it's fine" but that's missing the point. A messaging service needs to work on the first try, every time. And even if Matrix can send 99% of your messages fine, and let 99% of people join your channel, that 1% sends it directly to the garbage heap. And Matrix can't work every time.
Telegram only went down once in its entire 10+ year history, and besides that outage, not one single message for anyone in the world was shown as delivered that wasn't delivered and viewable by every member of the group.
Details of specific technical issues with the spec, for those interested (this isn't CW but since you asked). @SubstantialFrivolity @sarker @confuciuscorndog @TequilaMockingbird Unfortunately it's difficult to explain the shortcomings of the protocol in layman's terms because the protocol itself is hard to understand in layman's terms.
What matrix is supposed to be: Fundamentally, matrix advertises itself as an “eventually consistent” datastore, but in essence can be described as a distributed state machine. When operating correctly, events are sent to the distributed machine which mutates the state. In other words, matrix is a distributed computer/virtual machine that calculates who is in a room, what their permissions are, and which messages should be displayed in the room. What it's supposed to do is akin to the operating model described in “practical byzantine fault tolerance”. Auth events are particularly important mutations, because they change which mutations are valid in the future
What matrix is in practice:
Matrix is not eventually consistent: Matrix has no method to guarantee that servers will eventually reach a consistent state. In practice, servers do not reach consistency but instead diverge increasingly over time. There is no mechanism for servers to tell if they are missing events. Prev events is a weak measure, because with larger rooms where most members are lurking at any given time, the missed even is much less likely to be referenced. In the “ideal” world of open federation, each homeserver will only be represented by a handful or even a single user in a given room. If events are dropped in transit, or a homeserver spends some time offline, the homeservers will likely never recover those lost events.
Room membership breaks spaces, profiles-as-rooms, etc. In practice many spaces are used simply as a readonly way to distribute a list of public rooms. With auth rules and past state snapshots, spaces with a large membership become a terrible drain on homeserver resources despite the actual information being transmitted being next to nothing. Profiles as rooms would face an even tougher challenge because the people who need to view a user’s profile are the superset of all other users in any room that the user is in. Peeking over federation to achieve one-to-many communication is a horrendous hack, and likely would never get implemented.
Availability during partitions is a bug, not a feature: Matrix is designed to attempt to function even if some homeservers are partitioned from all of the rest of the homeservers. Fundamentally, this means that each side of the partition will have events that contradict events on the other side of the partition. If this results in a permanent split brain, this is worse than a temporary loss of availability, because the room is now broken forever.
State resolution implies time travel/retroactive changes: The very idea of state resolution is to address contradictory events, and attempt to come up with a consistent set of events that multiple servers agree on (though as shown in the above item, this doesn’t work in practice). This means the erasure of some contradictory events, and a revision of history for the server that believed in those erased events.
Matrix does not guard against time travel by hostile homeservers with power level: Users who currently and in the past have the power level to do so and control a hostile homeserver can rewrite history by sending events timestamped in the past and with appropriate DAG pointers. This will also blow up the resource consumption on all other homeservers in the room, depending on how far back the rewrite happened
Calculating retroactive state with nonlinear history is intractable and ambiguous
State resolution complexity is a consequence of a lack of consensus, not a way to achieve consensus
/sync transmits a diff of the entire snapshot of the state to the client, when the client never even needs the full state. In every other messaging app model the client queries for a view of exactly what the user needs to see on-the-fly. Computing the state diff for sync is computationally intensive for no productive purpose.
Seem to me that you need to clarify what your requirements are.
So matrix advertises itself as "eventually consistent" but is that an actual design goal or is it just words words words courtesy of some MBA? "Consistant" is a very different requirement from "secure" or "fault tolerant" with very different trade-offs. From your description it sounds like the designers have priorized fault tolerance and portability over other concerns, that doesn't necessarily mean it's "broken".
It is a design goal and it's laid out as a claim in their technical specifications (which don't look like mba marketing materials to me)
https://spec.matrix.org/latest/
https://matrix.org/docs/older/faq/
Nevertheless, I see no world where having agreement who is and isn't in a room isn't a very basic requirement.
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link