Let's hear from Christian about working on his dream projects, his thoughts on bridging, hosting, and the importance and nature of chatbots and assistants.
This week was the announcement of the much-awaited rebrand: Riot is now Element. In fact, three brands are coalescing into one: Riot and New Vector will be referred to as Element, while the SaaS platform known as Modular.im is now Element Matrix Services.
Note that Matrix is not involved in this change. Matrix is still Matrix, don't worry about that!
CommCon is an event dedicated to Real-Time Communications. In 2020 they made the difficult decision to go online-only, but had a fear of missing out on the "hallway-track" that is so important to industry events. Their solution was to include a live chat to run alongside their streamed talks!
Matrix was a natural choice for the crowd, but they wanted a way to encourage viewers to join the correct room from their own Matrix clients. To do this, they used the GSOC project from arnav-t - an HTML Embedded client - to present a live scrolling-view of the chat. You can see the result at https://2020.commcon.xyz/live/.
uhoreg said:
anoa is away this week, so no pretty graph, I'm afraid. (this is intolerable - BP)
MSC status
Merged MSCs
- No MSCs were merged this week.
MSCs in Final Comment Period:
- No MSCs in Final Comment Period this week.
New MSCs:
Spec Core Team
This week, the Spec Core Team will be focusing on MSC2610 (Removing
m.login.oauth2
from User-Interactive Authentication), MSC2611 (Removingm.login.token
from User-Interactive Authentication), MSC2663 (Errors for dealing with non-existent push rules), MSC2674 (Event Relationships), and MSC2689 (Fix E2EE for guests).
Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.
devinr528 reported:
The End is Nigh
This week in the ruma/matrix Google Summer of Code project, I worked on refactoring both
ruma-api
andruma-events
. After moving some of the larger chunks of theruma_api_macro::api::Api::to_tokens
method to helper functions, I spent time removing repetition from the Request/Response code generated by theruma_api!
macro. Forruma-events
, the input parsing was changed to only allow valid names for theAny*Event
enums. Altering the input parsing had the added benefit of replacing all of the string comparison and manipulation with strongly typed comparison and manipulation.The final few issues to be resolved before the next crates.io release for
ruma-events
can happen are related to redacted events. Support for redacted events was added to theAny*Event
enums, they now have redacted variants of each event kind. A few follow-up PR's have been merged to fully integrate redacted events intoruma-events
, fixing specific event deserialization issues and splitting the UnsignedData struct intoUnsigned
andRedactedUnsigned
.
arnav-t reported:
This week for the GSoC project of HTML Embeddable Matrix Client:
Added a read receipts menu for messages.
Minor bug fixes
Automatic hyperlinking of URLs in pipeline
See above for details of this project being used in the wild!
nikofil announced:
Added the capabilities to request room keys from other devices, as well as share room keys with other devices that requested them
Currently working on device verification using SAS, will then work on key export / import
neb
- Updated to latest mautrix version with some minor fixes, most notably using m.encryption event parameters
tyagdit said:
End to End Encryption with matrix
The new connector has been fully implemented!
Device verification has been put on hold for the time being
No extra configuration is required
Check out all the changes here
Matrix database
Work has begun on porting the matrix database module to matrix-nio and integrating it into opsdroid core
It uses matrix rooms as databases
Users can store key value pairs as state events in a room
Also works with encrypted rooms to allow for encrypted storage
karlik announced:
for matrix-ircd:
Merge in futures 0.3 support for matrix and http modules
Opened pull request for updating tests, irc module, and bridge module to futures 0.3 & remove several futures dependencies
updating several packages TLS packages to their more modern counterparts
matrix-media-repo is a highly customizable multi-domain media repository for Matrix
TravisR said:
matrix-media-repo has just released v1.1.3 with several improvements and bug fixes - please give it a go, and get support in #media-repo:t2bot.io
Conduit is a Matrix homeserver written in Rust https://conduit.rs
timo told us:
@the0 finished /event
I rebased Jamie's WIP appservice branch
I wrote some documentation for our database: https://git.koesters.xyz/timo/conduit/wiki/Database
I also investigated why so many sytests fail and created this issue: https://github.com/matrix-org/sytest/issues/913 Apparently Sytest did not expect a server to optimize their /sync responses as much as Conduit does :P.
Note: The official Conduit server is now reachable at "https://conduit.koesters.xyz". Thanks to everyone who supports me on Liberapay or Bitcoin!
Neil said:
A big week for matrix.org performance.
Hot on the heels of shipping shardable federation readers last week, this week we shipped shardable federation senders. There is still plenty of work to do, but together these changes has made a massive difference to federation lag overall and hopefully those of you not on matrix.org are noticing the difference when you talk to matrix.org users.
This graph shows the impact to outbound federation lag.
Aside from that we also shipped shardable push and frontend proxy workers as both were starting to max out on CPU as well as a shardable client reader, allowing us to shard registration which was especially important this week :)
Finally we moved typing notifications from the master process and optimised incoming replication queuing to buy us a little more head room.
Next steps are to revisit where all the remaining cycles are going on the master process. To help us profile we are migrating to async/await semantics and Patrick produced this natty graph to track progress.
Outside of performance we shipped a bug fix to prevent large initial syncs taking out the synchrotrons. The admin api sprouted an end point to list room members (thanks awesome-michaeland the ability to reactivate previously deactivated users.
Coming up we’ll dust off the notifications project which has been put on hold while Riot transmogrified into Element and we’ll continue with chipping away at the master process.
Ananace said:
And another bump of the K8s-optimized Synapse images, this time to 1.17.0
We only featured this a month ago, but I want to call attention again to this awesome Synapse version adoption tracking project from Chris . I wanted to know how quickly Synapse 1.17.0 would be the most deployed version (~36 hours), and the answer is right there!
Tulir announced:
I started working on a Twitter DM bridge that uses the internal API instead of the complicated official one. It should be easier to set up than bridges using the official API, since there won't be a need to get API keys and forward webhooks. The main risk is that Twitter doesn't like people using the internal API and starts blocking users like Facebook does, but hopefully that doesn't happen.
So far I've only made a simple library for the API, but the bridge should be usable by the next TWIM. The bridge and API library are at https://github.com/tulir/mautrix-twitter and there's a discussion room at #twitter:maunium.net.
benoit announced:
Element Android 1.0.0 is out! Download or upgrade it from the PlayStore at https://play.google.com/store/apps/details?id=im.vector.app or download it from the F-Droid store at https://f-droid.org/packages/im.vector.app/
PlayStore users: Element should come as a regular upgrade of the application Riot-Android, and the upgrade will update your previous account and data, without the need to log in again.
F-Droid users: Element is a new app, you have to install it and log in again.
RiotX: RiotX will disappear from the PlayStore (it was only a beta application). We will provide a very last update to inform users to install Element Android
Please report any issues at https://github.com/vector-im/riotX-android (which will probably be renamed soon), because Element Android is actually RiotX code! Thanks for all the contributors of RiotX, we still have lots to do to make the app even better and full featured.
Davo announced:
After seeing all the Element room avatars, I thought to myself, "you know what, #radical-webext:matrix.org needs a new icon"… so I sat down and combined a couple of icons. The result:
Radical also quickly (as always) got updates when Element 1.7.0 and 1.7.1 were released. Huge thank you to stoic for making Radical in the first place.
krombel announced:
I updated my F-Droid repos which are containing the dev builds to reflect the latest naming change to Element.
The people who formerly used my repos for getting the dev repo of Riot-Android should update to the new repo. It wont be updated to get Element
As always you can grab the F-Droid or GPlay flavor and you can pick the repo which reflects your flavor on https://fdroid.krombel.de
Note: As "the new repo" is internally the same repo as the one of RiotX (and Riot.imX) the people who already used that don't need to update their packet source. They will get the updates to Element via the old repo urls.
Feel free to use it 🙂
Tulir announced:
As promised last week, maubot now supports end-to-end encryption. It's a bit bare at the moment, so you need to manually insert the device ID into the database for it to start working, but other than that it works. Plugins don't need to be changed at all, the framework will handle everything.
While I was adding e2ee to maubot, I also improved mautrix-python's crypto stuff so that it's easier to use it directly as a client library with e2ee. Some day I might even add docs :D
Chris Vincent reported:
Related to my previous update here, I've just published an initial version of a Matrix Client-Server client library for the Crystal programming language: https://github.com/cvincent/matrix-client-cr
Is this the first time we've seen tooling for Crystal?
This Ansible playbook is meant to easily let you run your own Matrix homeserver.
Slavi announced:
matrix-docker-ansible-deploy is now ready to help you with the Riot -> Element transition.
We have a few ways to handle the migration depending on how much change and breakage you're willing to tolerate. See our Migrating to Element documentation page.
Incredibly thorough migration paths here!
jaywink offered:
Matrix-Alertmanager bot has a new release of v0.3.0. Highlights are compatibility with AWS Lambda, better error handling if message fails to send and the ability to do a
@room
mention on firing alerts. Find it here.
carl reported:
REPL for your matrix rooms
This week, we got support for javascript (nodejs) with
!js
. The codecomplexity was considerably reduced, which should make adding new languages much easier in the future. All Python sub-dependencies are now pinned, making
cody builds even more reproducible.
Chat with cody: @cody:bordum.dk
Read the source: https://gitlab.com/carlbordum/matrix-cody
balaa said:
Noteworthy team (patrick and myself) have open sourced both components (spoke & hub) of Noteworthy (Matrix over Wireguard overlay networks -- https://github.com/decentralabs/noteworthy) we are actively welcoming testers/contributors and working with a handful of projects on incorporating our deployment model over in #noteworthy:tincan.community-- it is also the fastest way (less than a minute) to deploy your own home server! Also, working on incorporating Noteworthy into the popular ansible deployment repo to enable users who don't have access to a publicly accessible to deploy their own home servers.
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.
Rank | Hostname | Median MS |
---|---|---|
1 | fairydust.space | 390 |
2 | exp.farm | 555.5 |
3 | matrix.vgorcum.com | 768 |
4 | tchncs.de | 810.5 |
5 | settgast.org | 1026 |
6 | moritzdietz.com | 1046 |
7 | ragon.xyz | 1288 |
8 | aragon.sh | 1383 |
9 | elcyb.org | 1755.5 |
10 | kapsi.fi | 2034 |
See you next week, and be sure to stop by #twim:matrix.org with your updates!
Synapse 1.17.0 is here!
Hot on the heels of Synapse 1.16.1, 1.17.0 is a bug fix release most notably containing a fix for 'stuck invites' which happen when we are unable to reject a room invite received over federation.
Get the new releases from any of the usual sources mentioned at https://github.com/matrix-org/synapse/blob/master/INSTALL.md. 1.17.0 is on github here.
Changelog for 1.17.0 follows:
Synapse 1.17.0 is identical to 1.17.0rc1, with the addition of the fix that was included in 1.16.1.
set_tweak
actions in Push Rules that have no value
, as permitted by the specification. (#7766)_check_for_soft_fail
. (#7769)synapse.handlers.federation
to pass mypy. (#7770)isort
v5. (#7786)local_invites
. (#7793)signing_key
property to HomeServer
to save code duplication. (#7805)This week it's Open Tech Will Save Us!
anoa reported:
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.
MSC Status
Merged MSCs:
- No MSCs were merged this week.
MSCs in Final Comment Period:
New MSCs:
Note that a majority of those new MSCs are split out from MSC1849 (the aggregations MSC) to make it easier to review 🙂
Spec Core Team
In terms of Spec Core Team MSC focus for this week, we're sticking to implementation work. anoa did have some time this week to make the graphs more useful though:
Check out that graph!
arnav-t told us:
This week for my HTML embeddable client GSoC project:
Added full markdown support and made replying and quoting fully functional
Added a lot more configuration options to the client, including a read-only mode
Fixed some bugs
nikofil said:
work is still being done on the bot's functionality to test different crypto functionalities of other Matrix clients when thrown in a room with them
slight improvements to mautrix-go (sql store can now store multiple Olm accounts and their sessions, key rotation params taken from encryption event, other minor things)
add some simple instructions to the readme for enabling e2ee for neb as well as integrate these mautrix changes (PR #330)
room_key_request
s will probably be the next thing to be developed for mautrix-go
Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at
Chethan said:
Added user cache which stores the encrypted user keys and updates them on sync
Added Verification Cache which stores verified devices of a user
Showing Verification Status of a device on Userprofile
Neil Alexander announced:
Over the last couple of weeks I have been working on the next P2P demo, using Yggdrasil as the transport instead of libp2p. Although libp2p is arguably more featureful in many ways, Yggdrasil does have one major benefit in that it provides full overlay routing. Participants in the network can carry traffic on behalf of other participants, resulting in something much closer to a true mesh network.
The mad science doesn't end there however. I've also built a custom Riot iOS build that includes the full Dendrite P2P demo (yes, that's a homeserver running locally on your phone). If you have an iPhone or iPad, it's available in public TestFlight right now and you can play with it!
The demo still is very experimental and has a number of bugs still (including but not limited to messages occasionally taking a while to deliver, the app crashing when going into the background sometimes etc.) but we'll be improving it further in the coming weeks and it's quite fun to play with, particularly if you can do so with other people nearby.
Thanks to the same technology that powers AirDrop, the demo will automatically find and connect to other nearby devices running the demo and build up a network automatically - even if you are not on the same Wi-Fi network (or indeed connected to Wi-Fi at all)! If you don't have any other nearby peers to test with then fear not - you can still configure a public static peer in the app settings and join the wider network that way.
With any luck the room directory will even work too, showing published rooms from other nearby devices. If not, try joining
#beachparty:b5ae50589e50991dd9dd7d59c5c5f7a4521e8da5b603b7f57076272abc58b374
from within the app.Questions, comments or feedback? Join us in
#p2p:matrix.org
!
kegan reported:
Many of you know that I work on a Go homeserver called Dendrite, and so I've had to get familiar with SyTest: a black-box homeserver integration testing project. Unfortunately SyTest has a number of problems: from the dialect of perl, lack of documentation for federation bits, the inability to run a single test, and so on. Having a solid black-box integration testing project is crucial for the ecosystem to ensure spec compliance (and hence compatibility between server implementations) and for making all servers more stable and reliable.
As a side project I've been working on a modern Go rewrite called Complement which is now ready for a bit more exposure. It currently only has a handful of SyTests converted but I hope to rapidly expand the number in the coming weeks. Complement makes heavy use of Docker to agnostically run homeservers, and already includes a Dockerfile for configuring a Dendrite instance. To try it out, clone the repo and run:
(cd dockerfiles && docker build -t complement-dendrite -f Dendrite.Dockerfile .) COMPLEMENT_BASE_IMAGE=complement-dendrite:latest go test -v ./tests
If you're interested in learning more and maybe adding some tests check out ONBOARDING.md.
My overall hope is that Complement will lower the barrier to entry when adding tests by so much that it encourages any bugfix/feature in any homeserver implementation to result in a new test. This will benefit everyone and create a feedback loop which will make Matrix even more reliable.
Asked about Sytest and SyTS, Kegan added:
Complement currently implements the same tests as sytest, so tests which pass sytest will pass complement (though that will diverge as complement will guard against more race conditions by default). There's about 9 different kinds of tests currently testing CS-API and Federation (outbound to a dummy server and inbound via a federation client)
The problem with SyTS was that the test tooling around it ultimately wasn't expressive enough. I was using Jest and kept finding myself fighting it by bumping up against issues like https://github.com/facebook/jest/pull/8751 and the multi-process parallelisation stuff was too opaque. The assertion helper functions also lacked context because they rely on behavioural testing names like
describe("foo") { it("should say bar") { ... }
etc so when your assertion fails (eg wrong value for a JSON key using assert equals) it just says unhelpfully "foo != bar" where what I really want is to know what it actually does say then, and other contextual info around the object (maybe the key name was typod). When I realised that the assertion lib didn't have this and I'd need to add it, coupled with parallelisation concerns and head-desking against Jest, I found myself wishing I just used something else. I stuck with it though and then realised that all the federation stuff (signature checking, canonical JSON, etc) would need to re-implemented when I knew I had working code in Go. Both of these things combined and I thought "you know what, I'm just going to do this in Go" but you'll note that the architecture is identical, so SyTS lives on as an early prototype for Complement ;)
Find out more in the room: #complement:matrix.org.
Dendrite is a next-generation homeserver written in Go
Neil Alexander told us:
While I've been busy distracted with the P2P demo, Kegan has been on a mission to implement some new features. Changes this week include:
Redaction is now mostly implemented
User-interactive authentication is now implemented
Device lists in the client API are now implemented
Media APIs are now available on both
/r0
and/v1
endpoints which makes Riot iOS a bit happierSome federation sender bugs have been fixed
Some database locks in the federation sender in SQLite mode have been fixed
Spec compliance has improved a bit:
Client-Server APIs: 48%, up from 45% last week
Server-Server APIs: 51%, up from 50% last week
Conduit is a Matrix homeserver written in Rust https://conduit.rs
timo said:
Conduit
Hi everyone, here are some things we worked on this week:
Work on to-device sending improvements
Work on room tags (thanks to @gnieto)
Merged /logout/all endpoint (thanks to @CapsizeGlimmer)
Work on /joined_members (thanks to @CapsizeGlimmer)
Last week we had a list of major features still missing. Here's a list of what already works:
Registering, logging in, creating rooms, room visibility, join rules, basic permission management, public room list, inviting, creating DMs, e2e encryption, key backups, device verification, cross signing, notifications, uploading media/files (also user/room avatars), lower-resolution media thumbnails, voip calls and a few other thing's I'm forgetting right now. So it's useable for non-federating chats already.
Thanks to everyone who supports me on Liberapay or Bitcoin!
Neil reported:
In Synapse land this week, we shipped 1.16.0 and err 1.16.1.
Lifting from the blog post, the highlights are:-
An important performance fix to improve room state resolution.
An option to enable e2e by default for new rooms.
Ability to run multiple media repo workers side by side.
Ability to mark specific content as being safe from quarantine.
Bug fixes to make migrating from SQLite to Postgres more reliable - if you are running sqlite for anything other than evaluation purposes then please migrate!
We also put out a release candidate for 1.17.0 which all being well we’ll release on Monday. 1.17.0 is really a bug fix release the most notable being finally squashing a long standing bug that caused locally rejected invites to get ‘stuck’ client side.
Continuing our matrix.org performance theme, having now got the CS API largely into a good state of responsiveness, we are looking at federation lag. Today we shipped a sharded Federation Reader to matrix.org which has reduced the average lag from seconds to milliseconds. We are just running two currently and are still tuning as we figure out how to get the best from it. Initial impressions seem promising. Watch this space.
We also have a PR out for review to shard the Federation Sender, which will have much the same effect in the other direction.
Once we have sending messages via the Client-Server API, much reduced federation lag and a sharded Pusher we’ll take a look at room joins.
Typo Kign reported:
v2.3.0 of dacruz21/matrix-chart has been published with Synapse 1.16.
Just pushed the 1.16 K8s-optimized Synapse image tags, this time done from a tablet in a server room between moving a bunch of hardware.
balaa announced:
Hi everyone, my friend Patrick and I have been working on making Matrix more accessible in the context of personal overlay networks powered by WireGuard. We’ve built a 1-click deployment solution for Synapse & Riot based on docker. The interesting part is that it gives you public addressability via a distributed proxy service that we have been developing. We are free and open source and welcoming contributors and testers ASAP! We are imagining an ecosystem for building collaborative intranets and see them as foundational to a freer, more equitable internet. Please join us at #noteworthy:tincan.community See https://www.patrickdlg.com/personal-messaging/ and https://noteworthy.tech/start/
Tulir announced:
mautrix-whatsapp got some bugfixes and improvements:
You can now create private chat portals by inviting a WhatsApp ghost user (e.g. from a group chat)
WhatsApp users in groups are now synced to Matrix properly, including kicking users who left the group without the bridge noticing
Benedict offered:
I fixed some bugs in matrix-sms-bridge and added a feature that allows delayed sending of sms messages with the
sms send
command. It runs very fast and stable in my production environment.
Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at
Nico (@deepbluev7:neko.dev) reported:
Not much to talk about currently, since I'm breaking my Nheko to replace the entire event store at this moment, but I have some heads up on an annoying bug that I fixed on my branch:
Sometimes we had a weird issue, where Nheko wouldn't load the language the user set on their system. This was especially annoying when I wanted to test a specific language, like Japanese, and I couldn't figure out the right LANG* variables to set the language to Japanese in Nheko. Turns out, this was a bug in Nheko and you wouldn't have guessed so, when looking at the examples in the Qt documentation. Anyway, KDAB wrote a nice blogpost explaining this issue: https://www.kdab.com/fixing-a-common-antipattern-when-loading-translations-in-qt/
If you are a Qt developer, you may want to check your applications, if you are also affected.
steve offered:
This week, we worked on the rebranding.
benoit announced:
We will release a beta (0.91.5) of Riot-Android this evening, including all the recent changes and lots of fixes. We are still working to prepare the great release!
MTRNord told us:
While not much is happening on the master branch some things happened on the Redesign branch:
Daydream does the sync now on a worker which is similiar to using a thread
jplatte made a PR for optimizing multiple Parts of the Code which significantly improved the overall Daydream performance ( https://github.com/daydream-mx/Daydream/pull/22 )
Some rework of the Login logic happened to prepare for well-known support
Tulir offered:
When I initially implemented end-to-bridge encryption in mautrix-python, I used matrix-nio in a slightly hacky way to get it done quickly. It worked fine in some cases, but also caused some undecryptable messages. I tried switching to using matrix-nio's crypto module directly, but the sans-I/O design made that difficult: there were too many parts that needed to be hooked up to the actual I/O and I wasn't able to find them all. In the end, I just decided to implement the basic e2ee stuff directly in mautrix-python the same way it's implemented in mautrix-go.
All my bridges based on mautrix-python (Telegram, Facebook and Hangouts) have been switched to use the new crypto stuff. After a few initial bugs that are already fixed, it seems to work better than the old system. I'll probably add native e2ee to maubot soon too, which is my last main project that's still missing e2ee.
Christian reported:
The Mozilla IoT Matrix Adapter can send posts based on events in your home.
Version 0.3 brings the ability to use room aliases instead of internal room ids. Furthermore, you can configure it to accept invites and follow room upgrades.
Due to utter negligence and malpractice by myself, we missed the update for this project last week. Of course, 0.2 is now superseded by 0.3, but here is the 0.2 update anyway:
Released v0.2.0 of the Mozilla IoT Matrix adapter. It's now possible to post in multiple rooms (still one per post).
Stephen D told us:
I wrote a pretty simple Matrix bot in Rust which is loosely based on Cat Disruptor 6000. It will react with 🐈️ to any message containing the string "cat" *. Since it is a small project, I hope it can be used as an example for other people interested in writing Matrix bots in Rust. It implements several important features (crypto/device store, auto-accepting invites, crafting custom events, etc.) You can host it yourself, or you can try it out by inviting the user "@catdisruptor:m.scd31.com" to your room! https://git.scd31.com/stephen/cat-disruptor-7000
* Cat Disruptor 6000 does not do this (it is used for disrupting monologues with cat pictures). However, many instances of Cat Disruptor 6000 also include a separate bot, which is what Cat Disruptor 7000 is mimicking.
mr_johnson22 said:
matrix-imposter-bot - A bot that uses your account to repeat other people's messages. This gives relay-bot capabilities to puppet-only bridges.
Updates:
Can be much more easily deployed with a production-level WSGI server. It comes with waitress but it's possible to use any other server.
Member join/leave/rename now post messages
Shuts down when receiving a term/exit/quit signal, instead of hanging
For more details, see https://github.com/mrjohnson22/matrix-imposter-bot
carl offered:
cody is a REPL for your matrix chat rooms.
This week, the big new feature was support for Ruby with the message prefix
!rb
.Chat with cody: @cody:bordum.dk
Read the source: https://gitlab.com/carlbordum/matrix-cody
sorunome announced:
Heya, we (famedly) are looking for about 2-3 more flutter developers. We are a german startup which works on revolutionizing communication in the medical area. We build on top of matrix, so having some matrix-knowledge would be very beneficial.
You might have seen us previously in TWIM with projects such as famedly-email-bridge or the famedly dart SDK.
While we are based in Berlin we do allow remote work, and communication in english is fine, too.
If you are interested or have more questions, please message Niklas Zender.
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.
Rank | Hostname | Median MS |
---|---|---|
1 | fairydust.space | 334 |
2 | matrix.vgorcum.com | 637.5 |
3 | lossy.network | 657 |
4 | asra.gr | 795 |
5 | swag.industries | 1407.5 |
6 | lo.hn | 1481 |
7 | finallycoffee.eu | 1804 |
8 | nzbr.de | 1885.5 |
9 | halogen.city | 2275 |
10 | utzutzutz.net | 2462.5 |
See you next week, and be sure to stop by #twim:matrix.org with your updates!
Synapse 1.16.0 is here!
Notable additions in 1.16.0 include:-
Note, we have deprecated the m.login.jwt
login method in favour of org.matrix.login.jwt
see the changelog for more details.
Enjoy!
Get the new releases from any of the usual sources mentioned at https://github.com/matrix-org/synapse/blob/master/INSTALL.md. 1.16.0 is on github here.
Changelog for 1.16.0 follows:
No significant changes since 1.16.0rc2.
Note that this release deprecates the m.login.jwt
login method, renaming it to org.matrix.login.jwt
, as m.login.jwt
is not part of the Matrix spec. Otherwise the behaviour is identical. Synapse will accept both names for now, but this may change in a future release.
Synapse 1.16.0rc2 includes the security fixes released with Synapse 1.15.2. Please see the 1.15.2 release notes for more details.
docker-compose.yaml
to tag 12-alpine
. (#7696)synapse_federation_server_pdu_process_time
and synapse_event_processing_lag_by_event
. (#7771)user_id
from the response to GET /_matrix/client/r0/presence/{userId}/status
to match the specification. (#7606)phone
) for the m.id.phone
identifier type. The legacy field of number
is still accepted as a fallback. Bug introduced in v0.20.0. (#7687)GET room_keys/version
endpoint had the incorrect type for the etag
field. (#7691)synapse_port_db
script no longer fails when the ui_auth_sessions
table is non-empty. This bug has existed since v1.13.0. (#7711)synapse_port_db
to be in sync the current database schema. (#7717)Content-Length
on HTTP responses from the metrics handler. (#7730)m.login.jwt
login method in favour of org.matrix.login.jwt
, as m.login.jwt
is not part of the Matrix spec. (#7675)parameterized
package version to be at least 0.7.0. (#7680)listeners
configuration settings. (#7681)six.iterkeys
/iteritems
/itervalues
with keys()
/items()
/values()
. (#7692)rust-python-jaeger-reporter
library to reduce jaeger tracing overhead. (#7697)six
with native Python 3 equivalents. Contributed by @ilmari. (#7704)flake8
to the end of scripts-dev/lint.sh
as it takes the longest and could cause the script to exit early. (#7738)synapse_federation_server_pdu_process_time
and synapse_event_processing_lag_by_event
. (#7755)The next Open Tech Will Save Us event will take place on Wednesday, that's 2020-07-08! Line-up is confirmed as:
anoa reported:
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.
MSC Status
Finished Final Comment Period:
MSCs in Final Comment Period:
- No MSCs are in FCP.
New MSCs:
Spec Core Team
In terms of Spec Core Team MSC focus for this week, as last week we are sticking with "implementation" for now. We'll be back soon :)
This week was the first evaluations, we'll have results to share next week.
karlik offered:
for matrix-ircd:
Removed
futures
0.1 dependency & move all modules tofutures
0.3Update all tests to use async / await
Begin merging updated
futures
toasync_await
branch
From nikofil:
- e2ee merged and some bugs fixed (pr #324)! You should be able to use neb normally in an encrypted room now, if that's not the case please let us know!
- Added integration tests for both encrypted and unencrypted rooms to neb in order to catch things that might break some core functionality in a subtle way (issue #326)
- Similarly, created a PR for mautrix-go for testing the Olm and Megolm session establishment and message encryption / decryption (pr #12)
- Next up, working on a service for neb for testing the crypto functionality of other clients: neb will send messages to a room, rotate keys etc. and your client is supposed to respond!
Dendrite is a next-generation homeserver written in Go
Neil Alexander said:
This week has seen some new architectural changes and a number of bugs fixed:
A new Current State Server component has been added, which tracks room state
The Public Rooms API has been deprecated in favour of the Current State Server
Event size limits are now honoured with the correct return code
Invites have seen some refactoring and retiring invites should work better now
The federation sender now persists unsent PDUs to the database and will automatically retry when Dendrite is restarted, making resend behaviour much more reliable (particularly in the P2P demos)
Some room checks in
/state
and/state_ids
have been fixedSome additional restrictions have been added to
/send
and we now return the correct error codesA bug where current state was incorrectly used when getting missing/backfill events has been fixed
A bug where you couldn't rejoin a room that you created after wiping your database has been fixed
Spec compliance:
Client-Server APIs: 45%
Server-Server APIs: 50%
Conduit is a Matrix homeserver written in Rust https://conduit.rs
timo reported:
This week I didn't have much time to work on Conduit, but together with @the0 we could implement both password changing and account deactivation!
With last week's key backup and cross-signing PR landing in master, here's a list of all major features still missing from Conduit:
All of Federation
Appservices
Push Notifications
Notification settings
Message Search
Presence
Room Tagging
Thanks to everyone who supports me on Liberapay or Bitcoin!
richvdh reported:
Synapse 1.15.2 shipped this week with some important security fixes - if you haven't already upgraded, please do asap! Meanwhile, we're also preparing a 1.16 release with the normal round of bugfixes and incremental improvements.
The big focus in the Synapse team continues to be on performance for larger Synapse instances, which is reflected in the support in 1.16 for running multiple media worker processes. We're working on giving other worker processes the same treatment, so expect more of the same in the weeks to come!
Ananace announced:
Just pushed the 1.15.2 tags for the K8s-optimized Synapse image.
Mathijs offered:
The avhost image including coturn, jemalloc, and mjolnir for synapse 1.15.2 was released at avhost/docker-matrix:v1.15.2, while the RCs images were released on my personal repo; mvgorcum/docker-matrix:v1.16.0rc1 and mvgorcum/docker-matrix:v1.16.0rc2
Jeff Casavant offered:
I wrote a very simple Twilio & Maubot based SMS bridge recently which I've been running for long enough with no delivery errors that I'd consider it stable. It's oriented towards bridging many individuals to single rooms via SMS. You'll need to have a Maubot instance in order to run it.
usbfingers offered:
Hey TWIM ,
Tuesday, I did a soft announcement of open alpha for Syphon - a privacy centric matrix client
Source: https://github.com/syphon-org/syphon
Website: https://syphon.org
Features:
no analytics.
no proprietary third party services
- iOS will have APNS opt-in, but will be made clear to the user
all data is AES-256 encrypted at rest
E2EE for direct chats using Olm/Megolm
- group chats will be supported in the coming weeks
all indicators of presence are opt-in only (typing indicators, read receipts, etc)
customize themes and colors throughout the app
Please note there's still a lot of work to do and a lot of features missing that other clients have. It's not ready for everyday use.
Please let me know if you have any questions or would like to contribute!
Ryan told us:
This week we released 1.6.8, and the highlights include:
Upgraded to Electron 9 for desktop builds, which should fix various Linux tray icon issues
Jump to first unread message improved to handle reactions and other non-message events
Desktop now shows a file saved message when downloading a file
Cross-signing setup flows reworked to simplify choosing a security phrase or key
Alexandre Franke announced:
The previous Fractal update was quite a while ago but we’ve kept busy.
There has been a lot of under the hood work that users won’t notice and which we won’t delve into. In addition to them, we have a few nice things:
Matrix API tokens are redacted in logs for better privacy when submitting bug reports.
A send button was added next the message entry. This is especially relevant for touch screens.
We are less noisy with typing notifications that we send out.
We support SOCKS proxies.
Notifications for non text messages have been tweaked.
We gained support for edited message display. They are replaced with the newer content and a little icon is shown next to them. Editing messages is not supported yet though.
eric told us:
Added icons for each chat network to room list
Got Twitter DM bridge working again
Improved search bar UI
On-boarded 30 new users!
Launched (accidentally) on Hacker News
Fixed a ton of reliability bugs in the 7 bridges we support (changelog)
We are hiring (full-time or part-time) remote React developers to work on our (source available, still TBD on final license) Riot fork Send me a DM if interested.
NovaChat has been getting good coverage lately, on Twitter and Hacker News.
benoit announced:
RiotX is now published in the beta channel of the Riot-Android app: https://play.google.com/store/apps/details?id=im.vector.app. You can get the last beta version by becoming a tester if you want to. There will be no more update of RiotX on the PlayStore. Current RiotX users should signout from RiotX and signin again on Riot-Android. Riot-Android users do not have to do that. The changelog can be read here https://github.com/vector-im/riotX-android/releases/tag/v0.91.3-beta. And this week we are working on implementing what's remain on our list, and we are fixing as many bugs as we can before the great release.
steve offered:
This week, we made some improvements for the cross-signing UX.
We started to work on the rebranding. And we also made some small improvements in the display of some events in the timeline.
ma1uta offered:
ma1sd release 2.4.0.
Changes:
Enabled v2 API by default.
Added experimental support of the database connection pooling for postgresql
Added option to bind ma1sd to specified address.
Added error logging for LDAP authorization.
Added full request and response logs for debug.
Avoid including bridged user in directory lookups (https://github.com/ma1uta/ma1sd/pull/45)
Add experimental multi-platform buillds for amd64 and arm64 platforms.
remove warning about matrix-synapse-ldap3 (https://github.com/ma1uta/ma1sd/pull/50)
Bugfixes:
Downloads:
docker pull ma1uta/ma1sd:latest
docker pull ma1uta/ma1sd:2.4.0-arm64 (image for arm64)
This Ansible playbook is meant to easily let you run your own Matrix homeserver.
Slavi said:
it appears to be puppet week in matrix-docker-ansible-deploy-land!
Thanks to various contributors (Johanna Dorothea Reichmann, Tulir Asokan and Hugues Morisset), the playbook has gained support for 4 new bridges: mx-puppet-instagram (see our docs), mx-puppet-twitter (see our docs), mx-puppet-discord (see our docs) and mx-puppet-steam (see our docs).
This brings the total number of bridges supported by the playbook to 15!
anoa offered:
The release, v0.1.0, of matrix-reminder-bot is out! 🎉
I've eliminated most of the bad bugs that were present, so will be doing some feature development for a bit. As of now, the features of the bot are:
Setting reminders
Have a reminder ping yourself or the whole room
Alarms which continue ringing until silenced
Support for end-to-end encrypted rooms
Postgres and SQLite support
Docker support
Find it here: https://github.com/anoadragon453/matrix-reminder-bot/ and join the discussion at #matrix-reminder-bot:matrix.org!
Enjoy! ❤️
MTRNord offered:
Did you ever have the issue that a media event sent from someone is too large for your HS and you don't want to fiddle with the link?
IPFS Bot might be a solution. Invite @ipfs:nordgedanken.dev or Check out https://github.com/MTRNord/matrix-ipfs-bot/ to use the bot.
If you reply to any media event with
!ipfs
the bot will send you a link to the media stored on ipfs.Known issues are:
E2EE not yet working (It joins but can't yet decrypt the related event)
Error handling is basically not existent. Therefore crashes might happen until I sort this out.
It currently does very verbose logging. This will be removed when the bot is more stable
Images sent from RiotX sometimes seem to not play nice with ruma
(Demo for the IPFS Bot): https://ipfs.nordgedanken.dev/ipfs/QmSfde3V4QL1Lv96Ar62qgnhaEtyi9jzPkKRCBMh4Wqm6F?filename=2020-06-27_16-41-09.mp4
We could include this video here, but it seems me appropriate to link to an actual IPFS location.
carl offered:
Hello, I am announcing my first matrix bot - cody - that will evaluate code snippets in your Matrix rooms and return the result. Here is an example interaction:
user> !py "Hello world!" cody> 'Hello world!' user> !py list(range(10)) cody> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
You can chat with him @cody:bordum.dk and view the source code at https://gitlab.com/carlbordum/matrix-cody
This initial release only supports Python, but the plan is to add support for more languages in the next few weeks. The repo might also be of interest to some of you as it has CI, CD to DockerHub, complete dev environment with cody, pantalaimon, synapse and riot using docker-compose, simple metrics and Grafana-dashboards-as-code.
v0.2.2
KB1RD told us:
A real-time collaboratie text editor using the Matrix protocol.
Nope, it's not dead.
New version of
logootish-js
with a completely new algorithm
- In particular, I should note that this new algorithm is tested extensively, so I think the bugs should be out
Corresponding updates to internal event structure
Fixed UI & CSS bugs
Improved UX for room title editor
Currently, conflicting text will be displayed, but conflicts will not be indicated in any way
I almost forgot to mention: The room list is now filtered using the typed rooms MSC (event ID
org.matrix.msc1840
). #test-document0:kb1rd.net is a room with that state event set.I also made a flame graph of the internal algorithm and I'm surprised by some of the results. The good thing is that I think there's quite a few ways to speed up the algorithm. Here it is:
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.
Rank | Hostname | Median MS |
---|---|---|
1 | fairydust.space | 385 |
2 | talk.go7box.xyz | 502.5 |
3 | gottliebtfreitag.de | 524 |
4 | phys.ethz.ch | 552 |
5 | eisfunke.com | 997 |
6 | c.mau.dev | 1422 |
7 | halogen.city | 1613 |
8 | nzbr.de | 1722 |
9 | asra.gr | 1774 |
10 | utzutzutz.net | 1875 |
See you first thing tomorrow morning, and be sure to stop by #twim:matrix.org with your updates!
Folks, today we are releasing Synapse 1.15.2, which is a security release which contains fixes to two separate problems. We are also putting out the second release candidate for the forthcoming Synapse 1.16, including the same fixes.
Firstly, we have fixed a bug in the implementation of the room state resolution algorithm which could cause users to be unexpectedly ejected from rooms (Synapse issue #7742).
Secondly, we have improved the security of pages served as part of the Single-Sign-on login flows to prevent clickjacking attacks. Thank you to Quentin Gliech for reporting this.
We are not aware of either of these vulnerabilities being exploited in the wild, but we recommend that administrators upgrade as soon as possible. Those on Synapse 1.15.1 or earlier should upgrade to Synapse 1.15.2, while those who have already upgraded to Synapse 1.16.0rc1 should upgrade to 1.16.0rc2.
Get the new releases from any of the usual sources mentioned at https://github.com/matrix-org/synapse/blob/master/INSTALL.md. 1.15.2 is on github here, and 1.16.0rc2 is here.
Changelog for 1.15.2 follows:
Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild.
A malicious homeserver could force Synapse to reset the state in a room to a small subset of the correct state. This affects all Synapse deployments which federate with untrusted servers. (96e9afe6)
HTML pages served via Synapse were vulnerable to clickjacking attacks. This predominantly affects homeservers with single-sign-on enabled, but all server administrators are encouraged to upgrade. (ea26e9a9)
This was reported by Quentin Gliech.