Florian told us:
The article of my research group Decentralized Systems and Network Services Research Group from the KASTEL Institute of Information Security and Dependability and me, Analysis of the Matrix Event Graph Replicated Data Type, was published in the Open Access journal IEEE Access! 📰 🥳 Open Access here means that the article is freely available for you to read, under CC-BY.
In layman's terms, we showed that the Event Graph provides a strong form of eventual consistency even when new events are applied in arbitrary order. In addition, this consistency guarantee can still be povided even if all other servers in a room are malicious, which is unexpected compared to the honest majority required for the usual Distributed Ledger Technology. We also looked at the problem of “If servers randomly select at which parents at the bottom of the Event Graph they append new events, and the number of parents for an event is limited, how can you be sure that the Event Graph does not grow arbitrarily wide?“, which is something that puzzled me since the beginning of my Ph.D. two years ago. It is easy simulate a given setup and see that the width shrinks really fast, but it is also easy to see that arbitrary growth has a likelihood larger than zero. As this was astonishingly hard to grasp mathematically, we were very happy that we could recruit Prof. Dr. Norbert Henze from the Institute of Stochastics as co-author to provide evidence that you can expect the Event Graph to shrink to a normal width quite quickly.
Let me quote parts of the abstract for some more technical details:
[…] By comparison with traditional decentralized communication systems, Matrix replaces pure message passing with a replicated data structure. This data structure, which we extract and call the Matrix Event Graph (MEG), depicts the causal history of messages. We show that this MEG represents an interesting and important replicated data type for decentralized applications that are based on causal histories of publish-subscribe events: First, we prove that the MEG is a Conflict-Free Replicated Data Type for causal histories and, thus, provides Strong Eventual Consistency (SEC). With SEC being among the best known achievable trade-offs in the scope of the well-known CAP theorem, the MEG provides a powerful consistency guarantee while being available during network partition. Second, we discuss the implications of byzantine attackers on the data type’s properties. We note that the MEG, as it does not strive for consensus or strong consistency, can cope with n > f environments with n participants, of which f are byzantine. Furthermore, we analyze scalability: Using Markov chains, we study the number of forward extremities of the MEG over time and observe an almost optimal evolution. […] With the properties shown, a MEG represents a promising element in the set of data structures for decentralized applications, but with distinct trade-offs compared to traditional blockchains and distributed ledger technologies.
Interrupting spec update!
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://matrix.org/docs/spec/proposals.
MSCs in Final Comment Period:
- MSC2998: Room Version 7 (merge)
PR updates on matrix-doc has been refactored and straightened out, and is up for review. We're reviewing changes to our infrastructure on matrix.org in parallel which should result on spec.matrix.org hosting the unstable spec sometime early next week!
Synapse is a popular homeserver written in Python.
Hey, it's Friday!
We released Synapse 1.28 yesterday, with the bulk of effort going into stability improvements and bug fixes, and an emphasis on further improving social login.
We're also working to more clearly communicate our prioritization of issues, starting with documenting our triage and labeling process for the core Synapse repository on GitHub.
(Still very much a work in progress, but starting to shape up nicely.)
We're also on track to maintain our fortnightly cadence of Release Candidates, with 1.29.0rc1 due out in just a few days. I look forward to telling you all about it next week!
Eric Eastwood announced:
We've added a "Chat via Matrix" button next to the join button in a Gitter room so you can jump straight into Matrix and start chatting that way. We've also added a Matrix.to link in the chat header so you can switch off to your favorite Matrix client at any time.
Currently very rough around the edges, but message sending & receiving in 1:1 chats works, as does conversation syncing & backfilling.
Carl Schwan announced:
We released NeoChat 1.1 containing 2 months of new features and bugfixes. Most notably message editing, sticker events support, rewritten login screen, SSO support and more commands. Check it out at https://carlschwan.eu/2021/02/23/neochat-1.1/
In addition to the 1.1 release from earlier, aa13q added support for fancy animation for the 🎆, 🎉 and 🌨️ emojis. This feature can be disabled.
aa13q shared this video too!
neochat pinephone poorly recorded effects demo 🙂 https://i.imgur.com/Z9vF9px.mp4
Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE and intends to be full featured and nice to look at
Nico (@deepbluev7:neko.dev) sent a teaser image first, then added:
As seen from the image, you can now share your screen. This currently only works on X11, since there are no cross platform APIs for that, so look out for that, if you run into issues.
Jedi18 also polished the UX a bit more and fixed bugs, so registration should now work properly again and leaving or joining rooms should place you in the right rooms after that. We also fixed some inconsistencies, where text could be misaligned, when writing long messages.
Version 0.0.95 beta4 is out, with significantly better Markdown support (code fences work now, and the overall formatting is better), further improvements to the shuttle dial and other smaller fixes. The release notes and some packages are at their usual place at GitHub; the Flatpak is also coming real-soon-now.
No (or almost no) changes in strings are expected before 0.0.95 from now, so translation contributions are very welcome at Lokalise. German, Polish and Spanish translations are quite advanced but need just a few more entries; the French translation is just about half-way; and there are many prominent languages not even started. You can help!
Updates from the team:
Doug told us:
Hey TWIM. I'd like to present Watch The Matrix, a matrix client for watchOS that I've been working on over the last few weeks. Currently can view rooms, receive new messages and react to them:
Find the code: https://github.com/pixlwave/Watch-The-Matrix
libQuotient 0.6.5 is out, featuring fixes in rich replies handling and the updated Matrix URIs support, as per the latest iteration of MSC2312, enabling shorter, nicer Reddit-style URIs such as
libkazv is a sans-io C++ (gnu++17) client library
In the past (how many?) weeks we ("tusooa and her longcat," we hope someday we can
remove this annotation :P):
Those are stable enough to run as daemon, at least for days.
- Added related ebuilds to the overlay.
- Implemented streaming uploads for libkazv.
Made matrix-tencent-forward-bot support directly forwarding images
to the matrix room.
opsdroid is an easy to use chatops framework with excellent matrix support.
This week opsdroid 0.21 has been released, it's an incremental release but includes a couple of nice matrix related features and fixes. The highlights are:
Support authorization by access token in addition to user name and password for the matrix connector. #1707.
Fix parsing a sync response with more than one message in it. #1715.
Minor fixes to the matrix documentation. Thanks to @anoadragon453 @xDiesel76 for these.
For a full list of the other changes see the release notes.
Caridina, a Crystal library for Matrix, got some new releases, which bring it to v0.10.2. It now supports the last version of Crystal (0.36.1) and redacted events, which I discovered the hard way were making the lib crash. Internally a big part of the lib was rewritten using macros, which makes the code a lot clearer but the API doc too. Thanks to Ruma actually for giving me inspiration about implementing events using macros.
Again, if you like Crystal and want to write some matrix bot, this library might interest you. Feel free to open issues about bugs or feature requests! There is now a room #caridina:cervoi.se to talk about it.
So I had a minute to release my open q&a bot taavi.
I always wanted to write a chatbot that does cool things, so checkmark for that one on the list. In addition to that I recently failed a job interview. For their technical skill test (I did not fail this :P), I got a task for which I learned how to use
puppeteer, then saw a post on reddit about Tuxi and together with my previous project that included Matrix (Audius), I knew what I had to do: create Taavi.
I have created this bot as a "weekend project", litteraly one day for the code and one day for documentation. Surely it's far from perfect but I don't have any big plans with it so far… If you think I should add some features, create an issue and let me know. I could imagine adding other websites / services to it like last.fm, do you have any ideas?
I gave my daughter the task to choose a name for a bot, that can anser any question in the world, and she came up with Taavi, nice!
I created an Ansible role for installing Maubot via Docker - https://git.feneas.org/jaywink/ansible-maubot . Currently it only supports an Sqlite database, but pull requests are welcome for more configuration. Supports a pre-created client account.
I've written a post introducing Hummingbard. https://hummingbard.com/hummingbard/introducing-hummingbard
This looks really interesting!
Not sure if TWIM worthy, but here's a nice article about the recent flood of people migrating away from whatsapp, and why people should've migrated to matrix instead of Signal.
i've been getting some feedback from other matrix users on a blog post i wrote that outlined a few concerns I had about the Matrix ecosystem and steps for improvement. idk if it'd be relevant in TWIM, but I noticed that "Final Thoughts" sometimes linked blog posts so I thought I'd share: https://seirdy.one/2021/02/23/keeping-platforms-open.html
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
See you next week, and be sure to stop by #twim:matrix.org with your updates!