Hey all, itās me again, not-anoa, with your spec update. I donāt have a graph for you this week, but I do have curated content which hopefully holds you over until next week š
This week weāve seen a few new MSCs get opened up:
As demonstrated, a few of them are follow-on work from aggregations. A lot of the work is an effort to get MSC2675 - Serverside aggregations of message relationships through FCP - itās changed quite a bit in the last week, so if you reviewed it before then please give it a quick read!
Thib has caught me quite close to the deadline on TWIM, so while I donāt have a random MSC for you this week I do recommend some light reading around aggregations and extensible events - these are both major features for Matrix and help shape the future for other, even more exciting, features.
The goal of this MSC is to restrict who can access files in your content repository, which is used to share files, images, voice messages and more on Matrix. Currently this is secured by using random identifiers, but this MSC wants to add a few more restrictions: A signed-in user can still access everything, but if you donāt provide an access token, when downloading media, you either can access no media, only media that was sent from that server, only media which the server already downloaded or everything. The level of access can be set by the server admin.
I think this would be really nice to have, but it has various challenges when implementing it in clients and when it needs to work across federation. It could limit how much random users can fill up your disk though, which is especially important for small server admins!
Happy holidays! This week we released Synapse 1.49.0, our last planned release of the year. This is the last release that supports Python 3.6 or PostgreSQL 9.6; if youāve not upgraded, now is the time!
Most notably, this release includes stable support for MSC2918: Refresh tokens. This is a more secure alternative to long-lived access tokens, and weād encourage clients to implement support for refresh tokens as described in the MSC.
We also released Sygnal 0.11, which includes loads of bugfixes. For the Element-managed Sygnal instances, this release has reduced our daily Sentry error rate by over 99%, dramatically improving the signal-to-noise ratio of our monitoring.
Sydent is the reference Matrix Identity server. It provides a lookup service, so that you can find a Matrix user via their email address or phone number (if they have chosen to share it).
Iāve just published the third and final post on Sydentās type annotations (part 1, part 2). This one is more reflective and tries to quantify our efforts: how well have we done?
We are planning to have a small release next week, that fixes a few issues with the 0.9.0 release. It would be lovely if some of you could test one of our nightlies or could check if the translations for a language you speak are up to date in our weblate.
Some of the fixes this week include another crash fix for handling matrix links from your browser, notification bubbles that can show values over 9000(!), better preview images for sticker and emote packs created in Nheko, allowing you to click links in replies, a few layout and click area fixes. Nheko now also keeps track of your latest reactions and gives you easy access to them in the hover menu.
Nheko now also finally supports pinned messages! Most of you probably donāt know, but that feature has pretty much always been in the matrix spec, but very few clients expose it. Today Nheko joins that rank! Itās part of our goal to provide better support for building communities. Topics can be quite limiting, because they can only contain plain text. Pinned messages allow for much more creative freedom! They can also be encrypted, while state events currently never are, but the key for that isnāt reshared, so currently experience in encrypted rooms is a tradeoff. Maybe weāll go for an encrypted description event in the future, but for now this seems to be a good solution to bridge the gap.
Letās hope the current master branch is good and weāll have a release with ALL THE FIXES next week! And thank you everyone, who already translated and reported issues! It took less than 10 hours to have 5 languages updated to 100%! Last year we didnāt even have that many languages at 100%! You guys are AMAZING! <3
Development has kicked off for location sharing! Watch this space for more news in the new year.
Threads
List of threads in a room is now more accurate and viewing very long threads has improved with the integration with the homeserver APIs. (These APIs are not enabled on matrix.org yet.)
Threads on mobile platforms are catching up to Web, with many changes in review.
Iterated on the design for restricted history threads and search results across all platforms.
Design for thread previews in room list has been improved for mobile platforms.
Improved Android bottom sheet expandable and scrollable behaviour design.
Weāve created MSC3567 to fix some edge cases with API calls
Polls
Only one Android bug is outstanding!
Gathering feedback to incorporate into the next phase of development, join us for the community testing session on Monday at 17:00 in #element-community-testing:matrix.org
VoIP
Continuing with polishing & bug fixing for full mesh calling app. One remaining bug somewhere causing members to not connect properly. Finalising how much of registration & login we can/want to implement for the short term until itās replaced by OAuth login.
Community testing sessions
Tested all three Release Candidates (RCs) at the same time for the first time! Did not find any new web issues when testing first time user experiences and basic interactions on Web. We found 6 new issues on Android and 9 on iOS.
Tried out the Information Architecture changes on web with the Delight team. Very exciting to see these changes available in Labs already!
Closed 33 out of 60 re-tested encryption issues on Web and prioritised a few to be considered for upcoming work.
Weāve been working on auto-generating code and documentation for events raised by our client analytics (code here, PR for documentation generation here). This allows us to publish a comprehensive list of everything our analytics capture, which is great both for end users and for people doing analysis.
In labs (you can enable labs features in settings on develop.element.io or on Nightly)
First milestone reached on Information Architecture! To try it out, enable āThreaded messagingā, āUse new room breadcrumbsā and āNew spotlight search experienceā in the Labs settings.
Weāre actively collecting feedback on IA to review in the new year.
Fixed an issue around some voice messages not playing in bridged rooms.
Polls changes are in this weekās release candidate (RC) and will be available behind a Labs flag in the next release.
Analytics changes have been merged into the RC and opt-in will be available soon.
In development:
Spaces is coming closer to completion: weāre there on space creation, adding rooms to spaces, space management and more. Release coming in the new year!
Work on implementing new login flow continues, with more improvements incoming.
Improvements to the timeline performance (faster display, faster scroll) after updates to the way we store timeline events.
Analytics framework has been merged, opt-in request will be shown to users once more translations have landed. For now, you can enable it in the settings.
Iāve been working on a matrix-based tool for highlighting and annotating websites. By building on top of matrix, we can effectively have a decentralized, federated and collaborative way to leave notes and highlights on pages. I wrote a brief introduction on my blog, as well as made a little bit of a simple demo video. Hereās a copy-pasted list of planned and existing features:
Current: Create and send website annotations over Matrix.
Current: Store data in a decentralized and federated manner.
Current: Share highlights with other users, including those on other
servers.
Current: Group annotations together and create multiple annotation
groups
Planned: Use Matrixās End-to-End encryption to ensure the secure
transmission and storage of highlight data.
Planned: Leverage the new m.thread
MSC
to allow users to comment on and discuss highlights.
Planned: Use something like ArchiveBox to
cache the current version of a website and prevent annotations from
breaking.
Matrix highlight for probably the last time this week. Highlight comments and self-editing are implemented, though Iām not sure Iāll stick with this particular model.
Iāve been teaching a class this semester using a tool built on the matrix-js-sdk and tentatively entitled populus-viewer. Populus-viewer uses Matrix as a backend for the social annotation of PDFs, with the goal of helping matrix become a platform for teaching and scholarly collaboration. If youāre interested in learning more, or adopting populus-viewer in your teaching, come visit #opentower:matrix.org!
Populus-Viewer currently supports:
Annotation of PDFs with highlights and pin-drops
Matrix conversations based on annotations
Audio and video messages
Replies, reactions, and redactions
Markdown for rich text
LaTeX for mathematical notation
Typing notifications
Synchronized reading position across devices
SSO, with single-click links for embedding in an LMS like Canvas or Blackboard.
As the project develops, Iām hoping to continue to polish the reading experience, and to add support for other mime types (audio and video especially).
TWIM I got started on the chat part of matrix-streamchat, to provide a lightweight embeddable Matrix client to be used alongside streams in Owncast and PeerTube. It will use guest access, and lots more features to come like extensive custom emote support. For now refactoring a bunch of things first before adding more flashy things, but who knows, you might see me do it live on https://stream.pixie.town
Introducing vodozemac (https://github.com/matrix-org/vodozemac) - a rewrite of libolm in Rust by poljar and dkasak! The intention is for this to become the reference Olm implementation going forwards, and to get it audited asap (and benefit from all of Rustās nice safety and parallelism features, and better crypto primitives!)
simplematrixbotlib is an easy to use bot library for the Matrix ecosystem written in Python and based on matrix-nio. Version 2.5.0 adds improvements to the config feature.
Feature Changes:
Add allow/block lists: This allows bot developers to specify allow/block lists of users who have permission to interact with the bot using regex.
Permissions can checked with Match.is_from_allowed_user(), which lets the bot developer choose which responses are restricted.
The allow/block lists can by modified at runtime via the Config.add_allowlist(), Config.remove_allowlist(), Config.add_blocklist(), and Config.remove_blocklist() methods.
A thank you to HarHarLinks for their contributions to version 2.5.0!
Dimension, an integration manager alternative for Element, has received a bunch of updates over the last couple weeks:
Added (early) support for matrix-hookshotās GitHub, Jira, and Webhooks bridging.
Most of a redesign complete to make it feel more like an Element UI rather than something special and third party.
If youāre interested in helping out in getting the redesign finished, please check out https://github.com/turt2live/matrix-dimension/issues/458 which has reference mockups and linked issues. The major parts are the ācomplex botsā (Travis CI, RSS, etc) and the sticker integration. Unfortunately, I donāt have enough free time to work on it myself in the near term, but will get back to it eventually š
And now, a complementary screenshot of the Good⢠parts:
The homeserver should be in the form of https://domain.tld
The username should be the username, not the user id. (krazykirby99999, not @krazykirby99999:matrix.org)
The room_id should be the internal room id of the room, not the published address. (!QQpfJfZvqxbCfeDgCj:matrix.org, not #thisweekinmatrix:matrix.org) This can be found under Room Options > Advanced > Room Information in the Element Client.
Other
If the room_id is not specified, the bot will send the message to all joined rooms.
If the message is not specified, it will default to Commit:.
The bot will join all invited rooms upon the start of an action.
matrix-imposter-bot - A bot that uses your account to repeat other peopleās messages. This gives relay-bot capabilities to puppet-only bridges.
I made this project a while ago to hack in a relay mode to the mautrix Facebook bridge. But as of this week, that bridge supports relaying natively! š Thus, my main motivation for maintaining imposter-bot is obsolete, and the project will be on indefinite hiatus.
With that said, it can (mostly) still be used to add relay support to any bridges that donāt yet support a relay mode themselvesābut native relay support is always better!
Thanks to everyone whoās shown interest in the project, and to tulir for making such great bridges!
A project has started to re-implement the venerable mIRCstats for Matrix! Itās in very early stages, right now it only does āgetting a data-frame of events for a list of roomsā and has no actual visualisations baked in yet. However, weāre moving quickly, and I hope to have some initial easy-to-use viz in place over the Christmas break.
The project is written in R (because I am an R user, and its good for data and viz work :P) and you can find it here. If youāre new to R and want to give it a go, check out the extremely brief howto I just wrote here. I look forward to all the ways you will tell me itās broken!
Board games are great. And Matrix and its widget api turned out to be an excellent environment to create collaborative board games. With some really impressive conditions:
I donāt have to maintain a server with a database.
I donāt have to create a custom account systems user need to register. They play with their matrix account, which also makes accessibility great. Someone invites you in a room with the game and you can play!
I just need to host one static file and ppl will be able to play as long as that static site exists.
This project tries to be two things. A tech demo and inspiration to what is possible with widgets (Especially, with the changes on how widgets can be displayed in element (Check the āmatrix liveā Demos! š) )
Second it should serve as source and resource. For ideas and solutions on how no trust games can be executed without server (third party) side logic. And, for the ones interested, also as a resource on how widgets are implemented.
Last but not least the game Saint Petersburg is really fun. It takes a couple of minutes to grasp the rules but it is one of those games where there are so many things that can be considered with simple rules that it becomes more and more exciting with each round. So I really invite you to check out the rules and give it a try. Its best to start in the Git Repo or join the this room: #st-petersburg-auth:matrix.org
To put it simple, the widget works like this: The game state is stored in the room state and is updated through the widget directly.
This of course raises questions: How is it still possible to prohibit users from cheating and manually changing parameters like, how much money they own. Everyone (who has the permission) is always able to send whatever state events they want?
How is it possible to draw random cards if there is no third party involved. Could I not just send a state event with the cards that I hope are going to be drawn and are beneficial for me. Can we make card drawing deterministic? Not really since then everyone know what is going to happen. Which kind of breaks the gameā¦
I would be super happy, if someone is interested and wants to find answer to the questions above by checking out the README.
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank
Hostname
Median MS
1
rustybever.be
461
2
conduit.supercable.onl
524
3
dendrite.supercable.onl
539
4
conduit.cyberdi.sk
953.5
5
matrix.awesomesheep48.me
1434.5
6
s2.toldi.eu
1593
7
0x1a8510f2.space
2125
8
dendrite.beckmeyer.us
8497
Thatās all I know š
See you next week, and be sure to stop by #twim:matrix.org with your updates!
The Foundation needs you
The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.
It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.