Security update: Synapse 0.31.2

14.06.2018 00:00 — TechMatthew Hodgson

Hi all,

On Monday (2018-06-11) we had an incident where #matrix:matrix.org was hijacked by a malicious user pretending to join the room immediately after its creation in 2014 and then setting an m.room.power_levels event ‘before' the correct initial power_level for the room.

Under normal circumstances this should be impossible because the initial m.room.power_levels for a room should be set before its m.room.join_rules event, meaning users who join the room are subject to its power levels. However, back before we'd even released Synapse, the first two rooms ever created in Matrix (#test:matrix.org and #matrix:matrix.org) were manually created and set the join_rules before the power_levels event, letting users join before the room's power_levels were defined, and so were vulnerable to this attack. We've since re-created #matrix:matrix.org - please re-/join the room if you haven't already!

As a defensive measure, we are releasing a security update of Synapse (0.31.2) today which changes the rules used to authenticate power_level events, such that we fail-safe rather than fail-deadly if the existing auth mechanisms fail. In practice this means changing the default power level required to set state to be 50 rather than 0 if there is no power_levels event present, thus meaning that only the room creator can set the initial power_levels event.

We are not aware of anyone abusing this (other than the old #matrix:matrix.org room) but we'd rather be safe than sorry, so would recommend that everyone upgrade as soon as possible.

This of course constitutes a change to the spec, so full technical details and ongoing discussion around the Matrix Spec Change proposal can be followed over at MSC1304.

EDIT: if you are aware of your server participating in rooms whose first power_levels event is deliberately set by a different user to their creator, please let us know asap (and don't upgrade!)

This work is all part of a general push to finalise and harden and fully specify the Server-Server API as we push towards a long-awaited stable release of Matrix!

As always, you can get the new update from https://github.com/matrix-org/synapse/releases/tag/v0.31.2 or from any of the sources mentioned at https://github.com/matrix-org/synapse.

thanks, and apologies for the inconvenience.

🔗Changes in synapse v0.31.2 (2018-06-14)

SECURITY UPDATE: Prevent unauthorised users from setting state events in a room when there is no m.room.power_levels event in force in the room. (PR #3397)

Discussion around the Matrix Spec change proposal for this change can be followed at https://github.com/matrix-org/matrix-doc/issues/1304.

Synapse 0.31.1 Released!

08.06.2018 00:00 — ReleasesNeil Johnson

Folks,

v0.31.1 fixes a security bug in the get_missing_events federation API where event visibility rules were not applied correctly.

We are not aware of it being actively exploited but please upgrade asap.

Sorry for the inconvenience, Synapse and the Matrix spec are still in beta and we still ironing out gaps such as this one.

You can get the release here.

🔗Changes in synapse v0.31.1 (2018-06-08)

v0.31.1 fixes a security bug in the get_missing_events federation API where event visibility rules were not applied correctly.

We are not aware of it being actively exploited but please upgrade asap.

Bug Fixes:

  • Fix event filtering in get_missing_events handler (PR #3371)

This Week in Matrix 2018-06-08

08.06.2018 00:00 — This Week in MatrixBen Parsons

🔗GSOC Updates

With the first evaluation date coming up, let's take a look at what some of the GSOC students have been working on.

🔗Zil0 on the matrix-python-sdk

I am working on implementing end-to-end encryption in the Python SDK. As of now, I have done a good part of the encryption and decryption work with Olm and Megolm, enough to allow communicating with Riot in an encrypted room. My next goals include device list tracking and key persistence, which are the main steps left before the implementation starts being usable in a real environment.

🔗apwhitehat on Dendrite

My aim is to achieve feature completion on Dendrite. Have got lots of help from anoa, for which I'm very grateful.

Features worked on this month:

  • we made a transactions cache/table for idempotency. So now dendrite will not reprocess events as far as client-server api is concerned.
  • added request authentication function which recognises an application service user (partially landed.)
  • username auto generation, which let's you register without username (will be used for guest access later.)
  • We also added a tokens library based on macaroons, however we might not be using it anytime soon. Since it's been known to be very problematic (on synapse).
  • Other small bug fixes not big enough to mention.

🔗Clients

We are rich in client announcements this week!

🔗palaver

Arne has announced v0.1.0 of Palaver:

More news from the JVM-world: I've just released the first Alpha version (v0.1.0) of Palaver, a Desktop client written in Kotlin: https://github.com/MrCustomizer/palaver/releases/tag/v0.1.0. As backend it uses the matrix-java-sdk, the GUI is written in TornadoFX, a Kotlin-Wrapper for JavaFX. The room for this client is #palaver:matrix.localtoast.de. The current features are listed in the changelog: https://github.com/MrCustomizer/palaver/blob/v0.1.0/CHANGELOG.md. And there is a little demo video on youtube, too: https://www.youtube.com/watch?v=AuGuxAPuRIM.

I enjoyed this video enough that I'm embedding it here:

🔗matrique returns

Black Hat is working on Matrique:

a matrix client using golang and QtQuick controls 2. It is not ready...Yet. PRs and issues are welcomed!

🔗neilalexander has a new macOS Client: seaglass

neilalexander has begun work on "seaglass", a client for macOS using matrix-ios-sdk, he's only just begun, but for now see the screenshot below:

🔗kitsune: GTAD and libQMatrixClient

kitsune has announced GTAD v0.6 and libQMatrixClient v0.3. We've covered GTAD before, but I think it's worth including this note from the readme:

GTAD (Generate Things from an API Description) is a generator of code from a Swagger/OpenAPI specification. Initially made to generate marshalling/unmarshalling C++ code for Matrix CS API, it can be extended to support other API descriptions and other programming languages with static type checking.

kitsune regarding the GTAD 0.6 release:

A new version of API code generator, GTAD, 0.6, has been released today, adding support of variant types, proper dealing with definitions referencing other files ($ref) and more options to override schema names - even defined inline. Most importantly, GTAD has got extensive README.md that describes (most of) the things needed to start writing your own templates! As usual, kitsune will be happy to help those who would like to try it (both with C/C++ projects and other languages).

libQMatrixClient has been benefiting from GTAD over the last 4 months or so - but this is the first release where GTAD is stable and feature-complete enough to be shared with other projects.

#gtad:matrix.org is the new room for GTAD chat and support.

and libQMatrixClient 0.3:

A new version of libQMatrixClient, 0.3, comes out this weekend. This is the first libQMatrixClient release to include (almost) all CS API requests and supplementary (non-event) definitions, thanks to GTAD 0.6. Notably, it now includes jobs to register users, manage devices and keys on the server (no local key management yet - E2E work has just begun). This version also gains centralised request error handling so that clients could deal with problems in a unified way, and support "Consent not given" errors of GDPR fame, so that client authors could automatically open consent pages. You can also trigger logging out of all devices through libQMatrixClient thanks to a very recent addition to CS API spec from TravisR.

🔗Fractal

Last week we linked to Julian's blog notes on the User Settings panel - this has now landed in Fractal master.

🔗nheko

nheko v0.4.3 is now available, from the release notes:

  • Overdue fixes for some regressions with regard to widget height introduced in the previous two releases
  • The matrix id will be shown on hover on the display name.

🔗riot-web

Riot-web: released an RC for 0.15.5. This RC includes some small bugfixes.

🔗riot-android

We have been working on Riot stability: fixing crashes and adding more tools to control code quality The community on android adds a more readable display of keys and a floating actions menu is coming.

🔗riot-ios

Working on perf. On stability too (like killing build warnings). Users can now re-request keys when they have UTCs.

🔗Other projects

🔗anoa on dendrite

We've got a shiny new application service component which runs as a separate process (if you're doing multiprocess dendrite) that handles all outbound communication to application services. Last week I got event sending working. This week I'm hooking up an internal API for other components (roomserver, c-s api) to talk to the app service component, as we occasionally need to ping AS's to ask about existence of rooms or users. Getting those two endpoints covered is the goal of this week.

🔗ma1uta Full Spec Implementation in Java

ma1uta appeared with an extremely ambitious piece of work. His goal:

I want to create a full spec's implementation on java (all 5 specification). After that I want try to write a homeserver (2 variants: distributed on java+kafka and simple which can run on a light vps). But it's a long-term goal.

So far work has begun on an implementation of the Matrix API in Java:

https://gitlab.com/ma1uta/jeon - another java implementation of the matrix api (client-server, server-server, application server, push server, identity server) using jax-ws. It corresponds the specification on https://matrix.org/docs/spec. On the next step I want dive deep into synapse to parse it's api and fill the gaps of the spec with sending pull request. May be I will write something like a TCK (test compatibility kit).

And an SDK for which there is a sample bot for mastodon:

Also this project has a very early sdk (client, bot). I will fix it after finishing works with the spec. https://gitlab.com/ma1uta/mxtoot - matrix-mastodon bridge. With this bridge you can invite a bot and read your home mastodon's timeline, post messages, reply and boost messages.

There are rooms to follow progress on these projects:

Also find updates on Mastodon: [email protected]

🔗The Continuing Adventures of Half-Shot and the Discord Bridge

Half-Shot has been at work on matrix-appservice-discord, and has made a v0.2.0 release! Looong feature list below is taken from https://github.com/Half-Shot/matrix-appservice-discord/releases/tag/v0.2.0:

  • Support Node v10
  • Option to disable @here and @everyone on the bridge - Permission based mentions coming soon.
  • Sending large files over the Discord limit now sends them as URLs
  • Added support for external and animated emoji - Thanks @Sorunome!
  • Initial support for m.sticker
  • Sender avatars are now thumbnailed - Thanks @turt2live
  • Support for message edits. Thanks @anoadragon453
  • Support for custom and animated discord emoji parsing M->D. Thanks @anoadragon453
  • Throw discord.js logs into our logging to help debug connection issues
  • Warn when turning on encryption that the bridge will no longer work.
  • Clarify where to specify protocols in the registration config. Thanks @anoadragon453
  • Add attachments into the event store and fix up some of our Inserts. Thanks @eeeeeta
  • Fail if the event.content.url is not present.
+ lots of testing and fixes

🔗t3chguy matrix-search including e2e

t3chguy, straight out of exams, went back to working on matrix-search, now with a working release, including e2e chats!

a local Full Text Search engine for Matrix, which will index the events locally and then provide a search api interface for matrix clients to query it matrix-search mimics the standard /search API

toml has already been looking at this and has created a docker container for it: https://github.com/matrix-org/matrix-search/tree/toml#to-run-in-a-docker-container

🔗Ananace on Kubernetes

Switched the Kubernetes-oriented Synapse image over to running on the official one as a base, seems to still work quite well. Even if there were some issues at first due to Alpine and busybox.

I've been building slightly specialized Synapse docker images since 0.25.1 - and running them on my Kubernetes cluster at home. Moved them to being based on the official images now instead of building them on CentOS as I used to.

🔗Synapse 0.31.0 and 0.31.1 released

Changes for Synapse 0.31.0

  • Most notable change from v0.30.0 is to switch to python prometheus library to improve system stats reporting. WARNING this changes a number of prometheus metrics in a backwards-incompatible manner.
  • There are still many changes being made relating to the Python 3 migration.
For Synapse 0.31.1

v0.31.1 fixes a security bug in the “get_missing_events“ federation API where event visibility rules were not applied correctly.

andrewsh has been packaging synapse for Debian.

🔗Guides index

I'm going to start making a list of guides from around the web to be linked from https://matrix.org. If you have, or know of, useful guides relating to matrix, please let me know or share in #twim:matrix.org.

🔗New rooms

🔗other points of interest

🔗The end is nigh...

And here it is. As you may have noticed, I'm leaning much more toward quoting wherever possible, rather than trying to paraphrase. The aim is to keep the content authentic and community-driven, rather than a narrative from one fairly naive observer. The risk is it makes the post awkward to read as it switches voice too frequently. Come to #twim:matrix.org and let me know if you have opinions on this.

Check out Matrix Live:

Synapse v0.31.0 released!

06.06.2018 00:00 — ReleasesNeil Johnson

Good people, it's release time.

With the core team focusing on upcoming performance work and GDPR management tooling, v0.31.0 is most notable for improvements to system stats. Additionally, work continues on our py3 port and a host of small bug fixes and perf improvements.

Get it now from https://github.com/matrix-org/synapse/releases/tag/v0.31.0

🔗Changes in synapse v0.31.0 (2018-06-06)

Most notable change from v0.30.0 is to switch to python prometheus library to improve system stats reporting. WARNING this changes a number of prometheus metrics in a backwards-incompatible manner. For more details, seedocs/metrics-howto.rst

Bug Fixes:

  • Fix metric documentation tables (PR #3341)
  • Fix LaterGauge error handling (694968f)
  • Fix replication metrics (b7e7fd2)

🔗Changes in synapse v0.31.0-rc1 (2018-06-04)

Features:

  • Switch to the Python Prometheus library (PR #3256#3274)
  • Let users leave the server notice room after joining (PR #3287)
Changes:
  • daily user type phone home stats (PR #3264)
  • Use iter* methods for _filter_events_for_server (PR #3267)
  • Docs on consent bits (PR #3268)
  • Remove users from user directory on deactivate (PR #3277)
  • Avoid sending consent notice to guest users (PR #3288)
  • disable CPUMetrics if no /proc/self/stat (PR #3299)
  • Add local and loopback IPv6 addresses to url_preview_ip_range_blacklist (PR #3312) Thanks to @thegcat!
  • Consistently use six's iteritems and wrap lazy keys/values in list() if they're not meant to be lazy (PR #3307)
  • Add private IPv6 addresses to example config for url preview blacklist (PR #3317) Thanks to @thegcat!
  • Reduce stuck read-receipts: ignore depth when updating (PR #3318)
  • Put python's logs into Trial when running unit tests (PR #3319)
Changes, python 3 migration: Bugs:
  • Fix federation backfill bugs (PR #3261)
  • federation: fix LaterGauge usage (PR #3328) Thanks to @intelfx!

This Week in Matrix 2018-06-01

01.06.2018 00:00 — This Week in MatrixBen Parsons

🔗GDPR

It's over. It's once again safe to check your email, and we got some fairly good jokes out of the experience.

🔗Projects

🔗Synapse

hawkowl is technically new to the Matrix Core team but is already integrated and storming the codebase like an old pro. She and notafile have been ramping up on work to the make the Synapse codebase work with Python 3.

🔗matrix-docker-ansible-deploy can now set up your homeserver using the official Matrix Synapse Docker image

@slavi:devture.com sent great news: matrix-docker-ansible-deploy can now set up your homeserver using the official Matrix Synapse Docker image. In his words:

Using this Ansible playbook is probably the easiest way to set up a fully-functioning Matrix homeserver on your own machine. The setup includes Matrix Synapse and some related services required to actually make it useful (automatically-managed HTTPS; STUN/TURN server for audio/video calls; Postgres database for Synapse; optionally riot-web; optionally Amazon S3 storage support)

🔗matrix-registration

Helpfully named Zeratax?utf8=✓ has released matrix-registration, an application which allows you to "easily create tokens to invite users on your homeserver without the need to open up public registration". There is a public demo here: https://zeratax.github.io/matrix-registration/demo.html

Says Zeratax:

my personal problem was: i didn't want to open up registration for everyone i didn't want to register every account manually and have to worry about seeing passwords etc now i can just share a link, e.g: https://zeratax.github.io/matrix-registration/demo.html?token=JargonGingerYankee

and my friends can register.

these token can be restricted as one time usable only or by an expiration date.

🔗dendrite activity!

anoa writes about progress on dendrite:

Last week dendrite was filtering events from user's into separate queues for each application service to eventually be given. Sending these events requires batching them up into transactions and then sending them to an HTTP endpoint on the application service. I'm happy to report that from today, that functionality is now implemented, along with graceful handling of both server and application service downtime.

🔗Fractal

Alexandre Franke from Fractal reports:

Fractal got the beginning of a revamped directory (from one of our GSoC interns), as well as misc bugfixes and performance improvements. It has also been added to Damned lies, the GNOME platform for translations.

🔗neo 0.06

neo v0.06 is out now, release notes:

Beautiful new file upload dialog, with previews, captions and the option to cancel. Making 1on1 chat look a bit nicer.

added: file upload dialog room canonical alias fallback for name 1on1 room now shows avatar+name of partner

changed: getting room name/image in initialSync instead of on render, still not optimal better image/video scaling better local echo various bugfixes

🔗Articles and blog posts

🔗Riot Jouni blog post

Riot is undergoing a visual redesign, thanks to Jouni Helminen. Take a look at the redesign work on the Riot blog. The changes are not radical, but will help standardise and modernise the Riot interface. Early feedback I've seen has been mostly positive.

🔗Julian on Fractal work

Julian is a GSOC 2018 student working on Fractal. He's been working to improve the user account setting panel, and has made progress as described here.

The user can now change the following settings: Avatar, display name, add and remove email addresses and phone numbers. Also, they can see the homeserver and their own MXID.
We will probably make some more small changes on the way to make the UX as good as we possibly can.

🔗Fedora Magazine mention of Fractal

Fractal was featured in Fedora Magazine this week, just a little introduction. I notice the article barely introduces matrix: not sure if that's an oversight or a belief that the audience will already know it!

🔗New Riot theme from MTRNord: blueshine

MTRNord has started work on "a secondary Dark Riot Theme named blueshine". Lots of screenshots are available on the PR, and take a look below too. If you'd like to try it out, TravisR has hosted a Riot instance with the theme included here.

blueshine riot theme

🔗Spec Proposals

Still posting about spec proposals. To get involved in the spec development process, take a look at the Matrix Spec Change Proposals page to find out what's happening, read the proposals, then talk about it in #matrix-spec:matrix.org. One proposal looking for attention and a good place to start:

🔗Interactive Key Verification: Spec proposal from uhoreg

Long-time contributor uhoreg joined the matrix.org core team this week, and is requesting feedback on a spec proposal relating to Interactive Key Verification. Reminder that the list of spec proposals is tracked here, and to join the discussion in #matrix-spec:matrix.org.

🔗nheko packaging

🔗nheko openSUSE packaging

It's now possible to install nheko as a openSUSE package - great to see that there is enough demand for a community package to appear.

🔗nheko 0.4.2-1 package now in Debian

uhoreg provided Debian and Ubuntu packages for nheko 0.4.2-1: https://packages.qa.debian.org/n/nheko/news/20180530T135401Z.html.

🔗New Rooms, also rooms which happen to be new to benpa

🔗That's about all for now…

… and that's plenty for the week! Take a look at Matrix Live below, and join us in #twim:matrix.org if you have something which should be included.

Matrix.org homeserver privacy policy and terms of use being enforced today

29.05.2018 00:00 — PrivacyThomas Lant

Hi all,

As mentioned in our last blog post on GDPR, to make sure that everyone has read and understood the important details about how their personal data is processed by the matrix.org homeserver, users who haven't yet agreed to the privacy notice and terms and conditions will be blocked from sending new messages until they have.

Users will continue to be able to receive messages, so they won't miss out on any messages sent to them before they've agreed to the terms.

The System Alerts room has already sent every user their unique link to review and agree, and if anyone missed that message, the latest Riot.im web and mobile will display a helpful error message guiding users who are yet to agree through the agreement process.

If you have any questions or difficulties, please let us know at [email protected].

Thanks!

Tom

GDPR on matrix.org

25.05.2018 00:00 — PrivacyThomas Lant

If you've connected to the matrix.org homeserver today, you'll have noticed some activity in support of GDPR compliance. The most obvious of these is an invite from System Alerts (aka @server:matrix.org):

We've rolled out the System Alerts feature to communicate important platform information to all of a homeserver's users. Today, we're using it to communicate the arrival of our new (and much-improved) Privacy Notice and Terms and Conditions to users on matrix.org.

The System Alerts service takes the form of an (unrejectable) invite to a room. We took this approach to support maximum compatibility with the myriad Matrix clients (since all Matrix clients can support conversations in a room ?).

When we first rolled out System Alerts, we didn't allow users leave the System Alerts room. Sorry! We got a bit overexcited - we've fixed that now (though please do provide your agreement before you leave).

🔗What do I need to do?

At some point today the System Alerts service will provide you with unique link, directing you to review the new terms and provide your agreement.

For us to process your personal data lawfully, it's really important that we know you understand and agree to our Privacy Notice and Terms and Conditions. For that reason, we will shortly be blocking any users who haven't indicated their acceptance, so please act quickly when you receive your link.

Once the block is enabled, users who haven't accepted the terms will see an error when they try and send a message, join a room, or send an invite. This message will also include the unique link to review and accept the terms, so users who haven't seen the message from System Alerts will know what to do.

Don't worry if you're reading this some time after May 25 - accepting the terms at any time will unblock message sending on your account, and you won't have missed any messages sent to you.

If you have any thoughts or suggestions on the legal documentation, you can provide comment via github.

This Week in Matrix 2018-05-25

25.05.2018 00:00 — This Week in MatrixBen Parsons

🔗GDPR

HAPPY GDPR DAY EVERYONE!!!!1!

  • Our long-awaited new privacy policy & term & conditions for the matrix.org server are here - Phase 1 is complete!
  • Folks are already accepting the new policies - thanks.
  • We're going to start requiring acceptance to access the matrix.org server on Tuesday (May 29th).
  • We're already receiving our first GDPR requests… :|
  • Erasure and Right-to-be-forgotten work (Phase 2) is next up so we can action the requests in a timely manner.
  • It looks like we will go ahead on removing MXIDs on events as a Phase 3 (although for now we do warn people that this is effectively a technical limitation of Matrix, albeit one that we're working on).

🔗Client Updates

🔗mtxclient E2E progress

Big E2E progress from mujx, developer of the nheko client on his project mtxclientAs of this week, mxtclient is able to decrypt group events. When writing (that is, sending encrypted messages) is complete, the idea is to migrate this work back to nheko, though mujx points out this library could be used in any client.

🔗Fractal

Back to work after the HackfestFractal have released version 0.1.30, featuring:

  • Translations support
  • Number of members in the room in the members button
  • File storage configuration support
  • Gold and Silver tags for admins and moderatos
Some coverage of the Fractal design thinking from last week, nothing new but a decent signal boost.

🔗gomuks

tulir came in with some late breaking news about gomuks, the terminal client written in go. New features:

  • A fancy quick room switcher by Evidlo
  • A few basic UI options (hide user/room lists)
  • Plaintext view to be able to click long links and such
  • Fixed some bugs

🔗Riot/Web

  • GDPR-capable release! 0.15.4 out today
  • Various bugfixes and performance regressions.

🔗Riot/Mobile

  • GDPR-capable releases!
  • Sticker sending is ready modulo some CSS bugs; we'll get it pushed shortly.

🔗Bridging

🔗JonTheNiceGuy bridging video

JonTheNiceGuy produced a helpful video describing how to use bridges for IRC, Slack and Telegram, showing the difference between the different bridges. I found this to be really clear and well-paced for following the many practical details of bridging. Watch here: https://www.youtube.com/watch?v=ZNEzgYRLj8g

🔗Discord bridge

anoa and half-shot have been working on the matrix-appservice-discord bridge:

"finished edit passing between Discord and Matrix, as well as support for discord's custom emojis (though UX is a bit manual until TravisR's proposal goes through ?)"

🔗matrix-puppet-facebook-1to1-fixer from Brendan

Brendan shared a project he's been working on this week: matrix-puppet-facebook-1to1-fixer. This project fixes a UI issue Brendan had with the Facebook Messenger Bridge, namely that activity in 1:1 rooms was not clear enough.

This small tool will take the local part of the room ID created by the Matrix<>Facebook Messenger bot once the friend has joined it, identify th friend, and grab their avatar and display name to set the room's.

🔗mautrix-telegram

Lots of progress on mautrix-telegram this lately including v0.2.0 RC. As reported by tulir:

  • A dockerfile by jcgruenhage
  • Option to whitelist/blacklist automatic bridging of specific chats
  • Fixed many bugs

🔗matrix-appservice-sms

eta has been working on matrix-appservice-sms this week:

I have managed to do the first phase of a massive refactor that makes it way more reliable (temporarily store SMS in the database before delivery)

this makes it more resilient to synapse hiccups, as well as general failures

🔗Other Projects

🔗matrixboard, from betz

betz runs the https://hackerspaces.be/ matrix server and has this week, inbetween repairing his Synapse install, been working on a project called matrixboard. This tool is used to output the last five messages from a given room to displayed as HTML, the idea being to display output from a specific room as a website widget. You can see an example using #matrix-dev here.

🔗opsdroid room state connector

SolarDrew implemented a database modulefor opsdroid to allow Matrix room state to be used to persist chat bot memory. (Suggestion apparently came from Cadair, the human not the place.)

The idea of using the room state to encapsulate bot data per-room was well received, discussion in #TWIM:matrix.org suggests this is an estabilished practice for some developers.

🔗matrix-python-sdk

No general GSOC round-up this week, &Adam shared the news that GSOC-student Zil0's first PR towards E2E in matrix-python-sdk landed on master. These PRs are working from efforts previously contributed by pik.

🔗Ruma

Work continues in the Ruma space. This week saw the release of

  • ruma-events 0.10.0: ruma-events contains Serializable Rust types for the events in the Matrix specification. 0.10.0 sees a major update with code provided by mujx, and contains many breaking changes.
  • ruma-api-macros 0.2.2, and ruma-client-api] is also updated to use the new macro.

🔗f0x account migration helper

f0x has started work on a tool to help migrate accounts - including across homeservers. Right now he's working on the GUI, but check out progress at https://github.com/f0x52/matrix-migrate.

🔗DSN Traveller by Florian

Florian reports:

As part of my master's thesis, I wrote the DSN Traveller bot, which is crawling the matrix federation to measure the shape and size of the matrix network, and how distributed it currently is. The bot is already in a smaller number of rooms for testing, and will join the remaining rooms over the next days. All details at https://dsn-traveller.dsn.scc.kit.edu/, room at #dsn-traveller:dsn-traveller.dsn.scc.kit.edu.

🔗Synapse

  • GDPR policy management is welcomed in by Synapse 0.30
  • Means we get server notices too!
  • Explosion of Python 3 activity from notafile & Amber (hawkowl)
  • andrewsh has prepared a Debian package for the 0.30 release.

🔗Dendrite

  • Anoa is on the case, having joined the core team on Monday - Dendrite is already sending events to ASes! Meanwhile APwhitehat is hacking away on his GSoC projects!

🔗Spec

The Matrix Spec Change Proposals list is populated, popular, and under discussion at #matrix-spec:matrix.org. There are multiple issues ready to review, for example: TravisR is calling for attention on MSC1256: "Custom emoji and sticker packs in matrix".

🔗New Rooms

🔗GSOC

Last week I promised an update on the state of the various GSOC projects in the Matrix Ecosystem. There is activity happening but other than what's been discussed above we'll wait a week or two for more detailed updates.

🔗See you soon

As always, if you have things to say, projects to advertise, or anything else, ping me or visit #TWIM:matrix.org. I'm keen to get everyone included and keep this community enthused about all the work going on in the Matrix ecosystem.

Check out this week's Matrix Live:

Synapse v0.30.0 released today!

24.05.2018 00:00 — ReleasesNeil Johnson

It's release o'clock - GDPR time!!!!

v0.30.0 sees the introduction of Server Notices, which provides a channel whereby server administrators can send messages to users on the server, as well as Consent Management for tracking whether users have agreed to the terms and conditions set by the administrator of a server - and blocking access to the server until they have.

In conjunction these features support GDPR compliance in the form of providing a client agnostic means to contact users and ask for consent/agreement to a Privacy Notice.

For more information about our approach to GDPR compliance take a look here (although be aware that our position has evolved a bit; see the upcoming new privacy policy for the Matrix.org homeserver for details).

Additionally there are a host of bug fixes and refactors as well as an enhancement to our Dockerfile.

Get it now from https://github.com/matrix-org/synapse/releases/tag/v0.30.0

🔗Changes in synapse v0.30.0 (2018-05-24)

'Server Notices' are a new feature introduced in Synapse 0.30. They provide a channel whereby server administrators can send messages to users on the server.

They are used as part of communication of the server policies (see Consent Tracking), however the intention is that they may also find a use for features such as "Message of the day".

This feature is specific to Synapse, but uses standard Matrix communication mechanisms, so should work with any Matrix client. For more details see here

Further Server Notices/Consent Tracking Support:

  • Allow overriding the server_notices user's avatar (PR #3273)
  • Use the localpart in the consent uri (PR #3272)
  • Support for putting %(consent_uri)s in messages (PR #3271)
  • Block attempts to send server notices to remote users (PR #3270)
  • Docs on consent bits (PR #3268)

🔗Changes in synapse v0.30.0-rc1 (2018-05-23)

GDPR Support:

  • ConsentResource to gather policy consent from users (PR #3213)
  • Move RoomCreationHandler out of synapse.handlers.Handlers (PR #3225)
  • Infrastructure for a server notices room (PR #3232)
  • Send users a server notice about consent (PR #3236)
  • Reject attempts to send event before privacy consent is given (PR #3257)
  • Add a 'has_consented' template var to consent forms (PR #3262)
  • Fix dependency on jinja2 (PR #3263)
Features:
  • Cohort analytics (PR #3163#3241#3251)
  • Add lxml to docker image for web previews (PR #3239) Thanks to @ptman!
  • Add in flight request metrics (PR #3252)
Changes:
  • Remove unused update_external_syncs (PR #3233)
  • Use stream rather depth ordering for push actions (PR #3212)
  • Make purge_history operate on tokens (PR #3221)
  • Don't support limitless pagination (PR #3265)
Bug Fixes:
  • Fix logcontext resource usage tracking (PR #3258)
  • Fix error in handling receipts (PR #3235)
  • Stop the transaction cache caching failures (PR #3255)

Synapse 0.29.1 Released!

18.05.2018 00:00 — ReleasesNeil Johnson

It's release time people, not to be outdone by our friends on the Riot web team, Synapse v0.29.1 lands today.

v0.29.1 contains an officially supported docker image (many thanks to the contribution from @kaiyou), continued progress towards Python 3 (thanks to @NotAFile) - as well as a heap of refactorings and bug fixes.

Something worth noting is a potentially breaking change in the error code that /login returns in the Client Server API. Details follow, but the change closes a gap between Synapse behaviour and the spec.

We'd like to give huge thanks to Silvio Fricke and Andreas Peters for writing and maintaining Synapse's first Dockerfile, as well as allmende, jcgruenhage, ptman, and ilianaw for theirs!  The new Dockerfile from kaiyou has ended up being merged into the main synapse tree and we're going to try to maintain it going forwards, but folks should use whichever one they prefer.

You can pick it up from https://github.com/matrix-org/synapse/releases/tag/v0.29.1 and thanks to everyone who tested the release candidate.

🔗Changes in synapse v0.29.1 (2018-05-17)

Changes:

  • Update docker documentation (PR #3222)

🔗Changes in synapse v0.29.0 (2018-05-16)

No changes since v0.29.0-rc1

🔗Changes in synapse v0.29.0-rc1 (2018-05-14)

Potentially breaking change:

  • Make Client-Server API return 401 for invalid token (PR #3161).This changes the Client-server spec to return a 401 error code instead of 403 when the access token is unrecognised. This is the behaviour required by the specification, but some clients may be relying on the old, incorrect behaviour.Thanks to @NotAFile for fixing this.
Features:
  • Add a Dockerfile for synapse (PR #2846) Thanks to @kaiyou!
Changes - General:
  • nuke-room-from-db.sh: added postgresql option and help (PR #2337) Thanks to @rubo77!
  • Part user from rooms on account deactivate (PR #3201)
  • Make 'unexpected logging context' into warnings (PR #3007)
  • Set Server header in SynapseRequest (PR #3208)
  • remove duplicates from groups tables (PR #3129)
  • Improve exception handling for background processes (PR #3138)
  • Add missing consumeErrors to improve exception handling (PR #3139)
  • reraise exceptions more carefully (PR #3142)
  • Remove redundant call to preserve_fn (PR #3143)
  • Trap exceptions thrown within run_in_background (PR #3144)
Changes - Refactors:
  • Refactor /context to reuse pagination storage functions (PR #3193)
  • Refactor recent events func to use pagination func (PR #3195)
  • Refactor pagination DB API to return concrete type (PR #3196)
  • Refactor get_recent_events_for_room return type (PR #3198)
  • Refactor sync APIs to reuse pagination API (PR #3199)
  • Remove unused code path from member change DB func (PR #3200)
  • Refactor request handling wrappers (PR #3203)
  • transaction_id, destination defined twice (PR #3209) Thanks to @damir-manapov!
  • Refactor event storage to prepare for changes in state calculations (PR #3141)
  • Set Server header in SynapseRequest (PR #3208)
  • Use deferred.addTimeout instead of time_bound_deferred (PR #3127#3178)
  • Use run_in_background in preference to preserve_fn (PR #3140)
Changes - Python 3 migration: Bug Fixes:
  • synapse fails to start under Twisted >= 18.4 (PR #3157) Thanks to @Half-Shot!
  • Fix a class of logcontext leaks (PR #3170)
  • Fix a couple of logcontext leaks in unit tests (PR #3172)
  • Fix logcontext leak in media repo (PR #3174)
  • Escape label values in prometheus metrics (PR #3175#3186)
  • Fix 'Unhandled Error' logs with Twisted 18.4 (PR #3182) Thanks to @Half-Shot!
  • Fix logcontext leaks in rate limiter (PR #3183)
  • notifications: Convert next_token to string according to the spec (PR #3190) Thanks to @mujx!
  • nuke-room-from-db.sh: fix deletion from search table (PR #3194) Thanks to @rubo77!
  • add guard for None on purge_history api (PR #3160) Thanks to @krombel!