Some of you will have been bitten by a bug that prevented Synapse 1.3.0 from starting up correctly. If this is you, please upgrade.
Additionally we have taken the opportunity to fix a dependency bug for our intrepid packagers.
Apologies for the inconvenience.
The changelog since 1.3.0 follows:
sdnotifypython package. (#5871)
In which Matthew talks about:
- perf speedup
- turn tester
- extremities fix by default
- security work
- privacy work
- privacy; IS and IM permissions and management. Hashed lookup API. Metadata cleanup (GCing redactions; deleting media; history retention); TURN management
- aggregations paused
- FTUE next up
- Immutable DMs
- ...then communities
- 0.3 came out last week - handles DMs; lots of polishing; reduces the APK down to ~10MB!
- moving stuff into proper managed infrastructure
- bifrost should be back soon?
- gitter kept breaking but we're actually working with their team to fix that
- working out how to automate deploying them on modular hosts
No MSCs have been approved.
This Week in Ruma: https://www.ruma.io/news/this-week-in-ruma-2019-08-11/
He was also a guest of the Rustacean Station podcast this week:
Ruma and the Matrix Communication Protocol: An Interview with Jimmy Cuadra (Rustacean Station podcast): https://rustacean-station.org/episode/001-ruma/
Construct implemented event relations from the client-server API. Now clients can view edit history of messages.
Learn more in #construct:zemos.net
Progress for Dendrite this week has been a bit starved due to ongoing privacy work from the backend team. However it continues to move forwards with the excellent help of cnly reviewing and merging PRs.
We had 3 authors have pushed 5 commits to master and 6 commits to all branches. On master, 14 files have changed and there have been 298 additions and 121 deletions.
Notably we had trion129’s work on providing a fallback webpage for recaptcha authentication finally merged! This was another early PR that was dragged up from the bottom of the list to be modernised and integrated into the current codebase.
Also this week was some work from cnly on refactoring gomatrixserverlib and exposing some more of its internal constants to deduplicate code between itself and Dendrite.
Finally, we had some more work on an unmerged PR from cnly, which adds some internal query APIs for which servers are currently joined to a room, for use by other components later down the line.
No new Sytests are passing this week. We’re still currently at 172 tests passing out of 761 tests in total.
Matrixmon, the perl C2S testing utility has been updated to v0.2.0 with support for SSL connections.
Synapse 1.3.0 was released - check out the blog post.
contains performance improvements to reduce disk I/O and reduce RAM usage. We’ve been running it on matrix.org for a week or so and are really pleased with the results.
mautrix-telegram got some fixes to bugs that appeared during the move to mautrix-python. It also got a manhole similar to the one in synapse, which gives admins access to an interactive Python shell inside the bridge while it's running. The main part of the manhole (server and repl) is in mautrix-python, so you can expect the feature to appear in mautrix-facebook, mautrix-hangouts and possibly maubot in the future.
mautrix-whatsapp and mautrix-hangouts can now automatically add rooms to a user-specific community to help with filtering. mautrix-facebook is also getting that feature in the near future.
mautrix-facebook now has a search command, which means you can now actually initiate conversation with facebook users.
From the team:
- Privacy work continues
- STUN fallback server for assisting with voice & video call negotiation (only used when your homeserver is not configured with it’s own TURN server) changed from Google to Matrix.org server and a prompt has been added to request permission before using the fallback server
- Many small steps towards supporting user choice of identity servers and integration managers, including no identity server at all
Users can now download artifacts from my gitlab account since I got an SDK container from CoDerus running, cross compiling to Sailfish-RPMs in the Gitlab-Ci. But my programming progress on
masterlooks a bit silent because I swap to matrix-nio.
Alexandre Franke told us:
Fractal nightlies are building again.
yuforia told us:
- Reimplement ScrollBar for the message list view to make it more consistent with Riot Web. It has a flat appearance now and only appears when the mouse hovers over the list of messages. https://matrix.org/_matrix/media/r0/download/matrix.org/kVfBsoAsguMmESNThxnUmaTM
- Rewrite the list view partially to handle lists with several types of items more efficiently. The message list has text messages, images, membership updates, etc. Each type needs to be rendered differently, but items of the same type could reuse GUI components when they scroll into and out of view.
Since the coming 1.3.0 release is bringing along a whole bunch of perf improvements, (and I want to test them out on my IO starved setup) I'm building K8s optimized images of the RCs. Only the debian version of the image though.
It's basically the regular docker image, only with some changes to make it fit nicer in Kubernetes
And there's no Helm chart at the moment, was poking at that for a bit but took a break from building one as I - back then - had trouble with the amount of data that had to be generated
You can only have one Synapse pod at any given time, as it's not scalable. Though you can scale it with workers (as I do myself)
Database-wise, I'm personally running three node HA clusters using Stolon
We run a public instance on Permaweb.io for everyone to join. We’re a large community of developers focusing on the decentralized web, with lots of channels dedicated to IPFS. In fact, we even host Riot on IPFS! We make full use of Matrix’s bridging capabilities, to Discord, IRC, Slack, Gitter and Telegram too! Come join us at #general:permaweb.io or register at https://riot.permaweb.io/ (or any other compatible client) and say hi!
This week I made a Notification/Remind-Me-Bot using Travis's bot sdk, it took me 1 and half days, and is able to - set reminder, check reminder, cancel reminder, set interval reminder, cancel interval reminder. It is also able to store multiple reminders and cancel them using the numbers 1 - ∞ . Here is a link to my Github repo - https://github.com/joakimvonanka/Matrix-Remind-me-bot
Oleg's talk at FrOSCon was apparently really well received:
Video recording from the Matrix talk @ FrOSCon. Video is in German slides in English.
He's also thinking of writing a guide to creating presentations:
If someone is interested on an efficient way of creating presentation using only open source tools I'm planing to write an article on that.
Small spoiler: matrix is one of them 😉
This week, I have been mostly thinking about... merch. We blew the cache on stickers, so if you are waiting for stickers specifically and have not heard from me, that is probably why. Please contact me with any questions!
See you next week, and be sure to stop by #twim:matrix.org with your updates!
Well now, Synapse 1.3.0 is here.
The main thing to know about 1.3.0 is that is contains performance improvements to reduce disk I/O and reduce RAM usage. We’ve been running it on matrix.org for a week or so and are really pleased with the results.
Check out our message send heat map.
Other than that there are a bunch of bug fixes and tweaks to generally make things run more smoothly.
The changelog since 1.2.1 follows:
publicRoomswhen the public room list was cached. (#5851)
M_UNKNOWNfor errcode when a deactivated user attempts to login. (#5686)
enable_media_repois set to False in the configuration. If a media repo worker is used, the admin APIs relating to the media repo will be served from it instead. (#5754, #5848)
/syncstream could get wedged in rare circumstances. (#5825)
--log-configcommand line flags, and removes the deprecated
log_fileconfiguration file options. Users of these options should migrate their options into the dedicated log configuration. (#5678, #5729)
window.openerin default welcome page. (#5695)
/versionfederation requests. (#5730)
.well-knownrequests by sharing the SSL options between requests. (#5794)
Something a little different this week: Erik helped me install Prometheus logging on my own homeserver, and we recorded it for Matrix Live.
Interesting reading: https://github.com/matrix-org/synapse/blob/master/docs/metrics-howto.rst
<blink>YOU NEED MATRIX MERCH
Yes, it's true: Official Matrix Merch is available now. There are stickers, t-shirts and hoodies all available now, go and claim yours from https://shop.matrix.org.
I will be doing a talk on Matrix this weekend (tomorrow) at the annual Free Open Source Conference (FrOSCon) in Sankt Augustin (Germany). If you are around - come by and get some awesome [matrix] stickers! =)
Visit #FrOSCon2019:froscon2019.fiksel.info to talk about the event.
Final Comment Period
No MSCs have entered FCP
In Progress MSCs
Huge update from Andrew:
This week’s stats for Dendrite are in! 4 authors have pushed 11 commits to master and 11 commits to all branches. On master, 48 files have changed and there have been 676 additions and 146 deletions.
Of note are the following merged PRs:
- Implement client single event retrieval - #671
- You can now request a single event from Dendrite’s DB, assuming you have permission to view it.
- Account data events filtering database API and State events filtering database api
- Very old PRs from CromFR have been updated and finally merged! These lay the groundwork for providing filters across various API endpoints (used in search, /sync, etc)
- Add typingserver service to docker-compose
- Another fairly old PR by viccuad (their first for Dendrite!) finally reviewed and merged.
- Fix permission and 404 response for alias deletion - #654, Replace membership and visibility values with constants, Implement profile retrieval over federation - fixes #651 (this one is very useful), and Fix transaction IDs in transaction cache have global scope
- A myriad of changes and fixes by cnly
We also have a number of PRs that were moved forward but not merged. Add auth fallback endpoint (our oldest PR at the moment!) which we mentioned last week is so very close, but not quite there in time for this TWIM.
In terms of passing Sytests, Dendrite now passes 172 tests, up from 167 last week. This is out of 761 tests in total. So just a small bump (0.6%), but note that things that are crucial for Dendrite development at the moment, such as federating, only cover a small subset of tests, so each passing one can bring us much closer to getting Dendrite usable day-to-day.
The big news this week we’ve landed some massive DB improvements (https://github.com/matrix-org/synapse/pull/5706) which should make message sending on matrix.org (and any other server) feel noticeably snappier. :) It'll be in the next release.
Outside of perf, we’ve also been continuing with our privacy project, sydent now supports hashing third party identifiers instead of storing the raw form, and in the coming week we’ll look at minimising the meta data we store. You can track our progress across the full project here (https://vector-im.github.io/feature-dashboard/#/plan?label=privacy-sprint&repo=matrix-org/synapse&repo=vector-im/riot-web&repo=vector-im/riot-ios&repo=vector-im/riot-android&repo=vector-im/riotX-android&repo=matrix-org/matrix-doc&repo=matrix-org/sydent)
Work continues on our installer to make it easier to configure Synapse and we’ll be looking for some community feedback rsn. The room directory revamp is now very close and we hope to have something live on matrix.org in about a week.
Finally we’re working on improving the efficiency of smaller instances sending messages into large rooms, we’re still at the design stage, but it will make a huge difference for anyone self hosting.
andrewsh also informs us:
synapse in up-to-date in Debian unstable — and in buster-backports (uploaded last week)
This Week in Ruma: https://www.ruma.io/news/this-week-in-ruma-2019-08-04/
Also, get live-streamed Ruma development: https://www.jimmycuadra.com/posts/twitch-live-streams-of-ruma-development/
Does the video include time spent waiting for
async to land in Rust?
If you fancy running highly experimental software on your homeserver which might break things, I have two things for you:
matrix-key-server ( #matrix-key-server:t2bot.io ) is an implementation of a Matrix key server with notary support. Although it follows the specification, it has not been tested against Synapse. It is however fully featured: check it out on the federation tester ( https://federationtester.matrix.org/#keys.t2host.io ) or by querying it yourself ( https://keys.t2host.io/_matrix/key/v2/query/matrix.org ).
matrix-room-directory-server ( #matrix-room-directory:t2bot.io ) is less experimental than the key server but is still very early days. Currently it only offers the ability to manipulate the federated public room directory for your server, but in future it is planned to be its own standalone directory server (room aliases without having to run a whole homeserver). Check it out by searching the t2bot.io room directory from your client.
Reuse the ListView of messages across different rooms to reduce memory usage (Experimental) Remember and refocus the last read message, making it easier to go through all unread messages while switching chat rooms freely.
Renaming of QMatrixClient to Quotient has been finally merged to the master branch; Quaternion master uses it from now, too. Packagers are welcome to make test builds and report bugs in #quotient:matrix.org. libQuotient 0.6 beta is coming close now!
- Test on iOS 13 Beta. Beta 6 fixed most bugs discovered on Beta 5
- Released 0.9.2 (Waiting for Apple review at the time of writing)
- Working on privacy concern.
- Working on privacy concern.
- Release of v0.3.0 on Friday: full changelog can be found here: https://github.com/vector-im/riotX-android/releases/tag/v0.3.0
- We are working on read receipt management, it’s nearly functional
Changes: reworked unbind (MSC1915).
Now ma1sd is compliant with the MSC1915 (unbind).
and then 2.1.1:
ma1sd release 2.1.1 with the security fix and more strict request validation, allows only requests from ma1sd's matrix domains (mirroring bind). Download links: https://github.com/ma1uta/ma1sd/releases/tag/2.1.1 (archives and the deb package) and https://hub.docker.com/r/ma1uta/ma1sd for docker image.
tulir has been making big updates to two of his bridges:
mautrix-facebook can now bridge formatting, mentions, replies and reactions in both directions.
There is also a logout command now.
mautrix-telegram's switch to mautrix-python is nearly finished (i.e. it didn't cause any errors for the past few days when testing in production). The main reason for the switch is using one Matrix library for all my python bridges. It also means the bridging code like double puppeting and command handling I shared between mautrix-facebook and mautrix-hangouts is now also used in mautrix-telegram.
Visible changes directly caused by using mautrix-python:
- Logs are now colorful.
- Python 3.5 is no longer supported.
- The bridge will refuse to start without access to the base config file.
Other changes that happened during the switch:
- Telegram "Saved Messages" can now be bridged even when using double puppeting.
- Mentions on Telegram are marked as read when using double puppeting (messages were already being marked as read, but mentions weren't).
Also, this actually happened last week and the week before that, but anyway: I've moved the CI and docker registry of my active projects to a self-hosted GitLab at mau.dev. Specifically, the CI/docker registry for all four mautrix bridges and maubot and automatic builds for gomuks have been moved. My maubot plugins also have automatic .mbp builds in the CI. For the docker registry, prepending
dock.mau.dev/to the existing image names will work. The old places (docker hub, dl.maunium.net) won't get new builds anymore. The repos on GitHub are still the "canonical" repos, but they're mirrored more or less instantly with maumirror.
mautrix-telegram will probably get some sort of history filling in the near-ish future
I'm going to add some way to put bridged rooms into personal communities for filtering purposes. Not yet sure if it'll be fully built into the bridges or some kind of an external script
Hi folks, we've released a RC of the next irc bridge version. Check it out at https://github.com/matrix-org/matrix-appservice-irc/releases/tag/0.13.0-rc1
I've just released Email2Matrix - an SMTP server that can relay incoming messages over to Matrix based on mappings defined in a configuration file.
While it can also be installed standalone and work with any Matrix homeserver (see its documentation), the simplest way to install it is using matrix-docker-ansible-deploy and its guide for Email2Matrix installation.
The configuration process (users, rooms, mappings) is quite manual, but it's simple and has worked well for me for the past year and a half. I've only just polished it up a bit, released and integrated with the Ansible playbook, so others could benefit from it too.
mijutu appeared, and announced:
I started a "matrix-xmpp-filter" project. It's like matrix-ircd, but with xmpp instead of irc. It can also filter messages by weekday, time and regular expressions. Target audience is Sailfish phone users, but it could be used with other xmpp clients too (no xmpp MUC support required). https://k2c42.dy.fi/matrix-xmpp-filter.git/ #matrix-xmpp-filter:ellipsis.fi.
https://github.com/Half-Shot/matrix-github has had quite a few updates. Notably:
- Support for storing users access tokens securely, using a bot command.
- Multi-process bridging: The webhook portion of the bridge can be run in a seperate function if needed for performance.
- Images and mentions now work in both directions
- The readme is now actually helpful, and have also made
- You can now use it via oauth
Currently working on a Puppet module to manage Matrix Synapse installs (both directly and through docker), not quite ready for prime-time yet but watch this spot.
I develop matrix Bot, which converting voice messages to text. It use Yandex Speech API and Yandex API cloud (some as aws) for temporary store voice-data before converting. https://github.com/progserega/voice2textMatrix Bot have such logic:
- user add bot to room (for example room with whatsapp bridge users - now bridge support adding bot to such rooms)
- bot listen room, and when get voice-message - send it to Yandex-cloud for translate (now support only Russian language).
- When translating is success - bot get result text and show it in room as notice, such: "Username said: text"
- Bot also receive some command, which allow disable it in this room, or disable translating for user, which send command..
Seeing this, I wondered, "y tho?", luckily progserega was able to explain with a graphic! They say a picture paints a thousand words, and it's clear from the conversation below why he'd want to have speech-to-text capabilities.
The Modular Matrix -> Matrix migration tool now supports migration of power levels to the new user.
So that's all I have to say to you right now! See you next week, and be sure to stop by #twim:matrix.org with your updates!
Here at Matrix we’re frequently asked for official merch. While those who choose to sponsor Matrix development on Patreon have always been blessed with branded t-shirts, it was otherwise very difficult to obtain official merch.
Today, those dark times have ended, as we announce the Official Matrix Merch Store!
Now available from shop.matrix.org, we’re offering packs of Stickers, T-Shirts, and Hoodies!
Stickers are provided in three types: hexagonal Matrix and Riot stickers, and rectangular transparent Matrix stickers.
T-Shirts are available in all sizes and in Unisex and Womens editions. We’re using Gildan SoftStyle t-shirts, which are popular amongst printed shirts for being both soft and durable.
Matrix-branded hoodies are something very special. Superbly embroidered, they are comfortable and stylish. On a recent trip to San Francisco, a passerby stopped a Matrix guardian in the street and asked where they could buy a Matrix hoodie without knowing what Matrix was.
You really need one of these.
All merchandise proceeds go to the Matrix.org Foundation, which helps fund Matrix development!
The Official Matrix Merch Store is open now: shop.matrix.org!
I chatted to Rick about the new Small instances available on modular.im.
No MSCs have been approved.
Final Comment Period
In Progress MSCs
(kudos to anoa for providing this well-formatted summary section)
there's now a pull request in for full native math rendering support (via KaTeX), which will replace the shoddy bot that I made last week (or whenever)
This week we’ve been working on implementing identifier hashing in sydent, a brand new installer for Synapse, we’ve trialled some new db perf improvements which look very promising (more on this soon) and finally very close to an all new implementation of room search.
Next week we’ll push out the all new Sygnal, continue with the installer and room search and pick up some tasks under our privacy umbrella to ensure that Synapse is not holding onto any data that it does not strictly need to.
Dendrite progress marches forwards. This week we had:
- Room tagging implemented (thanks peekay_46!)
- A PR for redactions opened by our GSoC student cnly
- A PR for authentication fallback (for when clients don’t have a web browser built in and want to use recaptcha from trion129
- This has been in the works for a while, and just has a couple small changes left to go!
- Two PRs for filtering database functionality from CromFr
- A PR for fixing the scope of transaction IDs in Dendrite’s transaction cache from cnly
Cnly’s GSoC period ends on August 26th. He has been a massive boon to the project’s cadence so far and we hope he will continue even after GSoC ends when he has time :)
Provide automatic deduplication and rate-limiting when downloading media resources. This improves performance of GUI applications, where avatars of many users may appear on screen at once, and some of them may be identical.
libQuotient's master branch now supports sending and receiving reactions, and receiving message edits. We also have another PR in the works from aa13q that would add support for events decryption, as a part of his GSoC endeavour.
Alexandre Franke announced a new edition of Fractal:
Nightlies of Fractal are currently stuck on a 2 weeks old build because of one of our dependencies… but the long awaited 4.2 stable release is out! You can get it out fresh from flathub as usual.
New features: Adaptive window, mobile friendly Window size and position are remembered Redesigned login Spellcheck Network proxy support Typing notifications Badges are shown for operators and moderators Keyboard shortcuts for easier navigation across rooms Better uploads: Audio and video files are now tagged correctly Image files have a thumbnail Various tweaks to the file chooser Bugfixes: Logs actually output something now A few issues with invites and direct chats have been resolved More reliable scrolling Some crashes fixed Under the hood: Code refactor continues We’re now using Rust 2018 Many improvements to the build system and CI
Lots of news about Neo!
- There's now an additional maintainer (joepie91)!
- A lot of the internals have been refactored, so they should be more maintainable and reliable going forward. Also some future work planned on refactoring the state handling using Redux, which should make it much faster to fix issues and add new features in the future. There are even some ideas already for a future plugin API!
- Display has been improved in a lot of places. Error messages are now more clearly formatted, images in reply-quotes are now shown as thumbnails rather than just a filename, and the reply-to popup now shows the full event that you're replying to properly. The chat window now correctly sticks to the bottom when you're scrolled to the end and receive new messages, even when an image or video loads - though per-room scroll position restoration isn't done yet.
- There's now an experimental compact mode! It uses a more IRC-client-like layout for messages, and generally just fits more content onto the screen. It can be enabled with an experimental flag. A screenshot of the compact mode can be found here.
You can try the compact mode at https://neo.pixie.town/app/?compactMode=true.
Message editing composer now supports undo/redo.
- Reactions: List of who reacted
- Native Camera. The embedded camera view has been removed. There is now a new action “Take photo and video”
- Privacy: We have been working on implementing terms to display before using integrations
- VOIP / Remove default stun server
- Make Integration Manager optional (disables widgets, calls)
- Feature / Direct Room Creation Flow
- Improvement / Local echo of pending edits
- Improvement / Seamless transition from timeline to fullscreen image preview
- Bug fixes
Pattle is now available on Google Play!
Hey folks, first an update from the bridges integrations side. We've brought back snoonet and oftc on the integrations menu so you can once again connect matrix rooms to these networks. Other networks should work as standard.
On the matrix-appservice-irc side we've made a few fixes to the handling of IRC modes (things that handle how users should behave) when bridged to IRC. This should hopefully make opping and voicing users more reliable. There are a few other fixes in the pipeline too, so a release isn't too far off.
I had an adventure this afternoon into the world of bridging again, and have made a Github to Matrix bridge. At the moment you can join aliases and saturate your homeserver with the entire history of a issue or PR. You can also chat to folks on issues in realtime.
Check it out at: https://github.com/Half-Shot/matrix-github
Just pushed a debian-based K8s-optimized image as well, it's 150MB larger than the alpine one, but on the other hand it comes with jemalloc support so it's nicer on the RAM instead.
kai is someone with no fear of rapid iteration! Versions 1.2, 1.3, 1.4 and 1.5 of his script were made available this week:
I finished version 1.5 of my small command line based federation tester. The bash script relies heavily on popular Unix tools like awk, curl, jq, sed and so on. Compared to https://federationtester.matrix.org, the outputs are a little more detailed and additional tests are performed, especially on the supported SSL protocols. Currently, it has only been tested under Linux.
The current version improves the handling of port in the .well-known and DNS SRV configuration.
You can download it from #cli_federation-tester_de:matrix.chat-secure.de or directly via https://matrix.chat-secure.de/_matrix/media/r0/download/matrix.chat-secure.de/MDwYLdrxRdudmcgDzBEALCzN
jcgruenhage has been working on a bot in relation to the startup he's working with:
I made a bot for issuing Json Web Tokens to matrix users based on what homeserver they are on. It's implemented as a maubot plugin (best way to write bots right now) and licensed under the AGPLv3. You can find it over at https://gitlab.com/famedly/bots/jwt, and talk about it in #jwt-bot:famedly.de
As for the usecase, we want to give people from customer homeservers access to an API component, but don't want to maintain a separate account database. This way, they can request a token from the bot and then use that to interact with the API component
<Feneas community hat>We've added a public fully featured Telegram bridge to our Matrix stack. More info in our forum.
</Feneas community hat>
This is great - we must tip the hat to tulir, creator of this widely-used bridge.
Interview about DINSIC's use of Matrix (all in French)
So that's all I have to say to you right now! See you next week, and be sure to stop by #twim:matrix.org with your updates!