<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Matrix.org - General</title>
    <subtitle>The Matrix.org Foundation</subtitle>
    <link href="https://f297f985.matrix-website.pages.dev/category/general/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://f297f985.matrix-website.pages.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2023-12-25T00:00:00+00:00</updated>
    <id>https://f297f985.matrix-website.pages.dev/category/general/atom.xml</id>
    
    
    
    
<entry xml:lang="en">
    <title>The Matrix Holiday Update 2023</title>
    <published>2023-12-25T00:00:00+00:00</published>
    <updated>2023-12-25T00:00:00+00:00</updated>
    <author>
      <name>
            Matthew Hodgson
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/12/25/the-matrix-holiday-update-2023/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/12/25/the-matrix-holiday-update-2023/</id>
    <content type="html">&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;2023 has been a pivotal year for Matrix, with huge changes landing both organisationally and technically to prepare the protocol for future generations.  The ecosystem has once again gone from strength to strength, with active users (based on Synapse opt-in phone-home reporting) doubling across the public network, and more projects building on Matrix than we can count (look out for the “This Year in Matrix” community wrap-up blog post) - and more organisations than we can track joining Matrix for all their secure decentralised communication needs.&lt;&#x2F;p&gt;
&lt;p&gt;On the governance side, we are in an incredibly exciting new era with &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;10&#x2F;26&#x2F;hello-world&#x2F;&quot;&gt;Josh joining the Matrix.org Foundation&lt;&#x2F;a&gt; as its first ever Managing Director (and employee!), with a mandate to cement sustainable funding for Matrix as an independent foundation, governed by the forthcoming elected &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;12&#x2F;electing-our-first-governing-board&#x2F;&quot;&gt;open Governance Board&lt;&#x2F;a&gt;.  Now, &lt;strong&gt;Matrix needs funding more than ever&lt;&#x2F;strong&gt; - but rather than turning the entirety of this post into a plea for donations, I’m going to let Josh fly the flag in the coming weeks. Meanwhile, if you want Matrix to keep existing (especially if you’re an organisation who builds on Matrix) &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;membership&#x2F;&quot;&gt;please join the Foundation&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;support&quot;&gt;donate&lt;&#x2F;a&gt;.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;On the technical side: the theme of the year has been one of focus: extreme, overdue, focus.&lt;&#x2F;p&gt;
&lt;p&gt;Over the years, it’s fair to say that the core team has tried to strike a balance between building the core foundational technology of Matrix (the spec, a stable server implementation, client SDKs, end-to-end encryption, VoIP, etc)... and long-term forward-looking projects designed to futureproof Matrix (e.g. Account Portability, P2P Matrix, Dendrite, Hydrogen) and&#x2F;or inspire developers to build on Matrix for more than just chat (e.g. Third Room, Applications Beyond Chat).  In retrospect, this was wildly optimistic: we underestimated the amount of remaining work needed to polish the foundational tech to mainstream quality - and despite Matrix uptake going through the roof, this hasn’t translated into sufficient funding to have the luxury to support folks to proactively work on next-gen projects (or foundational projects, for that matter).&lt;&#x2F;p&gt;
&lt;p&gt;So, this year, we’ve ended up focused on one thing: getting the foundational Matrix featureset to better-than-mainstream quality, performance and stability.  We’ve dubbed the overall initiative Matrix 2.0, and kicked it off at &lt;a href=&quot;https:&#x2F;&#x2F;archive.fosdem.org&#x2F;2023&#x2F;schedule&#x2F;event&#x2F;matrix20&#x2F;&quot;&gt;FOSDEM 2023&lt;&#x2F;a&gt; with our &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=eUPJ9zFV5IE&quot;&gt;Matrix 2.0: How we’re making Matrix go vooooom&lt;&#x2F;a&gt; main-stage talk.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-road-to-matrix-2-0&quot;&gt;The Road to Matrix 2.0&lt;&#x2F;h3&gt;
&lt;p&gt;Matrix 2.0 isn’t (yet) an actual versioned release of the Matrix specification - instead, it describes the various foundational projects needed to get quality, performance and stability up to and beyond that of today’s mainstream messaging apps.  These projects are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sliding Sync (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3575&quot;&gt;MSC3575&lt;&#x2F;a&gt;)&lt;&#x2F;strong&gt;: the ability to instantly log in, launch and sync Matrix clients no matter how large or busy the account.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Native E2EE Group VoIP (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3898&quot;&gt;MSC3898&lt;&#x2F;a&gt; + TBA)&lt;&#x2F;strong&gt;: scalable video and voice conferencing and calling built natively on Matrix and so benefiting from Matrix’s end-to-end encryption.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Native OIDC (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3861&quot;&gt;MSC3861&lt;&#x2F;a&gt;)&lt;&#x2F;strong&gt;: replacing Matrix’s historical authentication mechanisms with industry-standard Open ID Connect (giving us two factor authentication, multi-factor auth, passkeys, and radically simplifying auth implementations for both client and server developers).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Faster Remote Room Joins (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3902&quot;&gt;MSC3902&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;): letting servers rapidly join rooms on other servers by incrementally participating in the room.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Over the course of the year Matrix 2.0 has gone from the initial demo on stage at FOSDEM to concrete implementations which users can play with today as announced in our &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;09&#x2F;matrix-2-0&#x2F;&quot;&gt;Matrix 2.0: The Future of Matrix&lt;&#x2F;a&gt; post in September.  Since then, we’ve been busy polishing away.  On Sliding Sync, the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;sliding-sync&quot;&gt;proxy&lt;&#x2F;a&gt; has pretty much stabilised - although the protocol itself can and should be simplified before we think seriously about native implementations (in practice, having the server track room list ordering gets very fiddly when only clients can really determine the final ordering, due to E2EE).  &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-x-ignition&#x2F;&quot;&gt;Element X&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-rust-sdk&quot;&gt;matrix-rust-sdk&lt;&#x2F;a&gt; has been the main implementation driving forwards Sliding Sync and much of the other Matrix 2.0 work, for those itching to play with it.&lt;&#x2F;p&gt;
&lt;p&gt;On Native Group VoIP: we’ve gone through many iterations over the year - starting off with Full Mesh calling (good for ~7 users per call); then switching to the experimental &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;waterfall&quot;&gt;waterfall&lt;&#x2F;a&gt; Selective Forwarding Unit (SFU) to provide scalable but not-E2EE conferencing; and then switching to a hybrid solution using LiveKit to provide an E2EE-capable scalable SFU, but with the signalling and encryption all handled by Matrix.  Element Call is the main implementation driving forwards the underlying Matrix work here, and &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-call-beta-3&#x2F;&quot;&gt;Element Call Beta 3&lt;&#x2F;a&gt; showed off the new LiveKit based implementation in July - which was then &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-x-now-with-embedded-voip&#x2F;&quot;&gt;integrated with Element X&lt;&#x2F;a&gt; complete with end-to-end encryption in November.  There’s still some polishing remaining here, with a new layout engine in the wings for Element Call, and enabling full encrypted-per-sender conferencing by default in both Element Web and Element X, but it really feels like the hardest work is behind us now: the core team has been successfully doing all of its collaboration on &lt;a href=&quot;https:&#x2F;&#x2F;call.element.io&quot;&gt;Element Call&lt;&#x2F;a&gt; for months now, like so:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;img&#x2F;20230921-element-call.png&quot; alt=&quot;E2EE scalable Element Call&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;On Open ID Connect: things are also shaping up well. This will be the first time that we’ve replaced a large chunk of the Matrix spec with something else, and in order to manage your account in Matrix 2.0-native clients like Element X homeserver admins will need to migrate their authentication to the new OIDC World using &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-authentication-service&quot;&gt;matrix-authentication-service&lt;&#x2F;a&gt; (MAS).  There’s a great &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;09&#x2F;better-auth&#x2F;&quot;&gt;blog post&lt;&#x2F;a&gt; from September which explains what this will entail - and since then, we even have the beginnings of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-authentication-service&#x2F;tree&#x2F;main&#x2F;tools&#x2F;syn2mas&quot;&gt;syn2mas&lt;&#x2F;a&gt;: a migration script to migrate from Synapse-managed accounts to MAS-managed accounts (warning: still experimental).  The Matrix.org homeserver hasn’t been migrated yet (as we need to support social login first), but an increasing number of standalone Matrix servers are going OIDC-native, so arguably the migration has already begun!  We’ll keep &lt;a href=&quot;https:&#x2F;&#x2F;areweoidcyet.com&quot;&gt;https:&#x2F;&#x2F;areweoidcyet.com&lt;&#x2F;a&gt; updated as the project progresses.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, the core of Faster Remote Room Joins (FRRJ) shipped in Synapse back in February. There’s still some major speedups that FRRJ could unlock, but the other tracks of Matrix 2.0 have been taking priority.&lt;&#x2F;p&gt;
&lt;p&gt;So: Matrix 2.0 is palpably on the horizon - all that remains is polish on the example clients (Element X &amp;amp; Element Call), full support for migrating to OIDC, and landing the MSCs into the spec. For instance, Element X just added read receipts and (early) E2EE backup support in the last few days - the gap is closing! It’s worth noting that significant amounts of this work has been funded by BWI for &lt;a href=&quot;https:&#x2F;&#x2F;messenger.bwi.de&#x2F;&quot;&gt;BwMessenger&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;messenger.bwi.de&#x2F;bundesmessenger&quot;&gt;BundesMessenger&lt;&#x2F;a&gt;: huge thanks to BWI for supporting core Matrix development by contracting Element.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;levelling-up-on-encryption&quot;&gt;Levelling up on Encryption&lt;&#x2F;h3&gt;
&lt;p&gt;Encryption stability received a huge amount of attention this year. It turns out that reliable end-to-end encryption is surprisingly tricky in a decentralised environment, and historically we’ve been playing on hard mode by implementing three entirely separate implementations of the Matrix layer of encryption between matrix-js-sdk, matrix-ios-sdk and matrix-android-sdk2, each with their own bugs - more than tripling the costs of development, audits, and maintenance by the Foundation (quite ignoring the independent implementations from the community in mtxclient, libquotient, matrix-dart-sdk, trixnity etc).&lt;&#x2F;p&gt;
&lt;p&gt;So a huge project has been underway to converge on a single auditable codebase for the core team’s E2EE implementation so that any bugs or future features can be resolved in a single place. That codebase is matrix-rust-sdk’s &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-rust-sdk&#x2F;tree&#x2F;main&#x2F;crates&#x2F;matrix-sdk-crypto&quot;&gt;matrix-sdk-crypto&lt;&#x2F;a&gt; crate (and our underlying &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;vodozemac&quot;&gt;vodozemac&lt;&#x2F;a&gt; double ratchet implementation) - and we’re proud to say that we are using it for encryption in matrix-rust-sdk itself (as showcased by Element X and Fractal 5), matrix-ios-sdk and matrix-android-sdk2 (as used in the old Element iOS &amp;amp; Android apps), and have now merged it in matrix-js-sdk too (available for new logins on &lt;a href=&quot;https:&#x2F;&#x2F;f297f985.matrix-website.pages.dev&#x2F;blog&#x2F;2023&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2023&#x2F;develop.element.io&quot;&gt;develop.element.io&lt;&#x2F;a&gt;).  The process of rustifying the encryption in Element Web and the old iOS &amp;amp; Android apps has been nicknamed “Element R”.&lt;&#x2F;p&gt;
&lt;p&gt;The process of switching matrix-js-sdk to use Rust encryption has been particularly gruelling, requiring compiling matrix-sdk-crypto down to WASM as &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-rust-sdk-crypto-wasm&quot;&gt;matrix-rust-sdk-crypto-wasm&lt;&#x2F;a&gt; and then doing heart surgery to replace the old JS crypto implementation… while also needing to extensively loop from WASM back into the browser to use IndexedDB for storage, all while outperforming the old implementation.  It’s tantalisingly close now: while &lt;a href=&quot;https:&#x2F;&#x2F;f297f985.matrix-website.pages.dev&#x2F;blog&#x2F;2023&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2023&#x2F;develop.element.io&quot;&gt;develop.element.io&lt;&#x2F;a&gt; has it turned on by default for new logins, there are still a few remaining performance edge cases to be chased down related to online backup before we migrate everyone to it. The remaining &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;element-hq&#x2F;element-web&#x2F;issues?q=is%3Aissue+is%3Aopen+label%3AZ-Element-R-Blocker&quot;&gt;blocking issues&lt;&#x2F;a&gt; can be found on GitHub for those interested in tracking progress.&lt;&#x2F;p&gt;
&lt;p&gt;matrix-crypto-sdk is already manifestly more reliable than the old implementations (in terms of the chances of hitting infamous Unable To Decrypt errors) - and now that we are so close to converging on it everywhere, the race is on to ensure that any remaining defects get flushed out for once and for all.  One of the new initiatives here is called &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;complement-crypto&quot;&gt;complement-crypto&lt;&#x2F;a&gt; - a full end-to-end torture testing suite specifically for matrix-crypto-sdk.  You can read all about it in &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;12&#x2F;01&#x2F;this-week-in-matrix-2023-12-01&#x2F;#complement-website&quot;&gt;the announcement post&lt;&#x2F;a&gt; a few weeks ago, but suffice it to say it’s a super exciting project which stress-tests both matrix-rust-sdk and matrix-js-sdk (with the new rust crypto implementation) against federated Synapse containers in order to test E2EE under the most horrible failure modes imaginable.  It’s already picked up some elusive bugs which have plagued us for literally years, and it looks set to be the main framework by which we will hunt down and kill any remaining issues.  See the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;complement-crypto&#x2F;?tab=readme-ov-file#test-hitlist&quot;&gt;Test hitlist&lt;&#x2F;a&gt; for the full scope we’re targeting.&lt;&#x2F;p&gt;
&lt;p&gt;Now that everyone’s (almost) converged on matrix-sdk-crypto, the next big project for the Crypto Team is going to be improving the E2EE usability (at last!).  The big news here is that we’re shifting to Trust On First Use (TOFU) for user trust.  Specifically: this means that we will only encrypt messages to devices whose owner has explicitly cross-signed them (essentially trusting the owner by default).  You will still be able to explicitly verify that other users are not being impersonated (via QR scan or emoji comparison), but this should improve the default behaviour to be much more secure.  Alongside TOFU will come other radical simplifications of the E2EE UX (both around login, self-verification, cross-verification and backup), so watch this space: the game is afoot to finally fix Matrix’s E2EE usability, now we can make all the changes in one place!&lt;&#x2F;p&gt;
&lt;p&gt;Finally, work continues to progress at &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.matrix.org&#x2F;uhoreg&#x2F;matrix-dmls&quot;&gt;matrix-dmls&lt;&#x2F;a&gt; on supporting a decentralised dialect of Messaging Layer Security (MLS, &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;rfc9420&#x2F;&quot;&gt;RFC9420&lt;&#x2F;a&gt;) on top of Matrix as an alternative to our normal Olm&#x2F;Megolm encryption, with recent work focused on making it play nice with matrix-sdk-crypto. &lt;a href=&quot;https:&#x2F;&#x2F;arewemlsyet.com&quot;&gt;https:&#x2F;&#x2F;arewemlsyet.com&lt;&#x2F;a&gt; is the place to track updates (although it’s a bit overdue for an update).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;in-other-news&quot;&gt;In other news&lt;&#x2F;h3&gt;
&lt;p&gt;Faced with limited funding and the decision to focus exclusively on stability, reliability and performance, there have inevitably been some major changes impacting the core team.&lt;&#x2F;p&gt;
&lt;p&gt;One of the biggest changes is that Element (the company formed by the core Matrix team back in 2017 to try to fund our work on Matrix) can no longer financially afford to donate its work on Synapse and other server components to the Matrix Foundation under the permissive Apache licence. Instead, Element is continuing development under the copyleft AGPLv3 licence at &lt;a href=&quot;https:&#x2F;&#x2F;f297f985.matrix-website.pages.dev&#x2F;blog&#x2F;2023&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2023&#x2F;github.com&#x2F;element-hq&#x2F;synapse&quot;&gt;github.com&#x2F;element-hq&#x2F;synapse&lt;&#x2F;a&gt; going forwards. This is to let Element sell AGPL exceptions to commercial Matrix vendors in order to fund their underlying Matrix development: you can read more about it at &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;synapse-now-lives-at-github-com-element-hq-synapse&#x2F;&quot;&gt;Element’s announcement&lt;&#x2F;a&gt; - or you can listen to this week’s Matrix Live for a firsthand explanation:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;noscript&gt;Matrix Live S09E13: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;ejpjTZhL8MA&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;ejpjTZhL8MA&lt;&#x2F;a&gt;&lt;&#x2F;noscript&gt;
&lt;youtube-player video-id=&quot;ejpjTZhL8MA&quot;&gt;&lt;&#x2F;youtube-player&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The other major change is that we’ve had no choice but pause development on the majority of the core team’s next-generation Matrix projects.  We had high hopes of being able to secure dedicated funding for &lt;a href=&quot;https:&#x2F;&#x2F;f297f985.matrix-website.pages.dev&#x2F;blog&#x2F;2023&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2023&#x2F;thirdroom.io&quot;&gt;Third Room&lt;&#x2F;a&gt; (especially after the awesome &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;06&#x2F;07&#x2F;introducing-third-room-tp-2-the-creator-update&#x2F;&quot;&gt;Tech Preview 2: Creator Update&lt;&#x2F;a&gt; in June), but the interested parties did not come through, and the team has now disbanded.  Meanwhile, P2P Matrix and Low Bandwidth Matrix is on hiatus until there’s dedicated funding - and Account Portability work is also temporarily paused in favour of commercial Element work, despite the fantastic progress made recently with Pseudo IDs (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4014&quot;&gt;MSC4014&lt;&#x2F;a&gt;) and Cryptographic identifiers (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4080&quot;&gt;MSC4080&lt;&#x2F;a&gt;).  Given P2P Matrix and Account Portability were the main projects driving Dendrite development recently, this may also cause a slow-down in Dendrite development, although Dendrite itself will still be maintained.&lt;&#x2F;p&gt;
&lt;p&gt;Needless to say, this is far from an ideal situation: we sent up distress flares loud and clear at the beginning of &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2022&#x2F;&quot;&gt;last year’s holiday update&lt;&#x2F;a&gt;; and we’ve now had to shrink to focus exclusively on the core projects.  However, we’re optimistic that the tighter focus in the medium term will help us get back to the point where we can resume the longer-term projects - assuming that organisations (and individuals) dependent on Matrix &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;support&quot;&gt;sign up to support the project.&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h3&gt;
&lt;p&gt;Despite the downsides of 2023, right now we’re feeling distinctly optimistic: Matrix 2.0 clients like Element X already outperform the best proprietary mainstream options by many metrics - and focusing purely on improving the foundations is only going to improve that. We may not have taken the most direct route to get to where we are today, but it genuinely feels like 2024 will be the year where Matrix overtakes the incumbents.&lt;&#x2F;p&gt;
&lt;p&gt;Talking of which, there’s just one last thing to mention: amidst the economic challenges of 2023, one future-facing core team Matrix project has survived: our work around the EU Digital Markets Act (DMA).  The DMA is leading antitrust legislation from the European Commission, which aims to stop big centralised tech companies (so called ‘gatekeepers’) from carelessly suppressing innovation, competition and consumer choice by trapping users inside their walled gardens.&lt;&#x2F;p&gt;
&lt;p&gt;Needless to say, we’ve been tracking the DMA closely throughout its gestation, and we’re now in the final sprint: in March 2024, messaging services which have been identified as gatekeepers will have to open their networks to allow interoperability with requesting messaging services (while preserving E2EE, if they’re encrypted).  So far, only WhatsApp and Facebook Messenger have been identified as gatekeeper services (Apple is doing everything they can to &lt;a href=&quot;https:&#x2F;&#x2F;appleinsider.com&#x2F;articles&#x2F;23&#x2F;12&#x2F;06&#x2F;apple-may-yet-prevail-in-eu-imessage-antitrust-investigation&quot;&gt;wriggle out of it&lt;&#x2F;a&gt;).  However, it looks like WhatsApp is &lt;a href=&quot;https:&#x2F;&#x2F;www.theverge.com&#x2F;2023&#x2F;9&#x2F;10&#x2F;23866912&#x2F;whatsapp-cross-platform-messaging-eu-dma-meta&quot;&gt;taking it seriously&lt;&#x2F;a&gt;, which could prove very interesting indeed.&lt;&#x2F;p&gt;
&lt;p&gt;As Matrix, we’ve taken a two-pronged approach: on one side, showcasing how Matrix as it stands today can already bridge existing chat systems together as a highest-common-denominator protocol (including preserving E2EE, if they happen to already use the Double Ratchet).  On the other side, we’ve also been contributing significantly to &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;group&#x2F;mimi&#x2F;about&#x2F;&quot;&gt;MIMI&lt;&#x2F;a&gt;, the IETF Working Group dedicated to standardising a lowest-common-denominator protocol specifically for DMA interoperability.&lt;&#x2F;p&gt;
&lt;p&gt;2023 has involved a lot of work on MIMI, participating in the Design Team alongside Phoenix, Wire, Cisco, Google and Wickr - and at IETF 118 in Prague in November we collectively proposed the first &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;html&#x2F;draft-ralston-mimi-protocol-01&quot;&gt;draft of the protocol&lt;&#x2F;a&gt; (see also the &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;meeting&#x2F;118&#x2F;materials&#x2F;slides-118-mimi-mimi-architecture-00&quot;&gt;architecture presentation&lt;&#x2F;a&gt; for context). MIMI has ended up taking some inspiration from Matrix (and &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-ralston-mimi-linearized-matrix&#x2F;&quot;&gt;Linearized Matrix&lt;&#x2F;a&gt;, a simplified dialect we proposed which does away with full-mesh decentralisation), while focusing very tightly on the specific problems of server-to-server interop between existing communication services - leaning on MLS (where available) for synchronising state across the services, while also leaving the door open for using the Double Ratchet to provide an on-ramp for pragmatic bridging to today’s services (including Matrix!).&lt;&#x2F;p&gt;
&lt;p&gt;MIMI’s tight focus means that it doesn’t currently provide conversation history, arbitrary state events, or decentralised conversations - and is focused purely on server-server communication.  However, there’s certainly a world where Matrix could evolve to be compatible with MIMI - such a hypothetical Matrix 3.0 would effectively layer Matrix’s richer existing semantics (decentralised conversations, extensible state events, state resolution, group VoIP etc) on top of MIMI’s subset of functionality.  It’ll be interesting to see how this plays out.  Meanwhile, we’ll continue to provide both Matrix for pragmatic DMA interoperability for today - and participate in MIMI for IETF-track interoperability.&lt;&#x2F;p&gt;
&lt;p&gt;Anyhow: hopefully it’s clear that 2024 is going to be a super interesting year for Matrix - whether that’s simply by nailing Matrix 2.0, or whatever excitements DMA interoperability brings. And if you’re relying on Matrix: &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;support&quot;&gt;please donate&lt;&#x2F;a&gt;.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile - have a fantastic end of the year; and thanks once again for flying Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;- Matthew, Amandine, Josh &amp;amp; the whole team.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Extending our Call for Participation to the FOSDEM 2024 Matrix Devroom</title>
    <published>2023-12-04T16:30:00+00:00</published>
    <updated>2023-12-04T16:30:00+00:00</updated>
    <author>
      <name>
            Thib
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/12/extension-fosdem-cfp/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/12/extension-fosdem-cfp/</id>
    <content type="html">&lt;p&gt;Several potential speakers asked us to extend the deadline of our CfP for the Matrix Devroom at FOSDEM. We are extending the deadline to Friday 8th December.
You will find below the Call for Participations amended. Please submit your talks to &lt;a href=&quot;https:&#x2F;&#x2F;pretalx.fosdem.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;pretalx.fosdem.org&#x2F;&lt;&#x2F;a&gt;: we&#x27;re looking forward to reading them!&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Key dates are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Conference dates 3-4 February, 2024&lt;&#x2F;li&gt;
&lt;li&gt;Matrix Devroom is likely going to be on Sunday afternoon, to be confirmed by FOSDEM soon&lt;&#x2F;li&gt;
&lt;li&gt;Extended Submission deadline: Friday 8th December&lt;&#x2F;li&gt;
&lt;li&gt;Announcement of selected talks: Friday 15th December&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;You must be available in person in Brussels to present your talk.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;talk-details&quot;&gt;Talk Details&lt;&#x2F;h2&gt;
&lt;p&gt;The talks can follow one of the two formats:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;20 min talk + 10 min Q&amp;amp;A, for topics that can be covered briefly&lt;&#x2F;li&gt;
&lt;li&gt;50 min talk + 10 min Q&amp;amp;A for more complex subjects which need more focus&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;We strongly encourage you to prepare a demo when it makes sense, so people can actually see what your work looks like in practice.&lt;&#x2F;p&gt;
&lt;p&gt;Of course, the proposal must respect the FOSDEM terms as well:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The conference language is English. All content must relate to Free and Open Source Software. By participating in the event you agree to the publication of your recordings, slides and other content provided under the same licence as all FOSDEM content (CC-BY).&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;submitting-a-proposal&quot;&gt;Submitting a Proposal&lt;&#x2F;h2&gt;
&lt;p&gt;Proposals must be submitted on FOSDEM&#x27;s conference management system: &lt;a href=&quot;https:&#x2F;&#x2F;pretalx.fosdem.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;pretalx.fosdem.org&#x2F;&lt;&#x2F;a&gt;. Heads up that this year FOSDEM is not relying on the good old Pentabarf but on Pretalx. All submissions must go through pretalx: &lt;a href=&quot;https:&#x2F;&#x2F;fosdem.org&#x2F;submit&quot;&gt;https:&#x2F;&#x2F;fosdem.org&#x2F;submit&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We expect to receive more requests than we have slots available. The devroom organisers will be reviewing the proposals and accepting them based on the potential positive impact the project has on Matrix, as defined in the Mission section of &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;foundation&quot;&gt;https:&#x2F;&#x2F;matrix.org&#x2F;foundation&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If a project proposal has been turned down, it doesn&#x27;t mean we don&#x27;t believe it has good potential. Maintainers are invited to join the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#twim:matrix.org&quot;&gt;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#twim:matrix.org&lt;&#x2F;a&gt; Matrix room to give it some visibility.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Call for Participation to the FOSDEM 2024 Matrix Devroom</title>
    <published>2023-11-10T15:00:00+00:00</published>
    <updated>2023-11-10T15:00:00+00:00</updated>
    <author>
      <name>
            Thib
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/11/fosdem-cfp/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/11/fosdem-cfp/</id>
    <content type="html">&lt;p&gt;Building on last year&#x27;s success, the Matrix.org Foundation is excited to host a Matrix.org Foundation and Community devroom in person this year again at FOSDEM. Half a day of talks, demos and workshops around Matrix itself and projects built on top of Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;We encourage people working on the Matrix protocol or building on it in an open source project to submit a proposal! Note that companies are welcome to talk about the Matrix details of their open source projects, but marketing talks are not welcome.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Key dates are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Conference dates 3-4 February, 2024&lt;&#x2F;li&gt;
&lt;li&gt;Matrix Devroom is likely going to be on Sunday afternoon, to be confirmed by FOSDEM soon&lt;&#x2F;li&gt;
&lt;li&gt;Submission deadline: Monday 4th December&lt;&#x2F;li&gt;
&lt;li&gt;Announcement of selected talks: Friday 15th December&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;You must be available in person in Brussels to present your talk.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;talk-details&quot;&gt;Talk Details&lt;&#x2F;h2&gt;
&lt;p&gt;The talks can follow one of the two formats:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;20 min talk + 10 min Q&amp;amp;A, for topics that can be covered briefly&lt;&#x2F;li&gt;
&lt;li&gt;50 min talk + 10 min Q&amp;amp;A for more complex subjects which need more focus&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;We strongly encourage you to prepare a demo when it makes sense, so people can actually see what your work looks like in practice.&lt;&#x2F;p&gt;
&lt;p&gt;Of course, the proposal must respect the FOSDEM terms as well:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The conference language is English. All content must relate to Free and Open Source Software. By participating in the event you agree to the publication of your recordings, slides and other content provided under the same licence as all FOSDEM content (CC-BY).&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;submitting-a-proposal&quot;&gt;Submitting a Proposal&lt;&#x2F;h2&gt;
&lt;p&gt;Proposals must be submitted on FOSDEM&#x27;s conference management system: &lt;a href=&quot;https:&#x2F;&#x2F;pretalx.fosdem.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;pretalx.fosdem.org&#x2F;&lt;&#x2F;a&gt;. Heads up that this year FOSDEM is not relying on the good old Pentabarf but on Pretalx. All submissions must go through pretalx: &lt;a href=&quot;https:&#x2F;&#x2F;fosdem.org&#x2F;submit&quot;&gt;https:&#x2F;&#x2F;fosdem.org&#x2F;submit&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We expect to receive more requests than we have slots available. The devroom organisers will be reviewing the proposals and accepting them based on the potential positive impact the project has on Matrix, as defined in the Mission section of &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;foundation&quot;&gt;https:&#x2F;&#x2F;matrix.org&#x2F;foundation&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If a project proposal has been turned down, it doesn&#x27;t mean we don&#x27;t believe it has good potential. Maintainers are invited to join the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#twim:matrix.org&quot;&gt;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#twim:matrix.org&lt;&#x2F;a&gt; Matrix room to give it some visibility.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>The future of Synapse and Dendrite</title>
    <published>2023-11-06T00:00:00+00:00</published>
    <updated>2023-11-06T00:00:00+00:00</updated>
    <author>
      <name>
            Josh Simmons
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/11/06/future-of-synapse-dendrite/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/11/06/future-of-synapse-dendrite/</id>
    <content type="html">&lt;p&gt;Last week, Element informed the Foundation that it will be forking &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;&quot;&gt;Synapse&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;dendrite&#x2F;&quot;&gt;Dendrite&lt;&#x2F;a&gt;. We’re sharing this news with you, along with some background, and our thoughts about this development.&lt;&#x2F;p&gt;
&lt;p&gt;We’ll do our best to answer your questions, address concerns, and find a path forward together.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;background&quot;&gt;Background&lt;&#x2F;h2&gt;
&lt;p&gt;Long time community members may know that Synapse and Dendrite predate the Foundation. Indeed, they even predate Element, dating back to 2014 and 2017. The creators of Matrix founded Element, and invested in the development of the projects. When the Foundation formed, Element transferred the projects and copyrights to the Foundation. While individual contributors retained their copyright, Element continued to assign to the Foundation. Both projects are under the permissive &lt;a href=&quot;https:&#x2F;&#x2F;opensource.org&#x2F;license&#x2F;apache-2-0&#x2F;&quot;&gt;ALv2&lt;&#x2F;a&gt; license, and assigned to the Foundation since 2019 by Element. Future contributions to Element’s forks will use the reciprocal &lt;a href=&quot;https:&#x2F;&#x2F;opensource.org&#x2F;license&#x2F;agpl-v3&#x2F;&quot;&gt;AGPLv3&lt;&#x2F;a&gt; license, with a &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Contributor_License_Agreement&quot;&gt;Contributor License Agreement&lt;&#x2F;a&gt; (CLA).&lt;&#x2F;p&gt;
&lt;p&gt;Synapse and Dendrite have been under the auspices of the Foundation since 2019. Our role has been to hold the assets and provide some infrastructure. We’ve seen Matrix adoption and use of Synapse and Dendrite skyrocket over the past few years. Sadly, the same isn’t true of the contributor ecosystem for those projects. The vast majority of maintenance and development on these projects comes from folks working at Element.&lt;&#x2F;p&gt;
&lt;p&gt;This context doesn’t make the changes easier, but it does illuminate how we got here. For more background and information on the projects, we recommend you &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-to-adopt-agplv3&#x2F;&quot;&gt;read Element’s announcement&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-s-next&quot;&gt;What&#x27;s next?&lt;&#x2F;h2&gt;
&lt;p&gt;That was our first question too! This is a transition we want to navigate with care — how we proceed hinges on both what the Foundation can do and what it should do, grounded in &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;about&#x2F;#mission&quot;&gt;our mission&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;As it stands, the Foundation does not plan to begin funding active development of the current Synapse and Dendrite projects. Even if it made sense for us to do so, we don&#x27;t have the resources.&lt;&#x2F;p&gt;
&lt;p&gt;With that said, the Foundation has a role in funding research and development of open source software for the Matrix ecosystem. We figure that the most effective way to fulfill that role is to address gaps. With that principle in mind, we guide our scarce resources to things like Trust &amp;amp; Safety, and offering community infrastructure. We&#x27;d decline to compete with an actively maintained open source project.&lt;&#x2F;p&gt;
&lt;p&gt;We expect these forks of Synapse and Dendrite will be widely adopted, and we wish them well!&lt;&#x2F;p&gt;
&lt;p&gt;Beyond that, we don’t have all the answers yet. This is new territory we will need to navigate as a community. Matrix is bigger than any one or two open source projects – it’s an &lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&#x2F;latest&#x2F;&quot;&gt;open protocol&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;ecosystem&#x2F;servers&#x2F;&quot;&gt;a whole ecosystem&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-does-this-mean-for-you&quot;&gt;What does this mean for you?&lt;&#x2F;h2&gt;
&lt;p&gt;For most people, including the 115 million plus Matrix users on the open federation, there will be no material changes.&lt;&#x2F;p&gt;
&lt;p&gt;People who run a Synapse or Dendrite server shouldn’t notice a big change. They’ll need to get their upstream releases from Element’s repositories going forward.&lt;&#x2F;p&gt;
&lt;p&gt;You are welcome to fork Synapse and Dendrite yourself. Indeed, you’ll also be able to fork Element’s versions, as they remain open source under the new license. Note that if you fork the Foundation versions under the ALv2 license, they won’t receive security updates.&lt;&#x2F;p&gt;
&lt;p&gt;Of course, folks building on any of these open source projects will have the rights and responsibilities that come with their licenses. &lt;&#x2F;p&gt;
&lt;p&gt;We’ll share more info as we have it here on the blog, on our social channels, and in the relevant rooms. We are listening, and hope you’ll join us in conversation in the coming months as we work through this.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Matrix 2.0: The Future of Matrix</title>
    <published>2023-09-21T15:30:00+00:00</published>
    <updated>2023-09-21T15:30:00+00:00</updated>
    <author>
      <name>
            Matthew Hodgson
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/09/matrix-2-0/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/09/matrix-2-0/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;&lt;em&gt;TL;DR: If you want to play with a shiny new Matrix 2.0 client, head over to &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-x-ignition&#x2F;&quot;&gt;Element X&lt;&#x2F;a&gt;.&lt;&#x2F;em&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Matrix has been going for over 9 years now, providing an open standard for secure, decentralised communication for the open Web - and it’s been quite the journey to get to where we are today.  Right now, according to Synapse’s opt-in usage reporting, in total there are 111,873,374 matrix IDs on the public network, spanning 17,289,201 rooms, spread over 64,256 servers.  This is just scratching the surface, given we estimate that 66% of servers in the public network don’t report stats, and there are many enormous private networks of servers too.  We’ve come a long way from creating Matrix HQ as the first ever room on today’s public network, back on Aug 13th 2014 :)&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile, the Matrix ecosystem has continued to grow unbelievably - with huge numbers of independent clients, bots and bridges maturing into ecosystems of their own, whole new companies forming around the protocol, and organisations ranging from open source projects to governments, NGOs and Fortune 100 companies adopting Matrix as a way to run their own secure, decentralised, standards-based self-sovereign communication.&lt;&#x2F;p&gt;
&lt;p&gt;The world needs Matrix more than ever.  Every day the importance of decentralisation is more painfully obvious, as we concretely see the terrifying risks of centralised Internet services - whether that’s through corporate takeover, state censorship, blanket surveillance, Internet shutdowns, surveillance capitalism, or the spectre of gigantic centralised data breaches.  It’s been amazing to see the world pivot in favour of decentralisation over the time we’ve been building Matrix, and our mission has never been more important.&lt;&#x2F;p&gt;
&lt;p&gt;On one hand it feels we’re creeping ever closer to that goal of providing the missing communication layer for the open Web.  The European Union’s Digital Markets Act (DMA) is a huge step in that direction - regulation that mandates that if the large centralised messaging providers are to operate in the EU, they &lt;strong&gt;must&lt;&#x2F;strong&gt; interoperate.  We’ve been busy working away to make this a reality, including participating in the IETF for the first time as part of the MIMI working group - demonstrating &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;meeting&#x2F;117&#x2F;materials&#x2F;slides-117-mimi-linearized-matrix-for-mimi-01&quot;&gt;concretely&lt;&#x2F;a&gt; how (for instance) Android Messages could natively speak Matrix in order to interoperate with other services, while preserving end-to-end encryption.&lt;&#x2F;p&gt;
&lt;p&gt;On the other hand, Matrix has often got stuck in focusing on solving the Hard Problems of decentralisation, decentralised end-to-end encryption, and the logistical complexities of supporting a massive heterogeneous public communication network and its surrounding heterogeneous ecosystem.  It’s fair to say that in the early days our focus was on making something that worked at all - and then later, we shifted to focusing on something that worked and scaled correctly… but we hadn’t managed to focus on ensuring that Matrix provides the building blocks necessary to create blazingly fast, hyper-efficient communication apps which has potential to outperform the centralised mainstream messaging services…&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;…until now!&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;matrix-2-0&quot;&gt;Matrix 2.0&lt;&#x2F;h2&gt;
&lt;p&gt;Back at FOSDEM &lt;a href=&quot;https:&#x2F;&#x2F;archive.fosdem.org&#x2F;2023&#x2F;schedule&#x2F;event&#x2F;matrix20&#x2F;&quot;&gt;we announced the idea of Matrix 2.0&lt;&#x2F;a&gt; - a series of huge step changes in terms of Matrix’s usability and performance, made up of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3575&quot;&gt;Sliding Sync&lt;&#x2F;a&gt; (instant login&#x2F;launch&#x2F;sync), &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3861&quot;&gt;Native OIDC&lt;&#x2F;a&gt; (industry-standard authentication), &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3401&quot;&gt;Native Group VoIP&lt;&#x2F;a&gt; (end-to-end encrypted large-scale voice &amp;amp; video conferencing) and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3902&quot;&gt;Faster Joins&lt;&#x2F;a&gt; (lazy-loading room state when your server joins a room).&lt;&#x2F;p&gt;
&lt;p&gt;Now, we’re excited to announce that as of today everyone can start playing with these Matrix 2.0 features. There’s still some work to bring them formally into the specification, but we’re putting it out there for folks to experience right now. Developers: watch this space for updates on the spec front.&lt;&#x2F;p&gt;
&lt;p&gt;Practically speaking, this means there are now implementations of the four pillars of Matrix 2.0 available today which you can use to power a daily-driver Matrix 2.0 client.  The work here has been driven primarily by &lt;a href=&quot;https:&#x2F;&#x2F;element.io&quot;&gt;Element&lt;&#x2F;a&gt;, using their new &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;labs&#x2F;element-x&quot;&gt;Element X&lt;&#x2F;a&gt; client as the test-bed for the new Matrix 2.0 functionality and to prove that the new APIs are informed by real-world usage and can concretely demonstrably create an app which begins to outperform iMessage, WhatsApp and Telegram in terms of usability and performance… all while benefiting from being 100% built on Matrix.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;matrix-rust-sdk-and-element-x&quot;&gt;matrix-rust-sdk and Element X&lt;&#x2F;h3&gt;
&lt;p style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-x-ignition&#x2F;&quot;&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;20230921-element-x.png&quot;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The mission of Matrix 2.0 has been to provide a huge step forwards in real-world performance, usability and stability - and that means using a real client codebase as a guinea pig to ensure the new protocol is fit for purpose. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-rust-sdk&quot;&gt;matrix-rust-sdk&lt;&#x2F;a&gt; has been the main vehicle for this, with &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;labs&#x2F;element-x&quot;&gt;Element X&lt;&#x2F;a&gt; as the app primarily driving the new features (although other clients built on matrix-rust-sdk such as &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.gnome.org&#x2F;GNOME&#x2F;fractal#beta-version&quot;&gt;Fractal 5&lt;&#x2F;a&gt; can then automatically benefit from the work should they wish).&lt;&#x2F;p&gt;
&lt;p&gt;To see what all the fuss is about, your best bet is probably to head over to the &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-x-ignition&#x2F;&quot;&gt;Element X launch blog post&lt;&#x2F;a&gt; and read all about it!  But from the Matrix perspective, this is a flag day in terms of the existence of a Matrix client which empirically outperforms the mainstream clients both in terms of usability and performance: it shows that Matrix is indeed viable to power communication for billions of users, should we get the chance.&lt;&#x2F;p&gt;
&lt;p&gt;From a client perspective: this has meant implementing Sliding Sync (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;kegan&#x2F;sync-v3&#x2F;proposals&#x2F;3575-sync.md&quot;&gt;MSC3575&lt;&#x2F;a&gt;) in matrix-rust-sdk - and then creating the entirely new &lt;a href=&quot;https:&#x2F;&#x2F;matrix-org.github.io&#x2F;matrix-rust-sdk&#x2F;matrix_sdk_ui&#x2F;index.html&quot;&gt;matrix-sdk-ui&lt;&#x2F;a&gt; crate in order to expose higher level APIs to help apps efficiently drive their UI, without each app having to keep reinventing the wheel and risking getting it wrong.  The new UI crate gives APIs for efficiently managing a lazy-loaded room list, lazy-loaded room timelines (including edits, reactions, aggregations, redactions etc), and even when the app should show a sync spinner or not.  As a result, the vast majority of the heavy lifting can be handled in matrix-rust-sdk, ensuring that the app layer can focus on UI rather than Matrix guts - and performance improvements (e.g. roomlist caching and timeline caching) can all be handled in one place to the benefit of all clients using the SDK.&lt;&#x2F;p&gt;
&lt;p&gt;This is a huge breakthrough relative to the old days of Matrix where each client would have no choice but burn significant amounts of time hand-carving its own timeline and encryption glue logic (although of course clients are still very welcome to do so if they wish!) - but for those wanting higher-level building blocks, matrix-rust-sdk now provides an excellent basis for experimenting with Matrix 2.0 clients.  It’s worth noting that the library is still evolving &lt;strong&gt;fast&lt;&#x2F;strong&gt;, though, and many APIs are not long-term stable.  Both the Sliding Sync API and the UI crates are still subject to significant change, and while the crypto crate and its underlying &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;vodozemac&quot;&gt;vodozemac&lt;&#x2F;a&gt; E2EE implementation is pretty stable, features such as E2EE Backup are still being added to the top-level matrix-rust-sdk (and thence Element X).&lt;&#x2F;p&gt;
&lt;p&gt;In order to hook matrix-rust-sdk up to Element X, the Element team &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;uniffi-rs&#x2F;pull&#x2F;1346&quot;&gt;ended&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;uniffi-rs&#x2F;pull&#x2F;1292&quot;&gt;up&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;uniffi-rs&#x2F;pull&#x2F;1259&quot;&gt;contributing&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;uniffi-rs&#x2F;pull&#x2F;1684&quot;&gt;cancellable&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;uniffi-rs&#x2F;pull&#x2F;1409&quot;&gt;async bindings&lt;&#x2F;a&gt; to &lt;a href=&quot;https:&#x2F;&#x2F;mozilla.github.io&#x2F;uniffi-rs&#x2F;&quot;&gt;uniffi&lt;&#x2F;a&gt;, Mozilla’s language binding generator, so you can now call matrix-rust-sdk directly from Swift, Kotlin and (in theory) other languages, complete with beautifully simple async&#x2F;await non-blocking semantics.  This looks to be a pretty awesome stack for doing modern cross-platform development - so even if you have a project which isn’t natively in Rust, you should be able to lean on matrix-rust-sdk if you so desire!  We hope that other projects will follow the Rust + Swift&#x2F;Kotlin pattern for their extreme performance needs :)&lt;&#x2F;p&gt;
&lt;h3 id=&quot;sliding-sync&quot;&gt;Sliding Sync&lt;&#x2F;h3&gt;
&lt;p&gt;The single biggest change in Matrix 2.0 is the proposal of an entirely new sync API called Sliding Sync (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;kegan&#x2F;sync-v3&#x2F;proposals&#x2F;3575-sync.md&quot;&gt;MSC3575&lt;&#x2F;a&gt;).  The goal of Sliding Sync is to ensure that the application has the option of loading the absolutely bare essential data required to render its visible user interface - ensuring that operations which have historically been horribly slow in Matrix (login and initial sync, launch and incremental sync) are instant, no matter how many rooms the user is in or how large those rooms are.&lt;&#x2F;p&gt;
&lt;p&gt;While matrix-rust-sdk implements both Sync v2 (the current API in Matrix 1.8) as well as Sliding Sync, Element X deliberately only implements Sliding Sync, in order to focus exclusively on getting the fastest UI possible (and generally to exercise the API).  Therefore to use Element X, you need to be running a homeserver with Sliding Sync support, which (for now) means running a &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;sliding-sync&quot;&gt;sliding-sync proxy&lt;&#x2F;a&gt; which bolts Sliding Sync support on to existing homeservers.  You can check out Thib’s &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=25wkV2ZCSsM&quot;&gt;excellent tutorial&lt;&#x2F;a&gt; for how to get up and running (or &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;server-registration&quot;&gt;Element Server Suite&lt;&#x2F;a&gt; provides packages from the Element team)&lt;&#x2F;p&gt;
&lt;p&gt;Now, implementing Sliding Sync in matrix-rust-sdk has been a bit of a journey.  Since we &lt;a href=&quot;https:&#x2F;&#x2F;archive.fosdem.org&#x2F;2023&#x2F;schedule&#x2F;event&#x2F;matrix_clients_as_good_as_youd_expect&#x2F;&quot;&gt;showed off&lt;&#x2F;a&gt; the very first implementation at FOSDEM, two big problems came to light.  For a bit of context: the original design of Sliding Sync was heavily inspired by Discord’s architecture - where the server calculates an ordered list of large numbers of items (your room list, in Matrix’s case); the client says which window into the list it’s currently displaying; and the server sends updates to the client as the view changes.  The user then scrolls around that list, sliding the window up and down, and the server sends the appropriate updates - hence the name Sliding Sync.&lt;&#x2F;p&gt;
&lt;p&gt;Sliding Sync was originally driven by our work on &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;lb&quot;&gt;Low Bandwidth Matrix&lt;&#x2F;a&gt; - as it makes no sense to have a fancy line protocol which can run over a 2400 baud modem… if the first thing the app tries to do is download a 100MB Sync v2 initial-sync response, or for that matter a 10MB incremental-sync response after having been offline for a few days (10MB takes 9 hours to shift over a 2400 baud modem, for those who missed out on the 80s).  Instead, you clearly only want to send the absolute essentials to the client, no matter how big their account is, and that’s what Sliding Sync does.&lt;&#x2F;p&gt;
&lt;p&gt;The first minor flaw in the plan, however, is that the server doesn’t necessarily have all the data it needs to order the room list.  Room ordering depends on what the most recent visible events are in a room, and if the room’s end-to-end encrypted, the server has no way of knowing which events are going to be visible for a given client or not.  It also doesn’t know which rooms have encrypted mentions inside them, and we &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3952#discussion_r1112203279&quot;&gt;don’t want to leak mention metadata&lt;&#x2F;a&gt; to the server, or design out keyword mentions.  So, MSC3575 proposed some complicated contortions to let the client tweak the order client-side based on its superior knowledge of the ordering (given most clients would need to sync all the encrypted rooms anyway, in order to index them and search for keyword notifications etc).  Meanwhile, the order might be ‘good enough’ even without those tweaks.&lt;&#x2F;p&gt;
&lt;p&gt;The second minor flaw in the plan was that having implemented Sliding Sync in Element X, it turns out that the user experience on mobile of incrementally loading in room list entries from the server as the user scrolls around the list is simply not good enough, especially on bad connectivity - and the last thing we want to do is to design out support for bad connectivity in Matrix.  Users have been trained on mobile to expect to be able to swipe rapidly through infinite-scrolling lists of tens of thousands of photos in their photo gallery, or tens of thousands of emails in their mail client, without ever seeing a single placeholder, even for a frame.  So if the network roundtrip time to your server is even 100ms, and Sliding Sync is operating infinitely quickly, you’re still going to end up showing a placeholders for a few frames (6 frames, at 60fps, to be precise) if the user starts scrolling rapidly through their room list.  And empirically that doesn’t look great - the 2007-vintage &lt;a href=&quot;https:&#x2F;&#x2F;www.amazon.co.uk&#x2F;Creative-Selection-Ken-Kocienda&#x2F;dp&#x2F;1250194466&quot;&gt;iOS team&lt;&#x2F;a&gt; have a lot to answer for in terms of setting user expectations!&lt;&#x2F;p&gt;
&lt;p&gt;So, the obvious way to solve both of these problems is simply to pull in more data in the background, to anticipate the user scrolling around.  In fact, it turns out we need to do that anyway, and indeed pull in &lt;em&gt;all&lt;&#x2F;em&gt; the room data so that room-search is instantly responsive; waiting 100ms or more to talk to the server whenever the user tries to search their roomlist is no fun at all, and it transpires that many users navigate their roomlist entirely by search rather than scrolling.  As a result, the sliding sync implementation in matrix-rust-sdk has ended up maintaining an ‘all rooms’ list, which starts off syncing the roomlist details for the most recent N rooms, and then in the background expands to sync all the rest.  At which point we’re not really sliding a window around any more: instead it’s more of a QoSed incremental sync.&lt;&#x2F;p&gt;
&lt;p&gt;So, to cut a long story short: while the current Sliding Sync implementation in matrix-rust-sdk and Element X empirically works very well, it’s ended up being a bit too complicated and we expect some pretty significant simplifications in the near future based on the best practices figured out with clients using it.  Watch this space for updates, although it’s likely that the current form of MSC3575 will prevail in some respect in order to support low-bandwidth environments where roomlist ordering and roomsearch latency is less important than preserving bandwidth.  Critically, we want to figure this out before we encourage folks to implement native server implementations - so for now, we’ll be keeping using the sliding-sync proxy as a way to rapidly experiment with the API as it evolves.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;native-matrix-group-voip&quot;&gt;Native Matrix Group VoIP&lt;&#x2F;h3&gt;
&lt;p&gt;Another pillar of Matrix 2.0 is that we finally have native Matrix Group VoIP calling (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;matthew&#x2F;group-voip&#x2F;proposals&#x2F;3401-group-voip.md&quot;&gt;MSC3401&lt;&#x2F;a&gt;)!  Much like Sliding Sync has been developed using Element X as a testbed, &lt;a href=&quot;https:&#x2F;&#x2F;call.element.io&quot;&gt;Element Call&lt;&#x2F;a&gt; has been the guinea pig for getting fully end-to-end-encrypted, scalable group voice&#x2F;video calling implemented on top of Matrix, building on top of matrix-js-sdk.  And as of today, Element Call finally has it working, complete with end-to-end encryption (and integrated in Element X, for that matter)!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;20230921-element-call.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Much like Sliding Sync, this has also been a bit of a journey.  The &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;introducing-native-matrix-voip-with-element-call&#x2F;&quot;&gt;original&lt;&#x2F;a&gt; implementations of Element Call strictly followed MSC3401, using full mesh conferencing to effectively have every participant place a call to every other participant - thus decentralising the conference and avoiding the need for a conferencing ‘focus’ server… but limiting the conference to 7 or 8 participants given all the duplication of the sent video required.  In Element Call &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-call-beta-2-encryption-spatial-audio-walkie-talkie-mode-and-more&#x2F;&quot;&gt;Beta 2&lt;&#x2F;a&gt;, end-to-end encryption was enabled; easy, given it’s just a set of 1:1 calls.&lt;&#x2F;p&gt;
&lt;p&gt;Then the real adventure began: to implement a Selective Forwarding Unit (SFU) which can be used to scale up to hundreds of users - or beyond. The unexpected first move came from Sean DuBois, project lead of the awesome &lt;a href=&quot;https:&#x2F;&#x2F;pion.ly&#x2F;&quot;&gt;Pion&lt;&#x2F;a&gt; WebRTC stack for Golang - who wrote a proof-of-concept called sfu-to-sfu to demonstrate the viability of decentralised heterogenous cascading SFUs, as detailed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;SimonBrandner&#x2F;msc&#x2F;sfu&#x2F;proposals&#x2F;3898-sfu.md&quot;&gt;MSC3898&lt;&#x2F;a&gt;. This would not only let calls on a single focus scale beyond hundreds of users, but also share the conferencing out across all the participating foci, providing the world’s first heterogeneous decentralised video conferencing.  Element took the sfu-to-sfu implementation, hooked it up to Element Call on a branch, and renamed it as &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;waterfall&quot;&gt;waterfall&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;However, when Sean first contributed sfu-to-sfu, he mentioned to us that if Matrix is serious about SFUs, we should take a look at &lt;a href=&quot;https:&#x2F;&#x2F;livekit.io&#x2F;&quot;&gt;LiveKit&lt;&#x2F;a&gt; - an open source startup not dissimilar to Element who were busy building best-in-class SFUs on top of Pion. And while waterfall worked well as a proof of concept, it became increasingly obvious that there’s a lot of work to be done around tuning congestion control, error correction, implementing end-to-end encryption etc which the LiveKit team had already spent years doing.  So, Element reached out to the LiveKit team, and started experimenting with what it might take to implement a Matrix-capable SFU on top of the LiveKit engine.&lt;&#x2F;p&gt;
&lt;p&gt;The end result was Element Call &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-call-beta-3&#x2F;&quot;&gt;Beta 3&lt;&#x2F;a&gt;, which is an interesting hybrid between MSC3401 and LiveKit’s existing signalling: the high-level signalling of the call (its existence, membership, duration etc) is advertised by Matrix - but the actual WebRTC signalling is handled by LiveKit, providing support for hundreds of users per call.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, today marks the release of Element Call &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-x-ignition&#x2F;#native-matrix-video-conferencing-with-element-call&quot;&gt;Beta 4&lt;&#x2F;a&gt;, which adds back end-to-end encryption via the LiveKit SFU (currently by using a shared static secret, but in the near future will support full Matrix-negotiated end-to-end encryption with sender keys) - and also includes a complete visual refresh.  The next steps here include bringing back support for full mesh as well as SFU, for environments without an SFU, and updating all the MSCs to recognise the hybrid signalling model that reality has converged on when using LiveKit.  Meanwhile, head over to &lt;a href=&quot;https:&#x2F;&#x2F;call.element.io&quot;&gt;https:&#x2F;&#x2F;call.element.io&lt;&#x2F;a&gt; to give it a go, or read more about it in the &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-x-ignition&#x2F;&quot;&gt;Element X Ignition blog post&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
&lt;h3 id=&quot;native-open-id-connect&quot;&gt;Native Open ID Connect&lt;&#x2F;h3&gt;
&lt;p&gt;Finally, last but not least, we’re proud to announce that the project to replace Matrix’s venerable existing authentication APIs with industry-standard Open ID Connect in Matrix 2.0 has taken a huge leap forwards today, with &lt;a href=&quot;https:&#x2F;&#x2F;matrix-org.github.io&#x2F;matrix-authentication-service&quot;&gt;matrix-authentication-service&lt;&#x2F;a&gt; now being available to add Native OIDC support to Synapse, as well as Element X now implementing account registration, login and management via Native OIDC (with legacy support only for login&#x2F;logout).&lt;&#x2F;p&gt;
&lt;p&gt;This is a critical step forwards in improving the security and maintainability for Matrix’s authentication, and you can read all about it in this &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;09&#x2F;better-auth&#x2F;&quot;&gt;dedicated post&lt;&#x2F;a&gt;, explaining the rationale for adopting OpenID Connect for all forms of authentication throughout Matrix, and what you need to know about the transition.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;There has been an &lt;strong&gt;enormous&lt;&#x2F;strong&gt; amount of work that has gone into Matrix 2.0 so far - whether that’s implementing sliding sync in matrix-rust-sdk and sliding-sync proxy, matrix-authentication-service and all the native OIDC infrastructure on servers and clients, the entirety of Element Call and its underpinning matrix-js-sdk and SFU work, or indeed Faster Joins in Synapse, which shipped back in &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;01&#x2F;31&#x2F;synapse-1-76-released&#x2F;&quot;&gt;Jan&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;It’s been a pretty stressful sprint to pull it all together, and huge thanks go to everyone who’s contributed - both from the team at Element, but also contributors to other projects like matrix-rust-sdk who have got caught in the crossfire :)  It’s also been amazing seeing the level of support, high quality testing and excellent feedback from the wider community as folks have got excited about the promise of Matrix 2.0.&lt;&#x2F;p&gt;
&lt;p&gt;On the Foundation side, we’d like to thank the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;06&#x2F;membership-program&#x2F;&quot;&gt;Members&lt;&#x2F;a&gt; whose financial support has been critical in providing bandwidth to enable the progress on Matrix 2.0 - and for those who want to help accelerate Matrix, especially those commercially building on top of Matrix, please consider &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;membership&#x2F;&quot;&gt;joining the Foundation&lt;&#x2F;a&gt; as a member!  Also, in case you missed it, we’re super excited to &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;09&#x2F;introducing-josh-simmons-managing-director&#x2F;&quot;&gt;welcome Josh Simmons as Managing Director&lt;&#x2F;a&gt; for the Foundation - focusing on running the Foundation membership programme and generally ensuring the growth of the Foundation funding for the benefit of the whole Matrix community. Matthew and Amandine continue to lead the overall project (alongside their day jobs at Element), with the support of the other three independent Guardians - but Josh is working full time exclusively on running the non-profit foundation and gathering funds to support Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;Talking of funding, we should mention that we’ve had to pause work in other places due to lack of Matrix funding - especially while focusing on successfully shipping Matrix 2.0. Major next-generation projects including &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&quot;&gt;Third Room&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;arewep2pyet.com&quot;&gt;P2P Matrix&lt;&#x2F;a&gt;, and &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2021&#x2F;06&#x2F;10&#x2F;low-bandwidth-matrix-an-implementation-guide&#x2F;&quot;&gt;Low Bandwidth Matrix&lt;&#x2F;a&gt; have all been paused unless there’s a major shift in circumstances - so, if you have money and you’re interested in a world where the more experimental next-generation Matrix projects progress with folks working on them as their day job, please &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;membership&#x2F;&quot;&gt;get in touch&lt;&#x2F;a&gt; with the Foundation.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-s-next&quot;&gt;What’s next?&lt;&#x2F;h2&gt;
&lt;p&gt;While this is the first usable release of Matrix 2.0 implementations, there’s loads of work still to be done - obvious work on Matrix 2.0 includes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Getting Native OIDC enabled on matrix.org, and providing migration tools to Native OIDC for existing homeservers in general&lt;&#x2F;li&gt;
&lt;li&gt;Reworking Sliding Sync based on the lessons learned implementing it in matrix-rust-sdk&lt;&#x2F;li&gt;
&lt;li&gt;Actually getting the Matrix 2.0 MSCs stabilised and matured to the point they can be approved and merged into the spec&lt;&#x2F;li&gt;
&lt;li&gt;Adding encrypted backups to matrix-rust-sdk&lt;&#x2F;li&gt;
&lt;li&gt;Reintroducing full-mesh support for Native Matrix Group VoIP calling&lt;&#x2F;li&gt;
&lt;li&gt;Having a big Matrix 2.0 launch party once the spec lands!&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Outside of Matrix 2.0 work, other big items on the horizon include:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Adding Rust matrix-sdk-crypto to matrix-js-sdk, at which point all the official Matrix.org client SDKs will (at last!) be using the same stable performant E2EE implementation&lt;&#x2F;li&gt;
&lt;li&gt;Continuing to contribute Matrix input to the MIMI working group in IETF for Digital Markets Act interoperability&lt;&#x2F;li&gt;
&lt;li&gt;Working on &lt;a href=&quot;https:&#x2F;&#x2F;arewemlsyet.com&quot;&gt;MLS&lt;&#x2F;a&gt; for next-generation E2EE&lt;&#x2F;li&gt;
&lt;li&gt;Next generation moderation tooling and capabilities&lt;&#x2F;li&gt;
&lt;li&gt;Account Portability and Multihomed accounts&lt;&#x2F;li&gt;
&lt;li&gt;…and much much more.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;So: welcome to our brave new Matrix 2.0 world. We hope you’re excited about it as we are - and thanks to everyone for continuing to use Matrix and build on it.  Here’s to the beginning of a whole new era!&lt;&#x2F;p&gt;
&lt;p&gt;Matthew, Amandine and the whole Matrix team.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Better authentication, session management and permissions in Matrix</title>
    <published>2023-09-21T14:00:00+00:00</published>
    <updated>2023-09-21T14:00:00+00:00</updated>
    <author>
      <name>
            Thib, 
          
            Matrix Auth Team
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/09/better-auth/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/09/better-auth/</id>
    <content type="html">&lt;p&gt;Before we explain all about our new authentication system - don&#x27;t panic! This change is part of Matrix 2.0, the next step for Matrix that will be introduced in a blog post later today.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;nothing-breaks&quot;&gt;Nothing breaks&lt;&#x2F;h2&gt;
&lt;p&gt;Matrix 2.0 is a reference to Matthew’s FOSDEM talk &lt;a href=&quot;https:&#x2F;&#x2F;archive.fosdem.org&#x2F;2023&#x2F;schedule&#x2F;event&#x2F;matrix20&#x2F;&quot;&gt;Matrix 2.0&lt;&#x2F;a&gt;, itself a reference to the name he coined in the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;08&#x2F;15&#x2F;the-matrix-summer-special-2022&#x2F;#matrix-2-0&quot;&gt;Matrix Summer Special 2022&lt;&#x2F;a&gt;: evolutions of the spec that are making the Matrix experience so much better it almost feels like a different protocol. One of the major changes in this bundle is the introduction of OpenID Connect-native Matrix and its implementation &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-authentication-service&#x2F;&quot;&gt;matrix-authentication-service&lt;&#x2F;a&gt; (MAS).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Don’t panic: your current setup is not at risk, you don’t urgently need to deploy the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-authentication-service&#x2F;&quot;&gt;matrix-authentication-service&lt;&#x2F;a&gt; to keep using Matrix.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Let’s walk together through what OIDC-native Matrix, what changes as compared to the Matrix we know and love, and what’s the impact for your deployment.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;from-oidc-ish-to-oidc&quot;&gt;From OIDC-ish to OIDC&lt;&#x2F;h2&gt;
&lt;p&gt;One of the most popular Matrix server implementations, Synapse, &lt;a href=&quot;https:&#x2F;&#x2F;matrix-org.github.io&#x2F;synapse&#x2F;latest&#x2F;usage&#x2F;configuration&#x2F;config_documentation.html#oidc_providers&quot;&gt;supports authentication via OIDC&lt;&#x2F;a&gt;. This is the only mainstream server implementation to support authentication via an OpenID Connect Provider. OpenID Connect, SAML, and more generally Single Sign On (SSO) are a requirement for most companies past a certain size, as well as a security best practice.&lt;&#x2F;p&gt;
&lt;p&gt;As it is today, Synapse is more &lt;em&gt;OIDC-compatible&lt;&#x2F;em&gt; than &lt;em&gt;OIDC-native&lt;&#x2F;em&gt;. This means that it’s possible to use SSO (typically OpenID Connect) to connect to Synapse, but that’s about where the OpenID Connect adventure stops. Once you’re authenticated, Synapse generates a Matrix Access Token for your client, but that is not an OAuth2&#x2F;OIDC Access Token. From your client point of view, it is doing the “Matrix SSO dance” &lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&#x2F;v1.8&#x2F;client-server-api&#x2F;#client-login-via-sso&quot;&gt;defined by the spec&lt;&#x2F;a&gt;, but the fact that Synapse does a login via OIDC, SAML or CAS is irrelevant to the client. Whenever your client asks Synapse for anything that requires being logged in, it sends that Matrix Access Token in the &lt;code&gt;Authorization&lt;&#x2F;code&gt; header of the http requests.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;20230921-classic-token.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;While this approach has served Matrix well, the Matrix Access Token method is reimplementing some concepts of OpenID Connect without all the benefits of thousands of developers battle testing and fixing every edge case they meet.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3861&quot;&gt;MSC3861&lt;&#x2F;a&gt;, which proposes the adoption of OIDC in Matrix, is all about embracing the best of OIDC to make Matrix even better. By adopting the standard OIDC flows we allow Matrix to stand on the shoulders of another battle-tested industry standard. Not only does it improve security overall, it also unlocks new use cases for Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;20230921-oidc-token.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;unlocking-use-cases&quot;&gt;Unlocking use cases&lt;&#x2F;h2&gt;
&lt;p&gt;The Matrix Access Tokens Matrix currently relies on are secure, but not very flexible. A unique token is granted to each and every client during user login. This Matrix Access Token is only revoked when the user manages their sessions and logs a device out. A Matrix Access Token gives full access to a Matrix Account. Session management based on Matrix Access Tokens is quite nuclear.&lt;&#x2F;p&gt;
&lt;p&gt;Using OpenID Connect for Matrix comes with three major areas of improvements:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Standard authentication process on every client, including on devices without a keyboard&lt;&#x2F;li&gt;
&lt;li&gt;Improved security with token rotation&lt;&#x2F;li&gt;
&lt;li&gt;Better granularity of permissions (which improves security too!)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;authenticate-like-you-want&quot;&gt;Authenticate like you want&lt;&#x2F;h3&gt;
&lt;p&gt;When relying on OIDC, the client delegates authentication to the OpenID Provider. This means that the client redirects the user to a web page on the OpenID Provider, where the user needs to authenticate. This authentication can happen through a username and password, WebAuthn (passwordless login), additional steps if you want to add MFA… and much more.&lt;&#x2F;p&gt;
&lt;p&gt;Since the authentication happens on the OpenID Provider, the client doesn’t need to support any authentication method other than “redirect the user to the OpenID Provider, and handle the result”. Once the user has authenticated against the OpenID Provider, it is going to be redirected back to its client, to allow it to retrieve an Access Token on their behalf.&lt;&#x2F;p&gt;
&lt;p&gt;During the whole process, no password was given to the client, and the client doesn’t even know how the user authenticated. All that matters to the client is that it now has an Access Token it can use to perform the regular Matrix API calls.&lt;&#x2F;p&gt;
&lt;p&gt;From the user perspective, the authentication is a very familiar process very well integrated in their password manager regardless of the client they use. They can use any client that supports OIDC, without having to worry about whether it supports every particular step of their authentication process. It’s also worth noting that matrix-authentication-service has a compatibility layer to support the &lt;code&gt;m.login.password&lt;&#x2F;code&gt; flow. This means compatibility with older clients will not break!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;20230921-mas-ui.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;From the administrator perspective, it’s possible to force authentication flows (e.g. MFA), making sure the login is secure and matches their organisation’s policies. It also makes it possible to have a central management of all users&#x27; devices, including the ability to enforce policies upon them as provided by the OpenID Provider. For example, it becomes possible to the re-authentication of the user if they leave a trusted network.&lt;&#x2F;p&gt;
&lt;p&gt;From the developer perspective, neither clients nor servers have to add support for every new authentication method, existing or to come.&lt;&#x2F;p&gt;
&lt;p&gt;Element has been spearheading the effort to implement &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3861&quot;&gt;MSC3861&lt;&#x2F;a&gt; and matrix-authentication-service, and Element X is the first client to support them. Here is how the authentication flow and account management look like as seen from Element X iOS.&lt;&#x2F;p&gt;
&lt;noscript&gt;Today&#x27;s Matrix Live: &lt;a href=&quot;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=COCMi6sAghw&quot;&gt;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=COCMi6sAghw&lt;&#x2F;a&gt;&lt;&#x2F;noscript&gt;
&lt;youtube-player video-id=&quot;COCMi6sAghw&quot;&gt;&lt;&#x2F;youtube-player&gt;
&lt;h3 id=&quot;token-rotation&quot;&gt;Token rotation&lt;&#x2F;h3&gt;
&lt;p&gt;While current Matrix Access Token can expire thanks to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;2918&quot;&gt;MSC2918&lt;&#x2F;a&gt;, this best practice didn’t make it to most of the clients of the ecosystem. If the access token of a user was leaked for one reason or another, they wouldn’t notice since this wouldn’t create a new session, and the leaked token would be valid forever. Please note that thanks to E2EE, attackers who gain access to a Matrix Access Token would not be able to read the encrypted content in encrypted rooms.&lt;&#x2F;p&gt;
&lt;p&gt;OpenID Connect relies on two tokens:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;an Access Token, that is used to perform the authenticated API calls, and that expires regularly,&lt;&#x2F;li&gt;
&lt;li&gt;and a Refresh Token that is used in conjunction with the Access Token to rotate both.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This ensures that if the Access Token was leaked during an API call, its validity would be very limited in time. Leaking a Refresh Token will also have limited impact, since the server would notice that two different clients are trying to consume the same Refresh Token and would log the user out from devices using this token.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;principle-of-least-privilege&quot;&gt;Principle of least privilege&lt;&#x2F;h3&gt;
&lt;p&gt;Matrix is not just about apps and servers. It’s also a vibrant ecosystem of widgets, bots and various CLI to toy with. One of the strengths of Matrix has been its hackability: log into a client, dump the matrix access token, and you can hand it to a CLI or a bot for it to do things on your behalf.&lt;&#x2F;p&gt;
&lt;p&gt;While this approach is particularly convenient for development, it comes with its own lot of issues. Most of the time you don’t want the CLI or bot to be able to do everything on your behalf.&lt;&#x2F;p&gt;
&lt;p&gt;Widgets are another case where OIDC can help. While &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;2764&quot;&gt;widgets are not yet part of the spec&lt;&#x2F;a&gt;, in practice they are already commonly used. In essence, a widget is a tiny app that has access to an (unspecified) widgets API that allows it to do a limited amount of things on behalf of the user, such as sending a message in the rooms it’s in. While this has served several clients well, this can be improved. Indeed, it’s up to the client to enforce the restrictions mandated by the widgets API. This means you can’t be assured that all the clients will consistently enforce them.&lt;&#x2F;p&gt;
&lt;p&gt;With OpenID Connect, widgets can eventually become tiny embedded Matrix clients on their own, and they can get their own Access Token with explicit and granular permissions of their own. Those restrictions will be enforced by the server, who will not even be aware it’s a widget calling the API, making the experience consistent across clients. This behaviour still needs to be added to the specification, but a more OIDC-native Matrix paves the way for it.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;upgrading-to-use-matrix-authentication-service&quot;&gt;Upgrading to use matrix-authentication-service&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3861&quot;&gt;MSC3861&lt;&#x2F;a&gt; (and friends) define how the OIDC flows and concepts (e.g. token exchange, dynamic client registration) should be used in Matrix, as well as the requirements for things which need to be coordinated with the homeserver (e.g. session lifecycle management).&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;a href=&quot;https:&#x2F;&#x2F;matrix-org.github.io&#x2F;matrix-authentication-service&#x2F;development&#x2F;architecture.html#scope-and-goals&quot;&gt;goals of matrix-authentication-service (MAS)&lt;&#x2F;a&gt; are two-fold: firstly, it provides an implementation of the MSCs to support the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&quot;&gt;Matrix Specification Change (MSC) process&lt;&#x2F;a&gt;; secondly, it provides capabilities to facilitate the transition of the Matrix ecosystem to OIDC. &lt;&#x2F;p&gt;
&lt;p&gt;Because MSC3861 is changing the technical mechanism by which your client gets access to your account it is not something that can be done by pushing a single, big button.Instead we need a transition period where both OIDC and the existing legacy Matrix authentication methods coexist so that different clients and homeservers can migrate at their own pace.&lt;&#x2F;p&gt;
&lt;p&gt;One way in which MAS facilitates this transition is by allowing deployments without an external Identity Provider (IdP) to use OIDC out-of-the-box. This means that MAS will support some of the current flows that Synapse supports, primarily in the form of password-based login. Please note those flows are not supported yet: MAS requires an external IdP for now. &lt;&#x2F;p&gt;
&lt;p&gt;Another way is that MAS allows for existing sessions and access tokens to be imported (just from Synapse so far) so that there is no need for clients to re-authenticate when a homeserver is migrated.&lt;&#x2F;p&gt;
&lt;p&gt;Because of these migration capabilities we expect MAS to be widely used, however, in keeping with the open philosophy of Matrix, we expect other implementations to exist either standalone or integrated with other OIDC providers like Keycloak or Dex.&lt;&#x2F;p&gt;
&lt;p&gt;MAS is not intended to be a fully fledged IdP solution: we suggest using a dedicated software for this if you want to do more than what is included.&lt;&#x2F;p&gt;
&lt;p&gt;Currently MAS is deployable as a sidecar service alongside the homeserver. While larger setups shouldn’t see this as a problem, it might be seen as cumbersome in smaller self-hosted setups. For the sake of convenience, the Synapse and MAS team are investigating how to bundle MAS along with Synapse natively using &lt;a href=&quot;https:&#x2F;&#x2F;pyo3.rs&#x2F;&quot;&gt;PyO3&lt;&#x2F;a&gt;. We anticipate such a  bundle to exist by the end of Q2 2024.&lt;&#x2F;p&gt;
&lt;p&gt;You can browse &lt;a href=&quot;https:&#x2F;&#x2F;matrix-org.github.io&#x2F;matrix-authentication-service&#x2F;setup&#x2F;index.html&quot;&gt;the matrix-authentication-service docs&lt;&#x2F;a&gt; to get all the technical details and installation steps.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>What happened with archive.matrix.org</title>
    <published>2023-07-04T14:24:00+00:00</published>
    <updated>2023-07-04T14:24:00+00:00</updated>
    <author>
      <name>
            Matthew Hodgson, 
          
            Thib
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/07/what-happened-with-the-archive/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/07/what-happened-with-the-archive/</id>
    <content type="html">&lt;p&gt;We launched the Matrix Public Archive &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ULbvBIwiGEI&quot;&gt;publicly on June 2nd, 2023&lt;&#x2F;a&gt;.
We decided to take it down on Sunday, June 25th out of precaution after a
member of OFTC staff warned us that the archive made the content of two OFTC IRC
channels bridged to Matrix available on the Internet.&lt;&#x2F;p&gt;
&lt;p&gt;After investigating the issue, we determined that the Matrix Public Archive&#x27;s
behaviour was expected for these channels, given an IRC chanop had
&lt;strong&gt;explicitly&lt;&#x2F;strong&gt; configured the Matrix side of the rooms to be world-readable.&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s talk about how room visibility works in vanilla Matrix, how it works with
bridges, and what are the next steps.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;tl-dr&quot;&gt;TL;DR&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;archive.matrix.org does &lt;strong&gt;not&lt;&#x2F;strong&gt; expose history for Matrix rooms (or channels
bridged from IRC) unless a room admin (aka IRC chanop) has explicitly
configured that room to be world-readable.&lt;&#x2F;li&gt;
&lt;li&gt;There was confusion over this because the UI failed to explain &lt;em&gt;why&lt;&#x2F;em&gt; a given
room is viewable (or not), and folks didn&#x27;t realise that some rooms had
explicitly been configured as world-readable in the dim and distant past.&lt;&#x2F;li&gt;
&lt;li&gt;archive.matrix.org is &lt;strong&gt;not&lt;&#x2F;strong&gt; an indexer or an archive - it&#x27;s just a read-only
matrix client. It doesn&#x27;t store any messages. We&#x27;re going to find a better
name for it.&lt;&#x2F;li&gt;
&lt;li&gt;The only reason the @archive:matrix.org bot joins rooms when someone views
them via archive.matrix.org is because the Peek API is deprecated - and rather
than implementing a deprecated API to view the room without joining, the
service explicitly joins the room instead. Once peeking (e.g. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;2753&quot;&gt;MSC2753&lt;&#x2F;a&gt;)
lands, then the bot won&#x27;t be needed any more.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;room-visibility-in-matrix&quot;&gt;Room Visibility in Matrix&lt;&#x2F;h2&gt;
&lt;p&gt;Matrix rooms have some flexibility regarding whether new members can see the
history of a room or not. People interested in technical details can check the
&lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&#x2F;v1.2&#x2F;client-server-api&#x2F;#room-history-visibility&quot;&gt;Room History Visibility in the specification&lt;&#x2F;a&gt;.
The history visibility possibilities are the following, by increasing order of
openness (least open first):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;joined&lt;&#x2F;code&gt;: people need to join the room to see the history, and will only see
the messages sent after they joined. This behaviour is similar to the
experience of IRC on a bouncer, and is how all IRC channels are bridged to
Matrix by default&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;invited&lt;&#x2F;code&gt;: people need to join the room to see the history, and will only see
the messages after they were invited.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;shared&lt;&#x2F;code&gt;: people need to join the room to see the history, but will then see
the history up to when this visibility setting was set (the change is not
retroactive).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;world_readable&lt;&#x2F;code&gt;: &lt;em&gt;everyone can see the room history&lt;&#x2F;em&gt; without even joining the
room.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Element is &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;ecosystem&#x2F;clients&#x2F;&quot;&gt;far from being the only Matrix client&lt;&#x2F;a&gt;
out there but is commonly used in the Matrix community. The visibility settings
described above are translated as follows in Element, by decreasing order of
openness:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;element-visibility-settings.png&quot; alt=&quot;A screenshot of Element history visibility settings&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;An example of a world-readable room (with history visibility set to &amp;quot;Anyone&amp;quot; in
Element) is &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#matrix:matrix.org&quot;&gt;Matrix HQ&lt;&#x2F;a&gt;. When trying to
reach it via &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&quot;&gt;matrix.to&lt;&#x2F;a&gt;, you can pick Element in a browser,
and it will show you a preview of the conversation.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2-continue-in-browser.png&quot; alt=&quot;A screenshot of matrix.to asking which client to use&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;3-room-history.png&quot; alt=&quot;A screenshot of matrix.to showing a preview of Matrix HQ&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;What is not necessarily obvious here is that Element Web creates a guest user
&lt;em&gt;who never joins the room&lt;&#x2F;em&gt; in order to peek into it. Indeed, the guest is only
created to be able to use Element, and then the guest is looking at a preview of
the room (as defined in the &lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&#x2F;v1.7&#x2F;client-server-api&#x2F;#room-previews&quot;&gt;Room Previews section of the spec&lt;&#x2F;a&gt;):
they&#x27;re able to read the history without ever joining. All of this is defined
for each room, and is vanilla Matrix without any involvement of the Matrix
Public Archive.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;room-visibility-and-irc-bridging&quot;&gt;Room Visibility and IRC Bridging&lt;&#x2F;h2&gt;
&lt;p&gt;It is important to note that the Libera Chat and OFTC bridges hosted by the
Matrix.org Foundation (and any other bridged powered by a vanilla &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&quot;&gt;matrix-appservice-irc&lt;&#x2F;a&gt;),
mimic the IRC behaviour by default when creating the rooms: their visibility is
set to &lt;code&gt;joined&lt;&#x2F;code&gt;, a.k.a. &amp;quot;People need to join the room to see history and will
only see new messages since they joined&amp;quot;. In other words, by default, &lt;strong&gt;IRC
channel history is only ever visible to users currently in the channel - it is
never shared with other users.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;For the sake of completeness, let&#x27;s cover the two types of rooms that exist when
bridging a room to IRC, and the implications on history visibility control.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;portalled-rooms&quot;&gt;Portalled rooms&lt;&#x2F;h3&gt;
&lt;p&gt;When someone tries to join #example:libera.chat, the bridge is going to create
this room and automatically bridge it to the #example channel on Libera Chat.
The Bridge Bot user (@appservice:libera.chat) is the owner of the room and has
the maximum power level (PL100).&lt;&#x2F;p&gt;
&lt;p&gt;Nobody on the Matrix side has privileges when the room is created. No Matrix
user can change the visibility of this room. If someone from the IRC side
promotes the IRC representation of a Matrix user as op in the channel, the
bridge bot will promote said user to the power level 50 on the Matrix side. This
Matrix user will be able to change the visibility of the room on the Matrix
side, and opt-in for a world-readable visibility.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;plumbed-rooms&quot;&gt;Plumbed rooms&lt;&#x2F;h3&gt;
&lt;p&gt;When someone takes an existing Matrix room and tries to manually plug it (or
plumb it) to an IRC channel, they can do so using a widget for interactive
configuration. The Matrix user needs to specify which is the IRC network and
channel they want to bridge to, and the nick of the IRC op who can approve that
request.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;4-irc-link-widget.png&quot; alt=&quot;&amp;quot;A screenshot of a widget offering to plumb a Matrix room to IRC&amp;quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Plumbing a room in this fashion requires someone with sufficient privileges in
the IRC channel to approve the request. In plumbed rooms, the Matrix user who
made the plumbing request has the maximum power level in this room (usually
PL100). They are in total control of the history visibility, which can be
world-readable from the start. It&#x27;s worth reiterating that such rooms can only
be linked to IRC when an IRC chanop approves the plumbing request.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-matrix-public-archive-is-not-an-archive&quot;&gt;The Matrix Public Archive is not an archive&lt;&#x2F;h2&gt;
&lt;p&gt;In retrospect, the Matrix Public Archive is a terrible name for this project -
all the webapp does is to act as a read-only Matrix client for world-readable
content. It doesn&#x27;t archive anything; it doesn&#x27;t store anything; it just pulls
data from world-readable rooms on the Matrix homeserver, and exposes it to the
web.&lt;&#x2F;p&gt;
&lt;p&gt;The Matrix Public Archive also depends on a bot joining the room to assess
whether the room is world-readable or not, purely because the original peeking
APIs in Matrix are deprecated, and the new ones (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;2753&quot;&gt;MSC2753&lt;&#x2F;a&gt;)
haven&#x27;t landed yet. In the case of the Matrix Public Archive hosted by the
Matrix.org Foundation, that bot is &lt;code&gt;@archive:matrix.org&lt;&#x2F;code&gt;.  However, the bot user
is not reading any information which wasn&#x27;t already publicly visible without
joining the room - but we can see why having a random bot join is scary,
especially when it&#x27;s called ‘archive&#x27;, and it&#x27;s not actually archiving anything.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;wait-my-room-s-world-readable&quot;&gt;Wait, my room&#x27;s world readable?!&lt;&#x2F;h3&gt;
&lt;p&gt;The most obvious issue is that some people were surprised that their room was
world readable in the first place. Some rooms have a long history themselves,
and it&#x27;s entirely possible for some admins to have inherited a room someone else
created, made public, and never revisited the settings. It then came as a
surprise for them that their room history was in the Matrix Public Archive at
all.&lt;&#x2F;p&gt;
&lt;p&gt;When matrix.to was introduced, some room administrators also set up their rooms
to &lt;code&gt;world_readable&lt;&#x2F;code&gt; so potential joiners could peek at what was happening in the
room. Earlier in Matrix history, guest accounts were popular in some communities
and people also made their room &lt;code&gt;world_readable&lt;&#x2F;code&gt; to onboard guests more easily.
All of this leads us to the same two issues today.&lt;&#x2F;p&gt;
&lt;p&gt;First, it should be made clearer in the UI of archive.matrix.org on &lt;em&gt;why&lt;&#x2F;em&gt; a room
is world-readable (i.e. &amp;quot;A room admin (chanop) called Bob set the room to be
world-readable on Jan 2, 2018&amp;quot;). And moreover, Matrix clients in general could
do a better job of calling out when a room&#x27;s history can be read by everyone,
including people who didn&#x27;t join. Second, the room settings may not make it
obvious enough that sharing the history with &amp;quot;anyone&amp;quot; literally means &amp;quot;anyone&amp;quot;
and not &amp;quot;anyone who has joined&amp;quot;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;a-note-on-shared-history-visibility&quot;&gt;A note on shared history visibility&lt;&#x2F;h3&gt;
&lt;p&gt;Having a public room doesn&#x27;t necessarily mean you want everyone to be able to
read the whole history. Initially, the Matrix Public Archive also made rooms
with &lt;code&gt;shared&lt;&#x2F;code&gt; history visibility readable via the archive.matrix.org interface
(acting as a read-only client, effectively) but disallowed search engines to
index that content. A &lt;code&gt;shared&lt;&#x2F;code&gt; room is a room where, having joined, you can see
the whole history of the room.&lt;&#x2F;p&gt;
&lt;p&gt;In retrospect, this was a thinko - &lt;code&gt;shared&lt;&#x2F;code&gt; history doesn&#x27;t mean you expect
anonymous users to be able to read history (otherwise you&#x27;d have set it
&lt;code&gt;world_readable&lt;&#x2F;code&gt;), and we&#x27;ve subsequently &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-public-archive&#x2F;pull&#x2F;239&quot;&gt;merged a fix&lt;&#x2F;a&gt;
kindly provided by tulir to address this.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;next-up&quot;&gt;Next up&lt;&#x2F;h2&gt;
&lt;p&gt;By default, portalled IRC rooms were already set with &lt;code&gt;joined&lt;&#x2F;code&gt; history
visibility which prevented them from being in the archive at all. We have
additionally prevented the Matrix.org hosted public archive from exposing the
content of portalled rooms that are bridged to Libera Chat since June 7, and
rooms bridged to OFTC since June 27, regardless of their history visibility
setting. &lt;&#x2F;p&gt;
&lt;p&gt;Looking at &lt;a href=&quot;https:&#x2F;&#x2F;libera.chat&#x2F;policies&#x2F;#public-logging&quot;&gt;Libera Chat&#x27;s Public logging policy&lt;&#x2F;a&gt;
there might be a way to make the bridge change the topic to be explicit about
the channel being publicly logged when the Matrix room is &lt;code&gt;world_readable&lt;&#x2F;code&gt;. This
feature doesn&#x27;t exist yet, so we would rather prevent the archive from logging
any room bridged to their network.&lt;&#x2F;p&gt;
&lt;p&gt;We&#x27;re investigating:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Making it clear in the archive.matrix.org UI why a given room is world
readable (and thus showing up in the interface)&lt;&#x2F;li&gt;
&lt;li&gt;Renaming the archive (as Matrix Viewer?)&lt;&#x2F;li&gt;
&lt;li&gt;Avoiding bots ever joining rooms on behalf of the system; &lt;code&gt;world_readable&lt;&#x2F;code&gt;
privileges should mean by definition that nothing needs to join the room.&lt;&#x2F;li&gt;
&lt;li&gt;MSC2291 to act like &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Robots.txt&quot;&gt;web&#x27;s Robots Exclusion Protocol&lt;&#x2F;a&gt;,
at the room level&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;a-word-on-gdpr&quot;&gt;A word on GDPR&lt;&#x2F;h2&gt;
&lt;p&gt;We understand that there have been some concerns around the GDPR compliance of
the Matrix Public Archive. As always, we hear you and welcome your feedback. &lt;&#x2F;p&gt;
&lt;p&gt;The first step we will take is actually rename the project, to clarify what its
technical purpose is. ‘Archiving&#x27; has very specific connotations within the
GDPR, mainly governed by art. 89. No further data is collected and archived
outside of your normal use of a Matrix homeserver, but there is indeed some
additional processing by further disseminating the data. We are making this
clearer in the matrix.org homeserver Privacy Notice.&lt;&#x2F;p&gt;
&lt;p&gt;This article requires measures around data minimisation to be taken when
archiving data in the public interest. We would argue that processing this data
only in a cache state, would meet this principle of minimisation. In fact,
removing data from the ‘archive&#x27; is as simple as &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-public-archive&#x2F;blob&#x2F;main&#x2F;docs&#x2F;faq.md&quot;&gt;deleting it from the room&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If you have feedback on the legal aspects of this project, please send it over
to &lt;a href=&quot;mailto:dpo@matrix.org&quot;&gt;dpo@matrix.org&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next steps&lt;&#x2F;h2&gt;
&lt;p&gt;Once we&#x27;ve renamed the project and clarified the visibility settings, we&#x27;ll be
turning archive.matrix.org back on. If you have any further feedback, please
talk to us at &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#matrix-public-archive:matrix.org&quot;&gt;#matrix-public-archive:matrix.org&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>A brand new website</title>
    <published>2023-06-15T15:21:45+00:00</published>
    <updated>2023-06-15T14:16:31+00:00</updated>
    <author>
      <name>
            Thib
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/06/15/a-brand-new-website/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/06/15/a-brand-new-website/</id>
    <content type="html">&lt;p&gt;Hello federation,&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;TLDR: New website is coming tomorrow, your RSS reader might be disoriented during the switch.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;That&#x27;s right, after several months of studying, designing and implementing: we&#x27;re finally going to deploy the new matrix.org website on June 16! Let&#x27;s have a look back at the why and how.&lt;&#x2F;p&gt;
&lt;p&gt;I also need to thank Jonas Platte not only for his technical expertise but also for his kind support and patience. Thanks to MTRNord as well for kickstarting the project, and to the various designers involved.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;new-morg.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;growing-is-exciting&quot;&gt;Growing is exciting&lt;&#x2F;h2&gt;
&lt;p&gt;The website you have been used to for a few years grew organically with Matrix. The protocol was maturing, the community was getting wider, Matrix was getting more traction in various places, the commercial activity around Matrix allowed companies to hire people to work on the protocol and implementations around it, and as a lot of content was produced.&lt;&#x2F;p&gt;
&lt;p&gt;This growth was an exciting period and we couldn&#x27;t resist the call to publish documentation, add projects to the website… if not new sections entirely!&lt;&#x2F;p&gt;
&lt;p&gt;This enthusiasm had two major drawbacks:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lack of structure.&lt;&#x2F;strong&gt; The website tried to yell everything to everyone at once. You didn&#x27;t know what Matrix was? It yelled open communication decentralised end-to-end encrypted VoIP bridging VR and more at you!&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Lack of maintenance.&lt;&#x2F;strong&gt; Adding content is exciting and satisfying, but maintaining and updating said content in the long run is a tedious task that requires a lot more work. Outdated content gives active projects a bad look, and Matrix is no exception.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Over the time, the website has become difficult to navigate even for seasoned users, and some of the content didn&#x27;t match the state of affairs in Matrix.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;website-existential-crisis&quot;&gt;Website existential crisis&lt;&#x2F;h2&gt;
&lt;p&gt;The matrix.org website needed more than a facelift: a coat of paint can&#x27;t fix a message that doesn&#x27;t get across. The first question to answer was: who are we talking to? The question might sound trivial but trying to answer it as a project can lead you into an existential crisis.&lt;&#x2F;p&gt;
&lt;p&gt;Matrix is a protocol, and not a product. Matrix is the fertile ground you can use to grow completely different applications for radically different audiences. You can make an instant messaging application. You can make a VoIP conferencing system. You can use it to bridge several platforms together even if no user interacts with Matrix directly.&lt;&#x2F;p&gt;
&lt;p&gt;We narrowed down the audience to three categories, each with their different interests and needs:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The general public&lt;&#x2F;strong&gt; who wants to use &lt;strong&gt;products&lt;&#x2F;strong&gt; for instant messaging with their friends and family. They are not necessarily tech-savvy and want something that &lt;em&gt;just works™&lt;&#x2F;em&gt;. They don&#x27;t particularly care about Matrix, and could be using other popular instant messaging apps.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Community managers&lt;&#x2F;strong&gt; who want to find a platform their community can organise on. They might be a little more tech-savvy than the general public and are willing to spend more time understanding how to use products, but they are not necessarily able to self-host, deploy or build software by themselves.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Developers&lt;&#x2F;strong&gt; who obviously are tech-literate. They are interested in how things work from a technical perspective. They want to get an overview of the ecosystem and easily find the tools that will allow them to play with Matrix or build products on top of it. They can also be entrepreneurs who want to see the value of creating products on top of Matrix.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;These categories are ordered by complexity of the message we can convey to catch their attention: the general public wants to know what products can do for them at a glance, while the developers will be more interested in spending time understanding the technicalities of the protocol.&lt;&#x2F;p&gt;
&lt;p&gt;Importantly: the website needs to be accessible. Eventually we want it to be WCAG 2.1 compliant. If you find something that is not accessible, please report it &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix.org&#x2F;issues&quot;&gt;in our issue tracker&lt;&#x2F;a&gt; and we&#x27;ll get to it!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;less-is-more&quot;&gt;Less is more&lt;&#x2F;h2&gt;
&lt;p&gt;The most obvious issue we had was that the website tried to showcase the richness of the Matrix ecosystem to the user right as they arrived. Matrix is not a consumer ready product in itself, but its most popular use case is instant messaging. This is also a very tangible use case with actual products the general public can use.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;The new website is making a lot of room for the communications use case and in particular for instant messaging&lt;&#x2F;strong&gt;, but we are open to reshuffle or add sections if the need arises. The landing page and &amp;quot;Try Matrix&amp;quot; one have been reworked to onboard people more easily.&lt;&#x2F;p&gt;
&lt;p&gt;The projects sections also now allow you to filter projects by maturity and features supported (or e.g. programming language, when the pages are meant for developers), and a few clients are in the featured section to make choosing one easier.&lt;&#x2F;p&gt;
&lt;p&gt;Finally our stance on documentation has changed: &lt;strong&gt;each project is responsible for its own documentation, and duplicating project-specific documentation on the website can cause more harm than good.&lt;&#x2F;strong&gt; The documentation on matrix.org should be as generic and as product-independent &lt;em&gt;as reasonable&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;As a developer advocate, it is in my direct interest to make sure the Foundation remains as neutral as possible and to make room for everyone in our community of individuals and vendors working on Matrix. This was a difficult decision to make, but I (Thib) decided to use the Element client to illustrate the end-user and community manager documentation to flesh them out and show concrete &lt;em&gt;first steps&lt;&#x2F;em&gt; taken in a Matrix journey, regularly reminding readers that they can use another client whenever they want.&lt;&#x2F;p&gt;
&lt;p&gt;If you feel strongly about it and have ideas about how to make the docs more vendor-neutral, please head out to our &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix.org&#x2F;issues&quot;&gt;issues tracker&lt;&#x2F;a&gt; and let us know about it!&lt;&#x2F;p&gt;
&lt;p&gt;Finally, &lt;strong&gt;we made sure that the website can be browsed without javascript enabled&lt;&#x2F;strong&gt;. I&#x27;m not just talking about trackers which we would not even think about introducing, but about the little vanilla javascript we used here and there to improve the experience (e.g. filters to pick the best suited client for you).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;future-plans&quot;&gt;Future plans&lt;&#x2F;h2&gt;
&lt;p&gt;The most important step ahead is to create &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix.org&#x2F;issues&#x2F;1570&quot;&gt;a public instance picker&lt;&#x2F;a&gt;. The two major benefits expected are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Easier onboarding for most Matrix clients who can reuse the data&lt;&#x2F;li&gt;
&lt;li&gt;More decentralisation by reducing the need to default on matrix.org&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Another significant improvement to the website would be the creation of an engine that pulls data directly from the git repositories of the various projects to keep track of information such as the release date. Nothing is set in stone regarding how to make it work, and the community will be consulted to make the tool painless to use for all.&lt;&#x2F;p&gt;
&lt;p&gt;There is also still a lot of work to do in terms of processes. You might see on the website that the various projects have a maturity assigned to them, or that some projects are featured. Both of those are useful to get a sense of what project is relevant to you, but for now they are &amp;quot;Thib&#x27;s picks&amp;quot;. More formal processes would benefit the Matrix community as a whole. If you want to get involved in the conversation, please share your thoughts in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix.org&#x2F;issues&#x2F;1584&quot;&gt;this issue&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Introducing Third Room TP2: The Creator Update</title>
    <published>2023-06-07T15:15:43+00:00</published>
    <updated>2023-06-07T15:15:43+00:00</updated>
    <author>
      <name>
            Matthew Hodgson
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/06/07/introducing-third-room-tp-2-the-creator-update/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/06/07/introducing-third-room-tp-2-the-creator-update/</id>
    <content type="html">&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;Back in September 2022 we launched the very &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;09&#x2F;27&#x2F;announcing-third-room-tech-preview-1&quot;&gt;first public technology preview&lt;&#x2F;a&gt; of &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&quot;&gt;Third Room&lt;&#x2F;a&gt; - our entirely open source, open standards-based platform for creating decentralised multiparty spatial apps and virtual worlds on top of Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;The mission of Third Room is to ensure that a truly open and equitable platform exists for powering shared 3D environments - providing an alternative to the closed walled gardens of the bigger vendors, and generally safeguard against a repeat of the fragmented dystopia that has plagued instant messaging and VoIP systems.  In short, just as Matrix aims to be the missing secure communication layer of the open Web, Third Room aims to be the spatial collaboration layer.&lt;&#x2F;p&gt;
&lt;p&gt;Today, we’re incredibly excited to announce &lt;strong&gt;Third Room Technology Preview 2: The Creator Update&lt;&#x2F;strong&gt;.  As more and more 3D hardware enters the market, the race is on to provide tools to developers and creators so they can build on an open, vendor-agnostic platform - and in this update we’ve focused on building out the &lt;strong&gt;scripting&lt;&#x2F;strong&gt;, &lt;strong&gt;editing&lt;&#x2F;strong&gt; and &lt;strong&gt;authoring&lt;&#x2F;strong&gt; capabilities of Third Room to provide a solid platform for building and running collaborative 3D apps of any kind. Check out the new release at &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&quot;&gt;https:&#x2F;&#x2F;thirdroom.io&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
As a reminder: the Third Room team is a tiny band formed by Robert, Nate and Ajay and operates outside of all the rest of our work on Matrix: the other 97% of our effort goes into making the core of Matrix amazing (particularly the underpinnings for Element X and the next generation of Matrix clients). However, Matrix is about more than just chat and VoIP, and Third Room provides an excellent showcase of Matrix’s abilities as a general purpose communication fabric.
&lt;&#x2F;blockquote&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h3 id=&quot;introducing-web-scene-graph&quot;&gt;Introducing Web Scene Graph&lt;&#x2F;h3&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;&quot;&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2023-06-07-websg.jpg&quot; width=&quot;480&quot; alt=&quot;WebSG&quot;&#x2F;&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;At the heart of Third Room TP2 is &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;&quot;&gt;Web Scene Graph (WebSG)&lt;&#x2F;a&gt; - our new API to let developers create their own spatial multiparty apps and experiences in Third Room. WebSG does to glTF what JavaScript and the DOM did to HTML - it makes it come alive. With WebSG, we’re building the first implementation of an open standard for interoperable programming of virtual worlds, with the hope of submitting it to the W3C as a general purpose building block of the Web.&lt;&#x2F;p&gt;
&lt;p&gt;All content in Third Room is described using the &lt;a href=&quot;https:&#x2F;&#x2F;www.khronos.org&#x2F;gltf&#x2F;&quot;&gt;glTF 2.0&lt;&#x2F;a&gt; open standard, and so to let developers write their own functionality within Third Room we needed to provide an API that lets you dive into the glTF and manipulate it - much as the DOM API lets web developers edit the HTML DOM.  For whatever reason, an open standard API doesn’t exist for manipulating glTF… so we created Web Scene Graph (WebSG) to fill the void. Just like the DOM, it provides an incredibly powerful generic toolkit for manipulating 3D assets irrespective of the engine being used to render them.&lt;&#x2F;p&gt;
&lt;p&gt;WebSG isn’t just for manipulating scene graphs though - it also provides a whole in-world UI framework for creating 3D user interfaces in glTF; it provides an Action Bar API to let apps modify the controls available in Third Room’s overlay UI; you also get the Collision Listener API to get callbacks from the physics engine; ECS API to interact directly with the Entity Component System that tracks the world state; and Networking APIs to send and receive messages directly between clients via Matrix-negotiated WebRTC DataChannels.&lt;&#x2F;p&gt;
&lt;p&gt;As a quick taster - a WebSG app to pulse a light in your scene can be as simple as this:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;js&quot; style=&quot;background-color:#1e1e1e;color:#dcdcdc;&quot; class=&quot;language-js &quot;&gt;&lt;code class=&quot;language-js&quot; data-lang=&quot;js&quot;&gt;&lt;span&gt;world.onload = () &lt;&#x2F;span&gt;&lt;span style=&quot;color:#569cd6;&quot;&gt;=&amp;gt; &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#569cd6;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;directionalLight = world.findLightByName(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d69d85;&quot;&gt;&amp;quot;DirectionalLight&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;); 
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    world.onupdate = (dt, time) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#569cd6;&quot;&gt;=&amp;gt; &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;        directionalLight.color[&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b5cea8;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;] = (&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b5cea8;&quot;&gt;Math&lt;&#x2F;span&gt;&lt;span&gt;.sin(time) + &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b5cea8;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;) &#x2F; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b5cea8;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    };
&lt;&#x2F;span&gt;&lt;span&gt;};
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Third Room takes the JS and compiles it down to WASM using &lt;a href=&quot;https:&#x2F;&#x2F;bellard.org&#x2F;quickjs&#x2F;&quot;&gt;QuickJS&lt;&#x2F;a&gt;, and then executes it within a WASM sandbox - isolating it entirely from your other conversations and the rest of the Third Room. (In future, we’ll look to provide quota limits to ensure scripts don’t get greedy with resources).&lt;&#x2F;p&gt;
&lt;p&gt;We also support a low-level C API for WebSG, letting you compile your own native code down to WASM - in C the same script looks like this:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;c&quot; style=&quot;background-color:#1e1e1e;color:#dcdcdc;&quot; class=&quot;language-c &quot;&gt;&lt;code class=&quot;language-c&quot; data-lang=&quot;c&quot;&gt;&lt;span style=&quot;color:#9b9b9b;&quot;&gt;#include &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d69d85;&quot;&gt;&amp;lt;math.h&amp;gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#9b9b9b;&quot;&gt;#include &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d69d85;&quot;&gt;&amp;quot;websg.h&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Light &lt;&#x2F;span&gt;&lt;span style=&quot;color:#569cd6;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;directionalLight;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;export &lt;&#x2F;span&gt;&lt;span style=&quot;color:#569cd6;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span&gt;websg_load() {
&lt;&#x2F;span&gt;&lt;span&gt;    directionalLight =
&lt;&#x2F;span&gt;&lt;span&gt;        websg_world_find_light_by_name(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d69d85;&quot;&gt;&amp;quot;DirectionalLight&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;export &lt;&#x2F;span&gt;&lt;span style=&quot;color:#569cd6;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span&gt;websg_update(float_t dt, float_t time) {
&lt;&#x2F;span&gt;&lt;span&gt;    websg_light_set_color_element(
&lt;&#x2F;span&gt;&lt;span&gt;        directionalLight, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b5cea8;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;, (sin(time) + &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b5cea8;&quot;&gt;1.0&lt;&#x2F;span&gt;&lt;span&gt;) &#x2F; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b5cea8;&quot;&gt;2.0
&lt;&#x2F;span&gt;&lt;span&gt;    );
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;But don’t worry - we’re not expecting folks to be writing C as a matter of course; the reason to provide the low-level C API is so that in future we can easily provide Rust and Zig (or more!) bindings so folks can use their favourite native language to compile optimised WASM rather than using interpreted JavaScript.  That said, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;blob&#x2F;main&#x2F;examples&#x2F;procgen&#x2F;c&#x2F;src&#x2F;procgen.c&quot;&gt;procgen&lt;&#x2F;a&gt; is a fun C example of a procedurally generated Perlin noise blob which pulsates in response to local audio, as an idea of what you can do today if you’re willing to write some C!  There’s also a &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;blob&#x2F;main&#x2F;examples&#x2F;procgen&#x2F;js&quot;&gt;JS version&lt;&#x2F;a&gt; of it too.&lt;&#x2F;p&gt;
&lt;p&gt;We’ve also bundled basic Matrix widget API support alongside WebSG, so WASM scripts in Third Room can send and receive Matrix events in the underlying chatroom (as well as directly sending messages between clients over WebRTC datachannels).  For instance, one of the commercial WebSG apps which Element has written on top of Third Room is a real-time air traffic simulator, which consumes location-share beacons from the underlying Matrix room (bridged from ADS-B data sources) and procedurally renders them in 3D or AR over a map of the region in question:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2023-06-07-sfo.jpg&quot; alt=&quot;SFO&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We’ve also added a native orbit viewer into Third Room, so from WebSG you can simply call &lt;code&gt;node.startOrbit()&lt;&#x2F;code&gt; on any node to temporarily switch into focusing on a given object (WASD to move; mousewheel to zoom; escape to exit).&lt;&#x2F;p&gt;
&lt;p&gt;Finally, to really show off WebSG at its best, we’ve gone and written a simple game of basketball in precisely &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;blob&#x2F;main&#x2F;examples&#x2F;basketball&#x2F;js&#x2F;basketball.js&quot;&gt;100 lines of code&lt;&#x2F;a&gt;, and published a step-by-step tutorial (&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;basketball&#x2F;part-1.html&quot;&gt;Part 1&lt;&#x2F;a&gt; covering Interactables, &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;basketball&#x2F;part-2.html&quot;&gt;Part 2&lt;&#x2F;a&gt; covering Collisions and &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;basketball&#x2F;part-3.html&quot;&gt;Part 3&lt;&#x2F;a&gt; covering Networking) so you can follow along at home.&lt;&#x2F;p&gt;
&lt;iframe width=&quot;1280&quot; height=&quot;720&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;VimOoGCPWWw&quot; title=&quot;Third Room Basketball Tutorial End Result&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;
&lt;br&#x2F;&gt;
&lt;p&gt;Or if you’re impatient you can jump ahead and play with the game &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;world&#x2F;#basketball-court:thirdroom.io&quot;&gt;here&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;WebSG has gone through quite a few major iterations since announcing it at &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=nG8qJ4on00Y&quot;&gt;FOSDEM&lt;&#x2F;a&gt;, but we’re feeling happy with the current result and have formalised this initial public release with formal API docs as well as the various tutorials.  That said, we’d love to hear feedback via &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#thirdroom-dev:matrix.org&quot;&gt;#thirdroom-dev:matrix.org&lt;&#x2F;a&gt; - so please let us know if you’re missing anything or if there are any rough edges we haven’t spotted!&lt;&#x2F;p&gt;
&lt;p&gt;For more details on WebSG, see:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;&quot;&gt;API overview&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;the &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;basketball&#x2F;part-1.html&quot;&gt;Tutorial&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;the &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;websg-js&#x2F;&quot;&gt;API reference docs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;…or the all various &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;blob&#x2F;main&#x2F;examples&quot;&gt;examples&lt;&#x2F;a&gt; in the Third Room repository:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;basketball&#x2F;js&quot;&gt;basketball&#x2F;js&lt;&#x2F;a&gt; - the basketball game tutorial&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;ecs-basic&#x2F;js&quot;&gt;ecs-basic&#x2F;js&lt;&#x2F;a&gt; - an ECS example which spins a given object&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;interactable&quot;&gt;interactable&lt;&#x2F;a&gt; - an example for switching lights on and off&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;matrix&quot;&gt;matrix&lt;&#x2F;a&gt; - turns the whole world into triplanar Matrix textures via an easter egg&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;network&#x2F;c&quot;&gt;network&#x2F;c&lt;&#x2F;a&gt; - synchronise light state via raw network messages&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;physics&#x2F;js&quot;&gt;physics&#x2F;js&lt;&#x2F;a&gt; - create boxes and bump them around&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;platformer&#x2F;js&quot;&gt;platformer&#x2F;js&lt;&#x2F;a&gt; - the beginnings of a 3D platformer game (needs better character controller)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;presentation&#x2F;js&quot;&gt;presentation&#x2F;js&lt;&#x2F;a&gt; - script for previous&#x2F;next buttons for swapping slides in a presentation&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;procgen&quot;&gt;procgen&lt;&#x2F;a&gt; - renders an animated blob of Perlin noise whose geometry reacts to local audio&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;ui-basic&#x2F;js&quot;&gt;ui-basic&#x2F;js&lt;&#x2F;a&gt; - renders text for in-world UI via the &lt;a href=&quot;https:&#x2F;&#x2F;yogalayout.com&#x2F;&quot;&gt;Yoga&lt;&#x2F;a&gt; CSS flexbox engine&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;ui&#x2F;js&quot;&gt;ui&#x2F;js&lt;&#x2F;a&gt; - renders nested text using Yoga&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;websg-v1&quot;&gt;websg-v1&lt;&#x2F;a&gt; - moves and spins some platforms&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;widget-echo&#x2F;js&quot;&gt;widget-echo&#x2F;js&lt;&#x2F;a&gt; - echos any Matrix message that starts &lt;code&gt;&#x2F;echo&lt;&#x2F;code&gt; back into the room&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;thirdroom&#x2F;tree&#x2F;main&#x2F;examples&#x2F;widget-hello-world&#x2F;c&quot;&gt;widget-hello-world&#x2F;c&lt;&#x2F;a&gt; - sends “hello world” into the Matrix room.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;introducing-the-third-room-documentation-site&quot;&gt;Introducing the Third Room Documentation site&lt;&#x2F;h3&gt;
&lt;p&gt;Talking of docs, we’re proud to unveil a shiny new documentation website for Third Room at &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&quot;&gt;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&lt;&#x2F;a&gt;. This is the official resource for developers wishing to build on top of Third Room - currently covering:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;&quot;&gt;Getting Started&lt;&#x2F;a&gt; - a basic guide for users first coming to Third Room&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;creators.html&quot;&gt;The Creator Guide&lt;&#x2F;a&gt; - explaining how 3D artists and developers can rapidly get up and running by exporting existing assets into glTF for Third Room.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;unity&#x2F;&quot;&gt;The Unity Exporter Guide&lt;&#x2F;a&gt; - explaining how to use export existing Unity assets to glTF for use in Third Room&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;developers.html&quot;&gt;The Developer Guide&lt;&#x2F;a&gt; - an overview of developing applications using the Web Scene Graph API and self-hosting your own Third Room instance&lt;&#x2F;li&gt;
&lt;li&gt;Web Scene Graph (WebSG)
&lt;ul&gt;
&lt;li&gt;An &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;&quot;&gt;overview&lt;&#x2F;a&gt; of the WebSG API and its JS and C bindings&lt;&#x2F;li&gt;
&lt;li&gt;The official WebSG Tutorial - learn how to build a basketball game with WebSG!
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;basketball&#x2F;part-1.html&quot;&gt;Part 1: Interactables&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;basketball&#x2F;part-2.html&quot;&gt;Part 2: Collisions and UI&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;basketball&#x2F;part-3.html&quot;&gt;Part 3: Networking &lt;&#x2F;a&gt;(in progress)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;scenegraph.html&quot;&gt;A guide to the Scene Graph itself&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;meshes.html&quot;&gt;A guide to manipulating meshes&lt;&#x2F;a&gt; with WebSG&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;materials.html&quot;&gt;A guide to materials&lt;&#x2F;a&gt; with WebSG&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;lighting.html&quot;&gt;A guide to lighting&lt;&#x2F;a&gt; with WebSG&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;physics.html&quot;&gt;A guide to physics&lt;&#x2F;a&gt; with WebSG&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;ecs.html&quot;&gt;A guide to the ECS API&lt;&#x2F;a&gt; with WebSG&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;actionbar.html&quot;&gt;A guide to the Action Bar API&lt;&#x2F;a&gt; with WebSG&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;ui.html&quot;&gt;A guide to the in-world UI API&lt;&#x2F;a&gt; with WebSG&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;interactables.html&quot;&gt;A guide to interactables&lt;&#x2F;a&gt; with WebSG&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;guides&#x2F;websg&#x2F;networking.html&quot;&gt;A guide to low-latency networking&lt;&#x2F;a&gt; over MatrixRTC via WebSG&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Reference documentation:
&lt;ul&gt;
&lt;li&gt;The official &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;websg-js&#x2F;&quot;&gt;WebSG API&lt;&#x2F;a&gt; reference documentation&lt;&#x2F;li&gt;
&lt;li&gt;The official reference for the various &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;docs&#x2F;gltf&#x2F;&quot;&gt;glTF Extensions&lt;&#x2F;a&gt; used by Third Room (in progress).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2023-06-07-docs.png&quot; alt=&quot;Docs&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;introducing-the-in-world-editor&quot;&gt;Introducing the In-World Editor&lt;&#x2F;h3&gt;
&lt;p&gt;Aside from all the WebSG API excitement, another key area in this release is the ability to visualise and manipulate the glTF scene graph in real-time via the in-world editor.  At any time while using Third Room, you can now hit the backtick key ``` and bring up an overlay showing the current scene graph of the world - and go clicking through the nodes to inspect their current state, and experiment with editing them a bit.  Currently this requires you to be an admin in the room.  For instance, you can go in and mess around with the scene’s materials via the Resources tab of the scene graph panel and the Inspector panel on the right hand side:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2023-06-07-editor-1.png&quot; alt=&quot;Editor 1&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;…or you could go and move the geometry outright:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2023-06-07-editor-2.png&quot; alt=&quot;Editor 2&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;…or even bring up a &lt;a href=&quot;https:&#x2F;&#x2F;microsoft.github.io&#x2F;monaco-editor&#x2F;&quot;&gt;Monaco&lt;&#x2F;a&gt; editor to directly edit the script controlling the world (if it’s JavaScript):&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2023-06-07-editor-3.png&quot; alt=&quot;Editor 3&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;…and hit Save &amp;amp; Run and see your changes instantly take effect:&lt;&#x2F;p&gt;
&lt;iframe width=&quot;1280&quot; height=&quot;751&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;TWC6MpUh6KY&quot; title=&quot;Third Room WebSG demo&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;
&lt;br&#x2F;&gt;
&lt;p&gt;If it wasn’t obvious, this is Third Room’s equivalent of your browser’s developer tools: letting you jump straight into the scene and see precisely what’s going on, and directly manipulate it in real-time.&lt;&#x2F;p&gt;
&lt;p&gt;Now, there’s a bit remaining on this: the inspector needs to expose more UI for manipulating the scene (e.g. gizmos for picking objects in-world and translating&#x2F;rotating them, etc); we need better error feedback in the inspector (or even a debugger); we can’t yet create&#x2F;copy&#x2F;delete nodes in the scenegraph, etc.  However, it’s already super-useful for seeing what’s going on and helping debug your WebSG scripts.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;networking&quot;&gt;Networking&lt;&#x2F;h3&gt;
&lt;p&gt;Another area which has seen a lot of work in this update is Third Room’s networking - i.e. how you synchronise world state between clients as efficiently and rapidly as possible, and (critically) how you make that work deterministically now that we have WebSG.&lt;&#x2F;p&gt;
&lt;p&gt;At the lower levels, all the networking in Third Room operates over WebRTC data channels negotiated via Matrix (aka MatrixRTC), which establish a full mesh between all the peers active in the room. (In future this will be scaled up using &lt;a href=&quot;https:&#x2F;&#x2F;fosdem.org&#x2F;2023&#x2F;schedule&#x2F;event&#x2F;cascaded_selective_forwarding_units&#x2F;&quot;&gt;Selective Forwarding Units&lt;&#x2F;a&gt;, but this work is still in progress).&lt;&#x2F;p&gt;
&lt;p&gt;However, at the higher levels, things are in flux. In the first Tech Preview of Third Room, we synchronised worlds using so-called peer-to-peer networking. In practice, this means that every client runs its own physics simulation of the world, and each client owns the objects which it creates - and each client sends updates about the state of its objects (position, rotation, etc) to the other members in the room, which overrides with the local view of their objects, with some smoothing, thus keeping everyone roughly in sync.  This worked well for early Third Room before we sprouted WebSG, but it has the problem that there is no single point of control when executing scripts - the world is not deterministic, and if every client executes the world’s script in parallel, they’d race badly as soon the script needs to handle users interacting with one another.&lt;&#x2F;p&gt;
&lt;p&gt;So, we’ve written a new networking engine called Authoritative Networking - which picks a given client in the room to be the authoritative simulation for the room, and executes any WebSG scripts on that client in order to get consistent results across all participants in the room.  The authoritative client is picked based on the user with the highest power level - you can think of it almost as being a bot (hosted inside someone’s browser) which executes the simulation and scripts for that world.  If that user goes offline, then the baton would be picked up by another user in the scene.  (Obviously, in an ideal world we’d have a way to execute the scripts and simulations in a byzantine-fault tolerant manner, in parallel, with minimal latency, and without any centralisation… but we’re focusing on walking before we can run :)&lt;&#x2F;p&gt;
&lt;p&gt;The current Authoritative Networking engine has some problems: we decided to synchronise simulator inputs from the scene participants to the authoritative client, rather than synchronising the physics properties of their owned objects - and this has proved difficult to script and author content around.  Therefore we’re experimenting with an alternative implementation inspired by Godot’s networking, where we synchronise object properties rather than inputs instead.&lt;&#x2F;p&gt;
&lt;p&gt;This means that right now networking is still somewhat up in the air: WebSG can execute on both the original p2p networking engine (but will be racy if user interactions collide), or the new authoritative engine (but interpolation is jumpy).  This doesn’t stop you from experimenting with networking in WebSG however - and local behaviour isn’t affected at all.  You can turn on Authoritative Networking in user settings under View Profile if you want to try.&lt;&#x2F;p&gt;
&lt;p&gt;We’re working away on sorting this out one way or another - if it was working perfectly it wouldn’t be a Tech Preview, after all ;)&lt;&#x2F;p&gt;
&lt;h3 id=&quot;introducing-the-discover-page&quot;&gt;Introducing the Discover page&lt;&#x2F;h3&gt;
&lt;p&gt;In keeping with the focus on creators in this release, we’ve also added a new Discover view to Third Room, making it easier to find existing scenes and worlds.  A directory of curated content is published in a repository room (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ajbura&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;respository-room&#x2F;proposals&#x2F;3948-repository-room.md&quot;&gt;MSC3948&lt;&#x2F;a&gt;) - by default #repository-room:thirdroom.io, and then hitting the compass icon in the side menu will let you create your own worlds based on existing scenes, or indeed discover and jump into existing worlds:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2023-06-07-discover.png&quot; alt=&quot;Discover&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile the Creator tab makes it even easier to get up and running creating new worlds. The Discover view now becomes the default view for new users, to help them onboard when they enter the app for the first time.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;webxr-support&quot;&gt;WebXR support&lt;&#x2F;h3&gt;
&lt;p&gt;Finally, just one more thing… Ready for your fancy new VR&#x2F;AR headset, we’re happy to announce that this update of Third Room includes WebXR support - and while it’s pretty basic (no UI overlays in XR) it actually works incredibly well, at excellent frame rates even on complex scenes.  To use it, load Third Room in the browser in your headset; enable WebXR in your profile settings, and then click the WebXR button in the bottom right group of buttons to be teleported into XR mode.&lt;&#x2F;p&gt;
&lt;p&gt;Here’s me &amp;amp; Amandine playing with it using two Quest Pros - on the left you can see my view of her in XR taken as a screenshot from my Quest Pro, showing her interacting with the air traffic simulator (with her headset, controllers and lasers superimposed as well as the map &amp;amp; plane data).  On the right you can see the same scene in plain old 3D Third Room, showing disembodied headset&#x2F;controllers (and my controller laser pointers) given we don’t have custom avatars yet.&lt;&#x2F;p&gt;
&lt;p&gt;WebXR &lt;em&gt;should&lt;&#x2F;em&gt; work out of the box on any good VR&#x2F;AR headset, without having to install any additional software or being locked into any vendor’s app store. We even expect it to work with Apple’s Vision Pro headset, based on the &lt;a href=&quot;https:&#x2F;&#x2F;webkit.org&#x2F;blog&#x2F;14205&#x2F;news-from-wwdc23-webkit-features-in-safari-17-beta&#x2F;&quot;&gt;Safari 17 release notes&lt;&#x2F;a&gt;. This is the whole promise of the open Web, and we hope Third Room will provide an amazing open environment to create XR apps and experiences in future.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2023-06-07-webxr.jpg&quot; alt=&quot;WebXR&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;what-remains&quot;&gt;What remains?&lt;&#x2F;h3&gt;
&lt;p&gt;While we’ve made extraordinary progress since the last release, there’s still a bunch of things remaining which is keeping Third Room as a Technology Preview.  Most important first:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Networking
&lt;ul&gt;
&lt;li&gt;As per the Networking section above, we need to rework Authoritative Networking so we have the final networking model in place, such that WebSG scripts execute deterministically in a single place with smooth but accurate interpolation on the participating clients. We also need to iterate a bit more on the final networking API so that anyone can build multi-user apps with ease.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Persistence
&lt;ul&gt;
&lt;li&gt;While we can now edit and script scenes, the edits are only stored in the RAM of the connected clients: when all the clients from a world disconnect, the state is lost and the world resets back to its original state. Instead, we need to store the glTF changes back to the Matrix content repository on a regular basis.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Firefox performance
&lt;ul&gt;
&lt;li&gt;We’ve seen a nasty regression in the last month or two on Firefox, where SpiderMonkey (Firefox’s JavaScript engine) starts frantically garbage-collecting, despite us allocating an extremely tiny amount of memory, killing your framerate. We haven’t figured out yet whether this is our fault or Firefox’s (if someone wants to bisect old Firefox releases over the last few months we’d be very grateful!), but for now FF performance is dire in TP2.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Custom Avatars
&lt;ul&gt;
&lt;li&gt;Whilst there’s been some work on this in the community, it’s not landed yet.  There’s nothing especially hard here though (other than IK) - it’s just a matter of bandwidth.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Shadows
&lt;ul&gt;
&lt;li&gt;We have some cascaded shadow map experiments already, but we need to get it stable and on by default for scenes which would benefit (e.g. the basketball tutorial!)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Mobile web
&lt;ul&gt;
&lt;li&gt;Similarly, support for mobile web would be really nice for those dipping their toe in the water - and given the performance we’re seeing on Android-based XR headsets like the Quest, the performance on mobile web should be sensational.  Again, it’s just a matter of time to sort it out.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Fully-fledged editor
&lt;ul&gt;
&lt;li&gt;The current editor is effectively just an inspector; it’s great for visualising the glTF scene, but you can’t really go and start changing the fabric of reality yet. An editor isn’t an editor without some fancy 3D gizmos to help you grab and manipulate the world - so for all our in-world direct manipulation Inception dreams to come true, the devtools need a bit more work.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Content!
&lt;ul&gt;
&lt;li&gt;Finally, last but not least, we need to start populating these worlds with some fun, beautiful, amazing apps and games.  The whole point of this release is to give creators the tools they need to start properly playing around, building on top of Third Room, and we really hope you’ll give it a go and get involved (not least as our bandwidth to do so within the core team is sorely limited).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Hopefully the next release will be both the final tech preview and the first beta of the complete Third Room experience - but to get there, we need your feedback: please head over to &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#thirdroom-dev:matrix.org&quot;&gt;#thirdroom-dev:matrix.org&lt;&#x2F;a&gt; and tell us what you think!&lt;&#x2F;p&gt;
&lt;h3 id=&quot;funding-third-room&quot;&gt;Funding Third Room&lt;&#x2F;h3&gt;
&lt;p&gt;If you’ve read this far, you must surely be pretty interested in Third Room, and hopefully agree that having an open platform for building spatial apps and virtual worlds is absolutely critical for the health and future of the Internet - especially as the VR&#x2F;AR&#x2F;3D space slowly but surely gathers momentum as new players and hardware materialise.&lt;&#x2F;p&gt;
&lt;p&gt;However, funding the team to work full-time on Third Room is increasingly challenging - the macroeconomic environment does not lend itself to moonshot R&amp;amp;D projects, and Matrix as a whole continues to suffer from &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2022&quot;&gt;insufficient financial support&lt;&#x2F;a&gt; (quite aside from Third Room).  This is particularly frustrating given the massive range of obvious commercial applications for Third Room - whether that’s for building digital twins, situational awareness, telepresence, gaming, providing an open platform to glue together real-time 3D data from other existing data feeds, etc.&lt;&#x2F;p&gt;
&lt;p&gt;To try to spell out the opportunities and why it clearly makes sense for commercial players to invest in supporting Third Room development, we recently put together a quick enterprise demo reel (which also serves to demo everything mentioned above, albeit in a more businessy manner than normal). &lt;strong&gt;If this resonates and your organisation is interested in funding Third Room - please contact &lt;a href=&quot;mailto:funding@matrix.org&quot;&gt;funding@matrix.org&lt;&#x2F;a&gt; asap.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;iframe width=&quot;1280&quot; height=&quot;720&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;cFKJ-IuGaKA&quot; title=&quot;Third Room Enterprise Demo&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;
&lt;br&#x2F;&gt;
&lt;p&gt;Otherwise, we hope you enjoy the new update - and please let us know how you get on with it!&lt;&#x2F;p&gt;
&lt;p&gt;Matthew, Robert, Nate &amp;amp; Ajay&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>The DMA Stakeholder Workshop: Interoperability between messaging services</title>
    <published>2023-03-15T00:00:00+00:00</published>
    <updated>2023-03-15T00:00:00+00:00</updated>
    <author>
      <name>
            Matthew Hodgson
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/03/15/the-dma-stakeholder-workshop-interoperability-between-messaging-services/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/03/15/the-dma-stakeholder-workshop-interoperability-between-messaging-services/</id>
    <content type="html">&lt;p&gt;A few weeks ago we found ourselves in Brussels to participate in the second &lt;a href=&quot;https:&#x2F;&#x2F;competition-policy.ec.europa.eu&#x2F;dma&#x2F;dma-workshops_en&quot;&gt;stakeholder workshop for the Digital Markets Act (DMA)&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;a href=&quot;https:&#x2F;&#x2F;commission.europa.eu&#x2F;strategy-and-policy&#x2F;priorities-2019-2024&#x2F;europe-fit-digital-age&#x2F;digital-markets-act-ensuring-fair-and-open-digital-markets_en&quot;&gt;DMA&lt;&#x2F;a&gt; is new antitrust&#x2F;competition regulation from Europe which came into force in November, whose objective is to make digital markets more competitive by forcing gatekeepers (i.e. large tech companies) to reconsider some of their anti-competitive or self-preferencing practices. Gatekeepers are defined as companies which have a clear position of influence in a given market (based on revenue &#x2F; market cap &#x2F; number of users thresholds), and “an entrenched and durable position”. The process for designating which companies count as gatekeepers will start in May 2023.&lt;&#x2F;p&gt;
&lt;p&gt;The DMA touches upon different key topics, from self-preferencing behaviour to app store management practices - but most importantly includes interoperability for “number-independent interpersonal communication services” (NIICS), otherwise known as chat and voice&#x2F;video calling and conferencing services (social media was left out for now). &lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;competition-policy.ec.europa.eu&#x2F;dma&#x2F;dma-workshops&#x2F;interoperability-workshop_en&quot;&gt;This particular workshop&lt;&#x2F;a&gt; was focused on the latter: interoperability between messaging services, with the aim of getting the different stakeholders of the industry in the same place to discuss how the legislation could be implemented.  The whole idea is to figure out a practical way in which WhatsApp could interoperate with iMessage, Google Messages and others, creating an interoperable communication network where users are no longer locked into communication silos and pick their preferred service provider without compromising on who they can talk to. &lt;&#x2F;p&gt;
&lt;p&gt;About 900 people participated online, and around 80 people were present in person: the maximum the room could hold. It was particularly fun to see representatives from the whole industry turning up in person, including folks from XMPP, MIMI (the new IETF working group on messaging interoperability), MLS, us from Matrix obviously (alongside Matrix ecosystem representatives from Beeper and NeoChat!) - all together with the Body of European Regulators for Electronic Communications (&lt;a href=&quot;https:&#x2F;&#x2F;www.berec.europa.eu&#x2F;en&#x2F;berec&#x2F;what-is-berec&quot;&gt;BEREC&lt;&#x2F;a&gt;), civil society representatives (like the Federation of German Consumer Organisations (&lt;a href=&quot;https:&#x2F;&#x2F;VZBV.de&quot;&gt;VZBV&lt;&#x2F;a&gt;) and European Digital Rights (&lt;a href=&quot;https:&#x2F;&#x2F;edri.org&quot;&gt;EDRi&lt;&#x2F;a&gt;)), mobile network operators, local network agencies, and obviously some of those who are likely to be designated as gatekeepers, such as Meta, Apple and Google.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;so-what-was-discussed&quot;&gt;So what was discussed?&lt;&#x2F;h2&gt;
&lt;p&gt;All of the workshop proceeds were livestreamed and archived by European Commission’s &lt;a href=&quot;https:&#x2F;&#x2F;webcast.ec.europa.eu&#x2F;dma-workshop-2023-02-27&quot;&gt;webcasting service&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;commission.europa.eu&#x2F;legal-notice_en#copyright-notice&quot;&gt;released&lt;&#x2F;a&gt; under the terms of the Creative Commons Attribution 4.0 International (CC BY 4.0) licence, so we’ve taken the liberty of republishing them split up into chapters so that folks can quickly refer to the discussion.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;panel-1-introduction-to-horizontal-interoperability-between-messaging-services-goals-challenges-and-potential-solutions&quot;&gt;Panel 1: Introduction to horizontal interoperability between messaging services: goals, challenges and potential solutions&lt;&#x2F;h3&gt;
&lt;p&gt;The first panel focused on setting up the scene and highlighting the challenges expected during the implementation phase, featuring &lt;a href=&quot;https:&#x2F;&#x2F;www.soi.unitn.it&#x2F;staff&#x2F;simonetta-vezzoso&#x2F;&quot;&gt;Simonetta Vezzoso&lt;&#x2F;a&gt; (Professor of Economics at The University of Trento), &lt;a href=&quot;https:&#x2F;&#x2F;www.linkedin.com&#x2F;in&#x2F;chiaracaccinelli&quot;&gt;Chiara Caccinelli&lt;&#x2F;a&gt; (Co-chair - Digital Markets WG at &lt;a href=&quot;https:&#x2F;&#x2F;www.berec.europa.eu&#x2F;&quot;&gt;BEREC&lt;&#x2F;a&gt;), &lt;a href=&quot;https:&#x2F;&#x2F;www.vzbv.de&#x2F;en&#x2F;policy-work&#x2F;experts&quot;&gt;Suzanne Blohm&lt;&#x2F;a&gt; (Policy officer at &lt;a href=&quot;https:&#x2F;&#x2F;www.vzbv.de&#x2F;&quot;&gt;Verbraucherzentrale Bundesverbands (VZBV)&lt;&#x2F;a&gt;) and &lt;a href=&quot;https:&#x2F;&#x2F;www.linkedin.com&#x2F;in&#x2F;jan-penfrat&quot;&gt;Jan Penfrat&lt;&#x2F;a&gt; (Senior Policy Advisor at &lt;a href=&quot;https:&#x2F;&#x2F;edri.org&#x2F;&quot;&gt;EDRi&lt;&#x2F;a&gt;). There was a lot of emphasis around the risks of gatekeepers dragging their feet, or choosing the solution which makes it harder for SMEs or self-hosters to interoperate, as well as the challenge of introducing the new paradigm of interoperability for messaging without losing the usability aspect - see below for the full scope:&lt;&#x2F;p&gt;
&lt;noscript&gt;Today&#x27;s Matrix Live: &lt;a href=&quot;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=yoKjXN3G8a8&quot;&gt;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=yoKjXN3G8a8&lt;&#x2F;a&gt;&lt;&#x2F;noscript&gt;
&lt;youtube-player video-id=&quot;yoKjXN3G8a8&quot;&gt;&lt;&#x2F;youtube-player&gt;
&lt;br&#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=0s&quot;&gt;00:00&lt;&#x2F;a&gt; Welcome to the second DMA stakeholder workshop about interoperability between messaging services&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=483s&quot;&gt;08:03&lt;&#x2F;a&gt; Introduction of the panelists&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=566s&quot;&gt;09:26&lt;&#x2F;a&gt; What is the Article 7 of the Digital Markets Act (Simonetta Vezzoso)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=1595s&quot;&gt;26:35&lt;&#x2F;a&gt; Interoperability already exists in the EU, what can we learn from it (Chiara Caccinelli)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=2443s&quot;&gt;40:43&lt;&#x2F;a&gt; End user perspective and behaviour, benefits of the DMA Article 7, Challenges (Suzanne Blohm)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=2970s&quot;&gt;49:30&lt;&#x2F;a&gt; Benefits for end users, and an existing technical stack to build from (Jan Penfrat)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=3561s&quot;&gt;59:21&lt;&#x2F;a&gt; What the UI could look like (Jan Penfrat)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=3787s&quot;&gt;01:03:07&lt;&#x2F;a&gt; Question - Do users need an account on each network, or is it a true federation? (XMPP Foundation)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=3919s&quot;&gt;01:05:19&lt;&#x2F;a&gt; Question - What rule do you see for Telcos and for messaging services they provide?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=4207s&quot;&gt;01:10:07&lt;&#x2F;a&gt; Question - Does the term &amp;quot;user&amp;quot; include people running their own server&#x2F;service? (Open Source Initiative)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=4490s&quot;&gt;01:14:50&lt;&#x2F;a&gt; Question - How to check the gatekeeper is not giving a suboptimal solution? (online question)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=4684s&quot;&gt;01:18:04&lt;&#x2F;a&gt; Question - Does user consent limit the power of Article 7? (Viber)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=4956s&quot;&gt;01:22:36&lt;&#x2F;a&gt; Question - Gatekeepers don&#x27;t have an incentive to make appealing UIs for interoperability and might try to scare users away. Will it be addressed? (NLNet)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=5048s&quot;&gt;01:24:08&lt;&#x2F;a&gt; Question - People usually dislike popups, how to strike the balance between warning and upsetting them? (online)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=5271s&quot;&gt;01:27:51&lt;&#x2F;a&gt; Question - Have you been thinking about reputation models?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=5393s&quot;&gt;01:29:53&lt;&#x2F;a&gt; Question - Different apps use different E2EE protocols to differentiate. Could article 7 kill that differentiation? (online)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=5928s&quot;&gt;01:38:48&lt;&#x2F;a&gt; Question - What will be the paradigm of non discrimination?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=5590s&quot;&gt;01:33:10&lt;&#x2F;a&gt; Question - What about interoperability of RCS and Apple iMessage? (Orange)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=5684s&quot;&gt;01:34:44&lt;&#x2F;a&gt; Question - Do you take into account that there are not only company-run services, but also Open Source components? (Process One)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=5755s&quot;&gt;01:35:55&lt;&#x2F;a&gt; Question - What are the implications for non European users? (Beeper)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=5965s&quot;&gt;01:39:25&lt;&#x2F;a&gt; Question - Does the DMA only mandate interoperability for European users, even on a same platform? (XMPP)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=6036s&quot;&gt;01:40:36&lt;&#x2F;a&gt; Question - Will the interoperability be opt-in or opt-out? (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=6110s&quot;&gt;01:41:50&lt;&#x2F;a&gt; Question - How avoid the standardisation to be taken over by commercial interests? (online)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=6223s&quot;&gt;01:43:43&lt;&#x2F;a&gt; Question - What will the timing look like for the DMA? (Cisco)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=6493s&quot;&gt;01:48:13&lt;&#x2F;a&gt; Question - What could be reasonable requirements for smaller services? (online)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=6540s&quot;&gt;01:49:00&lt;&#x2F;a&gt; Question - Where should gatekeeper gather to start discussion how interoperability will look like in practice? (OpenXchange)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=6671s&quot;&gt;01:51:11&lt;&#x2F;a&gt; Question - What about account portability, for users switching from one platform to another? (University of Rome)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=6893s&quot;&gt;01:54:53&lt;&#x2F;a&gt; Question - Is contact information part of the data gatekeepers need to share? (XMPP)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yoKjXN3G8a8&amp;amp;t=6972s&quot;&gt;01:56:12&lt;&#x2F;a&gt; Closing&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;panel-2-exploring-the-technical-aspects-of-interoperability-part-1-end-to-end-encryption-security-of-the-service&quot;&gt;Panel 2: Exploring the technical aspects of interoperability (Part 1): end-to-end encryption, security of the service&lt;&#x2F;h3&gt;
&lt;p&gt;Then, after a quick lunch, the second panel went into the nitty gritty of how end-to-end encrypted interoperable messaging (1:1 messaging is the first milestone to be delivered, hence the focus) could actually be implemented by the gatekeepers. The panel starred &lt;a href=&quot;https:&#x2F;&#x2F;www.roeslpa.de&#x2F;&quot;&gt;Paul Rösler&lt;&#x2F;a&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;fau.de&#x2F;&quot;&gt;FAU Erlangen-Nürnberg&lt;&#x2F;a&gt;, who gave a great overview of end-to-end encryption in general, &lt;a href=&quot;https:&#x2F;&#x2F;alissacooper.com&#x2F;&quot;&gt;Alissa Cooper&lt;&#x2F;a&gt; from Cisco who explained the merits of open interoperable protocols, &lt;a href=&quot;https:&#x2F;&#x2F;educatedguesswork.org&#x2F;about&#x2F;&quot;&gt;Eric Rescorla&lt;&#x2F;a&gt; from Mozilla explaining the merits of standardisation, yours truly from Matrix explaining and demonstrating how one can actually use a standardised open protocol to interoperate without sacrificing privacy (effectively fleshing out our &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;03&#x2F;29&#x2F;how-do-you-implement-interoperability-in-a-dma-world&quot;&gt;blog&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;03&#x2F;25&#x2F;interoperability-without-sacrificing-privacy-matrix-and-the-dma&quot;&gt;posts&lt;&#x2F;a&gt; from last year) and then finally &lt;a href=&quot;https:&#x2F;&#x2F;www.linkedin.com&#x2F;in&#x2F;stephen-hurley-24424231&quot;&gt;Stephen Hurley&lt;&#x2F;a&gt; from Meta to explain how they are thinking about DMA obligations.&lt;&#x2F;p&gt;
&lt;p&gt;The panel ended up being a relatively exciting tour through the landscape of DMA practicalities, and it was a lot of fun to actually &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3715s&quot;&gt;demonstrate a minimum viable prototype of client-side bridging&lt;&#x2F;a&gt; thanks to Travis’s work packaging up standalone client-side bridges for &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;dma-demo-app-bridge-whatsapp&quot;&gt;WhatsApp&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;dma-demo-app-bridge-googlechat&quot;&gt;Google Chat&lt;&#x2F;a&gt; (strictly for demonstration illustrative purposes only). The slides (and demo) were sadly a bit fuzzy on the recording, but you can see our slides below and grab everyone’s presentations from the &lt;a href=&quot;https:&#x2F;&#x2F;competition-policy.ec.europa.eu&#x2F;document&#x2F;download&#x2F;c59e04bc-f96c-49d9-b161-ad9c24d82367_en?filename=20230227_dma_stakeholders_workshop_panelists_material_0.zip&quot;&gt;European Commission website&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;iframe width=&quot;1280&quot; height=&quot;720&quot; src=&quot;&#x2F;blog&#x2F;img&#x2F;matrix-dma-slides.pdf&quot;&gt;&lt;&#x2F;iframe&gt;
&lt;br&#x2F;&gt;
&lt;p&gt;When DMA first became headline news last year, there was a lot of &lt;a href=&quot;https:&#x2F;&#x2F;www.theverge.com&#x2F;2022&#x2F;3&#x2F;28&#x2F;23000148&#x2F;eu-dma-damage-whatsapp-encryption-privacy&quot;&gt;very vocal concern&lt;&#x2F;a&gt; that it would somehow end up undermining end-to-end encryption (despite the legislation explicitly requiring that E2EE must be preserved when interoperating). Hopefully this session demonstrated that both the European Commission and the various panellists are dead serious about achieving interoperability without sacrificing privacy - whether that’s via the brute-force approach of client-side bridges, or the more sophisticated approach of client-side bridges which bridge to client-side APIs, or by incrementally or entirely adopting a true open standard protocol like Matrix, XMPP, or whatever MIMI comes up with.&lt;&#x2F;p&gt;
&lt;p&gt;You can see the whole panel split into the various sections below:&lt;&#x2F;p&gt;
&lt;noscript&gt;Today&#x27;s Matrix Live: &lt;a href=&quot;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=FDnUJXzVn3s&quot;&gt;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=FDnUJXzVn3s&lt;&#x2F;a&gt;&lt;&#x2F;noscript&gt;
&lt;youtube-player video-id=&quot;FDnUJXzVn3s&quot;&gt;&lt;&#x2F;youtube-player&gt;
&lt;br&#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=0s&quot;&gt;00:00&lt;&#x2F;a&gt; Opening&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=83s&quot;&gt;01:23&lt;&#x2F;a&gt; Introduction of the panellists&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Interoperable Messaging - Paul Rösler (FAU)&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=190s&quot;&gt;03:10&lt;&#x2F;a&gt; Interoperable end-to-end (E2EE) encryption options (Paul Rösler)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=324s&quot;&gt;05:24&lt;&#x2F;a&gt; Requirements for interoperable E2EE (Paul Rösler)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=562s&quot;&gt;09:22&lt;&#x2F;a&gt; Options for interoperable E2EE (Paul Rösler)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=834s&quot;&gt;13:54&lt;&#x2F;a&gt; Confidentiality, Privacy &amp;amp; Abuse prevention (Paul Rösler)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1147s&quot;&gt;19:07&lt;&#x2F;a&gt; Group Messaging (Paul Rösler)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;DMA Stakeholder Workshop: Interoperability - Eric Rescorla (Mozilla)&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1364s&quot;&gt;22:44&lt;&#x2F;a&gt; Learning from QUIC (Mozilla)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1454s&quot;&gt;24:14&lt;&#x2F;a&gt; E2EE and interoperability (Mozilla)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1550s&quot;&gt;25:50&lt;&#x2F;a&gt; Key Establishment in a E2EE interoperable system (Mozilla)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1636s&quot;&gt;27:16&lt;&#x2F;a&gt; Message and media formats in a E2EE interoperable system (Mozilla)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1710s&quot;&gt;28:30&lt;&#x2F;a&gt; Identity in a E2EE interoperable system (Mozilla)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1849s&quot;&gt;30:49&lt;&#x2F;a&gt; Multiple gatekeeper scenarios (Mozilla)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1901s&quot;&gt;31:41&lt;&#x2F;a&gt; Suggested framework for interoperability (Mozilla)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;DMA Stakeholder Workshop: Interoperability - Alissa Cooper (Cisco)&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=2120s&quot;&gt;35:20&lt;&#x2F;a&gt; Discussing how the UX of a DMA compliant product can look like (Cisco)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=2198s&quot;&gt;36:38&lt;&#x2F;a&gt; The use case for enterprise interoperability (Cisco)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=1847s&quot;&gt;30:47&lt;&#x2F;a&gt; Approaches to DMA Compliance (Cisco)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=2637s&quot;&gt;43:57&lt;&#x2F;a&gt; Limits of the per-gatekeeper, in-house solution approach (Cisco)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=2899s&quot;&gt;48:19&lt;&#x2F;a&gt; Strengths of the consolidated (standardised) solution (Cisco)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3000s&quot;&gt;50:00&lt;&#x2F;a&gt; Implications &amp;amp; requirements of the consolidated solution (Cisco)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Implementing Interoperability for the DMA - Matthew Hodgson (Matrix)&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3123s&quot;&gt;52:03&lt;&#x2F;a&gt; Implementing Interoperability in practice for the DMA (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3180s&quot;&gt;53:00&lt;&#x2F;a&gt; A practical path to full interoperability (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3275s&quot;&gt;54:35&lt;&#x2F;a&gt; Defining the problem we&#x27;re solving (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3315s&quot;&gt;55:15&lt;&#x2F;a&gt; Approach 1 Client-side bridging using server-side APIs (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3441s&quot;&gt;57:21&lt;&#x2F;a&gt; Approach 2 Client-side bridging using client-side APIs (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3528s&quot;&gt;58:48&lt;&#x2F;a&gt; Approach 3 Polyglot app, using a 3rd party protocol à la iMessage (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3606s&quot;&gt;01:00:06&lt;&#x2F;a&gt; Approach 4 Using an open protocol (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3642s&quot;&gt;01:00:42&lt;&#x2F;a&gt; Pros &amp;amp; Cons of each approach (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=3715s&quot;&gt;01:01:55&lt;&#x2F;a&gt; DEMO of client-side bridging (Matrix)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Meta&#x27;s view on the DMA as seen from WhatsApp - Stephen Hurley (Meta)&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=4005s&quot;&gt;01:06:45&lt;&#x2F;a&gt; Meta&#x27;s view on the DMA as seen from WhatsApp (Meta)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Questions&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=4632s&quot;&gt;01:17:12&lt;&#x2F;a&gt; Matthew (Matrix) remind that not only the demo showed client-side bridging was possible, but iMessage has been doing it for years via SMS &amp;amp; iMessage&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=4674s&quot;&gt;01:17:54&lt;&#x2F;a&gt; Meta has two IM platforms (Instagram and Facebook) that are not E2EE. What is Meta going to do about those platforms? (Beeper)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=4725s&quot;&gt;01:18:45&lt;&#x2F;a&gt; How to balance discoverability and privacy?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=4864s&quot;&gt;01:21:04&lt;&#x2F;a&gt; How to solve the problem of different E2EE protocols? (online)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=5088s&quot;&gt;01:24:48&lt;&#x2F;a&gt; Do some of the panellists think the best option is not a single standardised protocol? (OpenXchange)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=5626s&quot;&gt;01:33:46&lt;&#x2F;a&gt; Which measures by gatekeepers to preserve security integrity and privacy can be considered proportionate?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=5798s&quot;&gt;01:36:38&lt;&#x2F;a&gt; How many people have worked on the client-side demo?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=5936s&quot;&gt;01:38:56&lt;&#x2F;a&gt; Does it really matter that MLS is not &amp;quot;done&amp;quot;?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=6450s&quot;&gt;01:47:30&lt;&#x2F;a&gt; How will article 7 ensure private keys will never transit over the network? (online)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=6780s&quot;&gt;01:53:00&lt;&#x2F;a&gt; What about interoperability of features like custom emojis, removing messages, etc? (online)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FDnUJXzVn3s&amp;amp;t=7062s&quot;&gt;01:57:42&lt;&#x2F;a&gt; What does the rest of the panel thinks about the guarantees they can provide when a message leaves a system? (XMPP)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;panel-3-exploring-the-technical-aspects-of-interoperability-ii-data-collection-identification-of-users-quality-of-interoperable-services-system-management-integrity-of-the-service-prevention-of-misuse&quot;&gt;Panel 3: Exploring the technical aspects of interoperability (II): data collection, identification of users, quality of interoperable services, system management, integrity of the service&#x2F;prevention of misuse&lt;&#x2F;h3&gt;
&lt;p&gt;Finally, we launched into the third and final session of the day - a second technical panel to dig into questions of identity, usability, data privacy, consent and anti-abuse in a DMA world.  Relative to the second panel, there were more questions than answers here, as the panellists discussed whether users would need to consent or opt-in&#x2F;opt-out of interoperability, and debated the various data privacy implications of DMA.  The panel starred Stephen Hurley from Meta again, &lt;a href=&quot;https:&#x2F;&#x2F;www.linkedin.com&#x2F;in&#x2F;lucas-verney&quot;&gt;Lucas Verney&lt;&#x2F;a&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;www.peren.gouv.fr&quot;&gt;PEReN&lt;&#x2F;a&gt;, Markus Klein from &lt;a href=&quot;https:&#x2F;&#x2F;www.bundesnetzagentur.de&#x2F;&quot;&gt;Bundesnetzagentur&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;rohan.com&#x2F;&quot;&gt;Rohan Mahy&lt;&#x2F;a&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;wire.com&quot;&gt;Wire&lt;&#x2F;a&gt; introducing the &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;group&#x2F;mimi&quot;&gt;MIMI working group&lt;&#x2F;a&gt; at IETF.&lt;&#x2F;p&gt;
&lt;noscript&gt;Today&#x27;s Matrix Live: &lt;a href=&quot;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=ZtRmAaHUxWw&quot;&gt;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=ZtRmAaHUxWw&lt;&#x2F;a&gt;&lt;&#x2F;noscript&gt;
&lt;youtube-player video-id=&quot;ZtRmAaHUxWw&quot;&gt;&lt;&#x2F;youtube-player&gt;
&lt;br&#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=0s&quot;&gt;00:00&lt;&#x2F;a&gt; Opening and panellists introduction&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Meta &#x2F; WhatsApp&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=141s&quot;&gt;02:21&lt;&#x2F;a&gt; User Safety on WhatsApp&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=411s&quot;&gt;06:51&lt;&#x2F;a&gt; Consenting to interoperability&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=476s&quot;&gt;07:56&lt;&#x2F;a&gt; Objective criteria to assess whether a request is reasonable or not&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;PEReN&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=540s&quot;&gt;09:00&lt;&#x2F;a&gt; PEReN is a French government digital expertise hub&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=612s&quot;&gt;10:12&lt;&#x2F;a&gt; Efficient design for effective interoperability&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=685s&quot;&gt;11:25&lt;&#x2F;a&gt; Reconciliation identity between services&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=820s&quot;&gt;13:40&lt;&#x2F;a&gt; Discoverability between platforms of different scales&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=987s&quot;&gt;16:27&lt;&#x2F;a&gt; Should fancy features (e.g. emoji reactions) be interoperable?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=1042s&quot;&gt;17:22&lt;&#x2F;a&gt; Quality of Service&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=1142s&quot;&gt;19:02&lt;&#x2F;a&gt; Security goes beyond E2EE&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Bundesnetzagentur&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=1226s&quot;&gt;20:26&lt;&#x2F;a&gt; Bundesnetzagentur views on the DMA&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Wire&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=1599s&quot;&gt;26:39&lt;&#x2F;a&gt; Federation and Interoperability issues are similar&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=1690s&quot;&gt;28:10&lt;&#x2F;a&gt; Standards-based interoperability and the MIMI working group&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=1758s&quot;&gt;29:18&lt;&#x2F;a&gt; Identifiers, devices, handles&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=1850s&quot;&gt;30:50&lt;&#x2F;a&gt; User introduction &amp;amp; discovery&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=1890s&quot;&gt;31:30&lt;&#x2F;a&gt; Messaging content&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=2046s&quot;&gt;34:06&lt;&#x2F;a&gt; Why MIMI picked MLS for E2EE?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=2154s&quot;&gt;35:54&lt;&#x2F;a&gt; Server to server transport mechanism&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=2198s&quot;&gt;36:38&lt;&#x2F;a&gt; E2EE Cryptographic identity&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=2340s&quot;&gt;39:00&lt;&#x2F;a&gt; MIMI&#x27;s standardisation work provides a strong foundation for other features&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=2425s&quot;&gt;40:25&lt;&#x2F;a&gt; Why is standardized interoperability beneficial?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Questions&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=2670s&quot;&gt;44:30&lt;&#x2F;a&gt; What about terms of service, minimum usage age enforcement etc?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=2883s&quot;&gt;48:03&lt;&#x2F;a&gt; How can identity be maintained separately from networks? How will differing policies of services be respected?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=3146s&quot;&gt;52:26&lt;&#x2F;a&gt; Does WhatsApp rely on the phone number as a primary identifier?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=3209s&quot;&gt;53:29&lt;&#x2F;a&gt; Some systems like Telegram have pseudonymous IDs. How would that work with platforms relying on e.g. phone numbers?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=3342s&quot;&gt;55:42&lt;&#x2F;a&gt; Should the service name be part of the identifier?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=3453s&quot;&gt;57:33&lt;&#x2F;a&gt; Can the DMA improve how authentication is handled?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=3591s&quot;&gt;59:51&lt;&#x2F;a&gt; What made the GDPR successful is the potential fines. What about the DMA?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=3828s&quot;&gt;01:03:48&lt;&#x2F;a&gt; How can interoperability be designed to stop leaking contact lists?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=4155s&quot;&gt;01:09:15&lt;&#x2F;a&gt; Are we doing cookie banners again?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=4557s&quot;&gt;01:15:57&lt;&#x2F;a&gt; Should we think about some integration with eIDAS for more trustworthy identities?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=4788s&quot;&gt;01:19:48&lt;&#x2F;a&gt; Are all the protocols like Matrix or MIMI free to use, or do they have a fee?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=4952s&quot;&gt;01:22:32&lt;&#x2F;a&gt; Are there really concerns about the DMA and security?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=5260s&quot;&gt;01:27:40&lt;&#x2F;a&gt; Does Meta expect to provide a EU-only and a global version of their messengers?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=5395s&quot;&gt;01:29:55&lt;&#x2F;a&gt; The views expressed here regarding consent are concerning when it comes to self-hosting&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZtRmAaHUxWw&amp;amp;t=5780s&quot;&gt;01:36:20&lt;&#x2F;a&gt; Closing&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;This was a fascinating opportunity to have a front-row seat at history being made, as the various key players finally got down to business on the practical implications of DMA interoperability.&lt;&#x2F;p&gt;
&lt;p&gt;We saw the full spectrum of options on the table, from Meta’s implications that they would simply open their existing API complete with the existing Double Ratchet Encryption, to the pragmatic approach of Matrix (“at first we’ll bridge, and then the players should gradually converge on an open standard”) to the more idealistic approach of MIMI (“everyone should natively adopt an entirely new open standard built on MLS”).  The next step is to establish a reference implementation and approach, and in the end it seems likely that the approach that works will be the one which the gatekeepers can actually practically adopt within the punchy timeframes built into the legislation:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;dma.jpg&quot; alt=&quot;DMA timeline&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;You can also check out &lt;a href=&quot;https:&#x2F;&#x2F;carlschwan.eu&#x2F;2023&#x2F;03&#x2F;02&#x2F;digital-market-act-workshop-in-brussels&#x2F;&quot;&gt;Carl Schwan’s writeup&lt;&#x2F;a&gt; (from NeoChat), as well as Eric Rescorla’s braindump on &lt;a href=&quot;https:&#x2F;&#x2F;educatedguesswork.org&#x2F;posts&#x2F;dma-interop&#x2F;&quot;&gt;DMA interoperability&lt;&#x2F;a&gt; that accompanies his talk.&lt;&#x2F;p&gt;
&lt;p&gt;We live in interesting times, and it’s fascinating to see Matrix’s vision of interoperable communication being cemented into regulation by the EU.  Our view is that as long as the gatekeepers open their APIs and add support to model remote users in their systems, then at least the wider world can implement client-side bridges to crack the door of the gatekeepers open - and then as gatekeepers refresh their stacks and new players emerge, they’ll likely implement the common protocol (if it’s fit for purpose) rather than burn time reinventing the wheel on proprietary solutions.  Meanwhile, the DMA provides welcome encouragement to ensure that open protocols like Matrix can rise to the challenge and fill the gap - whether that’s &lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&quot;&gt;independently&lt;&#x2F;a&gt; or as &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-ralston-mimi-matrix-framework&#x2F;&quot;&gt;part of IETF’s MIMI&lt;&#x2F;a&gt; initiative. May the best solution win!&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Matrix Community Year In Review 2022</title>
    <published>2023-01-03T00:00:00+00:00</published>
    <updated>2023-01-03T00:00:00+00:00</updated>
    <author>
      <name>
            Nico
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2023/01/03/matrix-community-year-in-review-2022/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2023/01/03/matrix-community-year-in-review-2022/</id>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;Note: This was originally posted on https:&#x2F;&#x2F;blog.neko.dev&#x2F;posts&#x2F;matrix-year-in-review-2022.html , which also includes some small info boxes about each projects, which got lost in the translation.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;As we send off 2022 with a bang, it makes sense to look back on what we did this year and where we want to go next year. In its holiday special post, the Matrix Foundation has been focusing on the core team&#x27;s work. This post is focusing on the achievements of the community outside of the Matrix Foundation.&lt;&#x2F;p&gt;
&lt;p&gt;I tried to reach out to as many people I have seen do &amp;quot;stuff&amp;quot; on Matrix and have them write something they would see fitting for a year in review. Now, most people have better things to do between christmas and new years, so I hope you can excuse if some projects are missing. Also I probably forgot like half of the interesting people... HOWEVER! I hope you still enjoy what everyone wrote up. And don&#x27;t forget to check out the official &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2022&quot;&gt;Matrix Holiday Update 2022&lt;&#x2F;a&gt; and of course read you weekly &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;category&#x2F;this-week-in-matrix&quot;&gt;TWIM&lt;&#x2F;a&gt; to keep up to date with any cool projects you find.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2&gt;Nheko D-Bus API&lt;&#x2F;h2&gt;
&lt;p&gt;A D-Bus API for the Nheko Matrix client compatible with KRunner and Rofi.&lt;&#x2F;p&gt;
&lt;p&gt;LorenDB tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;As a dedicated user of all things KDE, I make heavy use of KRunner. Naturally, I wondered if KRunner could be extended to join Matrix. This idea led me to create a D-Bus API in nheko for use on Linux. While it currently only supports a few aspects of the full Matrix experience, this API allows external software to make use of some of nheko&#x27;s functionality, including searching the room list, opening rooms, joining rooms, and creating DMs. Later, I also added support for setting status messages. Now you can write extensions for software such as &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;LorenDB&#x2F;nheko-krunner&quot;&gt;KRunner&lt;&#x2F;a&gt; or &lt;a href=&quot;https:&#x2F;&#x2F;mzte.de&#x2F;git&#x2F;LordMZTE&#x2F;rofi-nheko&quot;&gt;rofi&lt;&#x2F;a&gt;. Alternately, you could make a plugin for your favorite game that sets your status message to let your friends know that you are busy (although no known plugins of this sort exist).&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Community Moderation Effort&lt;&#x2F;h2&gt;
&lt;p&gt;A collaborative effort to moderate Matrix communities and to fight spam.&lt;&#x2F;p&gt;
&lt;p&gt;Nico mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Some of you might have heard of us, but we are a few moderators of very
different communities, who have banded together to fight spam and share the
burden of moderating our communities. Different opinions are very hard to align,
so we have one ban list we can agree on, that only includes the most annoying
spam reasons: automated spam, crypto advertisements, gore posting and similar
stuff. This actually works very well against spammers, that just join one room
after the other to send the same content.&lt;&#x2F;p&gt;
&lt;p&gt;You can subscribe to this ban list here:
&lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;%23community-moderation-effort-bl%3Aneko.dev&quot;&gt;#community-moderation-effort-bl:neko.dev&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We are sometimes internally discussing moderation rules, tooling and recent
events.  In the long term we hope to improve the tooling situation as well as
provide a second, stricter ban list, but we are also already very busy just
moderating our own little communities, so don&#x27;t expect much progress.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a community that has been troubled by organized spam recently, maybe
our ban list can help you. You might also be interested in contacting one of us
to join the effort, just be aware that we are very careful in accepting new
members. We hope you have a spam-free and enjoyable 2023!&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Matrix Releasetracker&lt;&#x2F;h2&gt;
&lt;p&gt;Release tracker that posts updates into Matrix rooms. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ananace&#x2F;matrix-releasetracker&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Ananace contributes&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;The release tracking project that has been running basically non-stop since 2018 (barring a few periods of downtime due to complete database crashes), having tracked many millions of releases for &lt;em&gt;at least&lt;&#x2F;em&gt; five people from my personally hosted instance.&lt;&#x2F;p&gt;
&lt;p&gt;2022 saw the addition of plenty of additional release sources, as well as a complete refactor of the codebase to hopefully support even more sources going forwards. It now tracks loose repositories (signed tags, lightweight tags, and&#x2F;or releases) on GitHub&#x2F;GitLab&#x2F;Gitea&#x2F;plain git, as well as supporting the tracking of entire namespaces and user stars on GitHub&#x2F;GitLab&#x2F;Gitea.&lt;&#x2F;p&gt;
&lt;p&gt;2023 should hopefully see even more work roll in, with some code underway for tracking Docker images and Helm Chart updates, as well as rework of the bot component to have it offer more use.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Self-Host a Matrix Map Tile Server&lt;&#x2F;h2&gt;
&lt;p&gt;FluffyChat implemented location sharing in Matrix last year. More recently, Element announced support for it. Interesting in Element&#x27;s announcement is not only the mechanism for sharing a location data point, but also how their matrix clients would display a little map to the recipient and how they would support the case where the data for this map display could be self-hosted. This is a blogpost&#x2F;guide to show how this could be done. &lt;a href=&quot;https:&#x2F;&#x2F;wrily.foad.me.uk&#x2F;self-host-a-matrix-map-server&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;JulianF mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;I set up my own OpenStreetMap tiles server for secure location sharing with Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;See &lt;a href=&quot;https:&#x2F;&#x2F;wrily.foad.me.uk&#x2F;self-host-a-matrix-map-server&#x2F;&quot; title=&quot;Self-Host a Matrix Map Tile Server&quot;&gt;this guide on my blog&lt;&#x2F;a&gt; which explains why and how I did it, and the &lt;a href=&quot;https:&#x2F;&#x2F;lab.trax.im&#x2F;matrix&#x2F;map-tile-server-ansible&quot; title=&quot;Map Tile Server Ansible&quot;&gt;Ansible role&lt;&#x2F;a&gt;, and the matrix discussion room &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#matrix-map-tile-server:foad.me.uk&quot;&gt;&lt;code&gt;#matrix-map-tile-server:foad.me.uk&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Matrix ClassDojo Bridge&lt;&#x2F;h2&gt;
&lt;p&gt;This bridges ClassDojo teacher-to-parent messaging facilities to matrix. &lt;a href=&quot;https:&#x2F;&#x2F;lab.trax.im&#x2F;matrix&#x2F;cdj-to-matrix&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;JulianF mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;I began a project to bridge matrix to the teacher-parent messaging silo ClassDojo, which is popular especially in USA and UK schools.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;lab.trax.im&#x2F;matrix&#x2F;cdj-to-matrix&quot;&gt;Matrix ClassDojo Bridge&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I am motivated by my loathing of being coerced into putting my private communications in yet another silo where I am restricted to accessing my messages and photos through the company&#x27;s own products which subject me to advertising and engagement tactics (&amp;quot;Your child earned a point -- click to see what for!&amp;quot;), where I cannot easily keep my own copy of my own data (&amp;quot;Subscribe now to keep your memories!&amp;quot;), and all the other typical down-sides of a Big Tech silo.&lt;&#x2F;p&gt;
&lt;p&gt;This scenario is of course exactly where Matrix shines. An ideal fit for a school&#x27;s messaging needs, scrapping the silo business model, putting the organisation in control of its own data and policies.&lt;&#x2F;p&gt;
&lt;p&gt;In the first half of 2022 I got as far as being able to do an offline demo -- manually running the fetching and bridging stages, with the teacher and class names, story text and photos bridged in the to-matrix direction.&lt;&#x2F;p&gt;
&lt;p&gt;My work on this was generously sponsored by my wife.&lt;&#x2F;p&gt;
&lt;p&gt;Since then, the project has been on hold, seeking further funding.&lt;&#x2F;p&gt;
&lt;p&gt;My next step plan for the bridge, when I can get back to it, is to adjust the bridged output to the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#social-matrix:carnot.cc&quot;&gt;matrix-for-social-media&lt;&#x2F;a&gt; formats used in &lt;a href=&quot;https:&#x2F;&#x2F;circu.li&#x2F;&quot;&gt;FUTO Circles&lt;&#x2F;a&gt; (previously &amp;quot;Circuli&amp;quot;) and &lt;a href=&quot;https:&#x2F;&#x2F;app.minestrix.henri2h.fr&#x2F;&quot;&gt;MinesTRIX&lt;&#x2F;a&gt; to present a familiar and beautiful display.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Aine&#x27;s update&lt;&#x2F;h2&gt;
&lt;p&gt;Aine, one of the people behind &lt;a href=&quot;https:&#x2F;&#x2F;etke.cc&#x2F;&quot; &gt;etke.cc&lt;&#x2F;a&gt; gives an update about what happened in the project this year as well as their contributions to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&quot;&gt;matrix-docker-ansible-deploy&lt;&#x2F;a&gt;. &lt;a href=&quot;https:&#x2F;&#x2F;etke.cc&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Aine contributes&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ohh, I don&#x27;t even know where to start and what include, to be honest 😁&lt;&#x2F;p&gt;
&lt;p&gt;The most notable changes were:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;etke.cc&#x2F;scheduler brings control over maintenance service and running services to customers. It changed our internal workflows a lot&lt;&#x2F;li&gt;
&lt;li&gt;multilingual support of etke.cc - website, guides, order processing, support. Initially we had 3 supported languages (English, German, Russian) and then dropped Russian&lt;&#x2F;li&gt;
&lt;li&gt;a lot of new components in mdad, starting with cinny and Borg backup and finishing with postmoogle&lt;&#x2F;li&gt;
&lt;li&gt;we developed several new bots and matrix-related tools&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;... Actually, a lot of things were done and much more is in progress, not sure if I can speak about upcoming changes&lt;&#x2F;p&gt;
&lt;p&gt;So, 2022 was awful, scary, heartbreaking (in a bad way), but it also was quite productive&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Pauls Podcast (German tech podcast)&lt;&#x2F;h2&gt;
&lt;p&gt;A German tech podcast, that talks a lot about Matrix, but also a few other miscellaneous topics. &lt;a href=&quot;https:&#x2F;&#x2F;chrpaul.de&#x2F;podcast&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;jaller94 shares&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;In the beginning of the year I started a hobby podcast. Most episodes cover Matrix topics, e.g. the release of Matrix Spec v1.2, the FOSDEM 2022 and the Matrix Community Summit in Berlin.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;chrpaul.de&#x2F;podcast&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;chrpaul.de&#x2F;podcast&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Matrix dev room at FrOSCon 2022&lt;&#x2F;h2&gt;
&lt;p&gt;Every year free and open source software is celebrated and talked about at the FroSCon conference near Bonn. There was a dev room dedicated to Matrix this year. &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#FrOSCon:fiksel.info&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;jaller94 tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Every year free and open source software is celebrated and talked about at the FroSCon conference near Bonn.&lt;br&#x2F;&gt;Thousands of enthusiasts meet on a university campus for one weekend to listen to presentations, talk in dev rooms and inform themselves at booths.&lt;br&#x2F;&gt;One ecosystem and community not to miss is Matrix. We&#x27;ve had a dev room where plenty of developers, server admins and newcomers exchanged their ideas and wishes for the protocol, implementations and other aspects of Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;Room link: &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#FrOSCon:fiksel.info&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;#FrOSCon:fiksel.info&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Thanks to the speakers who represented Matrix on stage! Thanks to &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;@oleg:fiksel.info&quot;&gt;Oleg&lt;&#x2F;a&gt; for continually representing Matrix at FrOSCon each year! Thanks to &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;@yan:datanauten.de&quot;&gt;Yan&lt;&#x2F;a&gt; for joining me last minute and making the dev room 300% more awesome!&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Bram&#x27;s updates on Elm and activism&lt;&#x2F;h2&gt;
&lt;p&gt;A Matrix SDK in Elm. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;noordstar&#x2F;matrix-axelm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Bram mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;h3&gt;Experience as a digital activist&lt;&#x2F;h3&gt;
&lt;p&gt;At the Matrix Community Summit 2022, I gave a talk on the struggles as a digital activist if trying to explain concepts like Matrix to politicians. The talk went very well!&lt;&#x2F;p&gt;
&lt;p&gt;I was really impressed by the knowledge and passion that many of the attendees at the Matrix Community Summit displayed, and I feel grateful to have had the opportunity to learn from and such an engaged and informed group of people. I am confident that the insights and perspectives shared at the summit will be invaluable to my activism moving forward, and I hope to have the chance to work with many of you in the future as we continue to strive for a more just and equitable world.&lt;&#x2F;p&gt;
&lt;h3&gt;Implementing Matrix in Elm&lt;&#x2F;h3&gt;
&lt;p&gt;For the past year, I have been looking for ways to implement a Matrix SDK in Elm. Elm is a functional programming language that promises to compile to lightweight JavaScript that raises zero runtime exceptions. This has been quite a learning process and I&#x27;m hoping to release a beta version early 2023.&lt;&#x2F;p&gt;
&lt;p&gt;From the past year of trying to build a functional language library, I&#x27;ve learned that:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The Matrix spec is surprisingly easy to implement in a functional programming language;&lt;&#x2F;li&gt;
&lt;li&gt;There are still a lot of ambiguities left in the Matrix spec that aren&#x27;t that big of a deal for imperative programming languages, but can mess up your codebase if you&#x27;re a functional programmer;&lt;&#x2F;li&gt;
&lt;li&gt;There appears to be a need for some single-use clients that are very good at doing a single thing. (Sending automated messages to multiple clients, moderating permissions across multiple rooms, auto-sending policies, exploring unknown access tokens).&lt;&#x2F;li&gt;
&lt;li&gt;A lot of SDK development still revolves heavily around Element and Synapse implementation. Some events weren&#x27;t part of spec yet while already widely implemented because either of those two codebases supported it.&lt;&#x2F;li&gt;
&lt;li&gt;The Elm compiler is VERY strict and unforgiving, which can be annoying at times but creates some very robust results. My hope is that rolling out client implementations will be relatively quick and easy as soon as the SDK implementation is ready.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Progress on the Elm SDK can be found over &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;noordstar&#x2F;matrix-axelm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;here&lt;&#x2F;a&gt; but will be updated in TWIM as well. You can also view my side project of a custom event type directory over at &lt;a href=&quot;https:&#x2F;&#x2F;matrix.directory&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;matrix.directory&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Nico&#x27;s delight initiative&lt;&#x2F;h2&gt;
&lt;p&gt;Random Matrix related updates from Nico.&lt;&#x2F;p&gt;
&lt;p&gt;Nico mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Nobody enjoys encountering bugs on a platform they use. So one of my goals for 2022 was to fix some of the bugs I hear often about in the hope it improves the reputation Matrix has. This often involves projects or functionality I don&#x27;t personally use, but that I can still contribute to. I think I made some progress on it. For example I fixed a bug that prevented all calls using Element Web on servers, that were not Synapse. Similarly I opened a pull request to Element Android repo, where users would get pinged by replying to a user whose userid starts with a room ping like @roomba (however that sadly isn&#x27;t merged yet). I also made various fixes to Synapse, especially related to notifications.&lt;&#x2F;p&gt;
&lt;p&gt;More long term I tried to push dehydrated devices forward (partially because of my day job) by implementing the second iteration of it: &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3814&quot;&gt;MSC3814: Shriveled Sessions&lt;&#x2F;a&gt; as well as writing MSCs to one day get rid of reply fallbacks (by deprecating it and with support of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3664&quot;&gt;MSC3664&lt;&#x2F;a&gt; allow for better control over notifications from replies. Similarly I pushed forward &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3266&quot;&gt;MSC3266: Room Summaries&lt;&#x2F;a&gt; to improve the experience when joining rooms via knocking or restricted joins or just previewing rooms in general. (I implemented the federation parts of that MSC in Synapse as well as in several parts of Nheko).&lt;&#x2F;p&gt;
&lt;p&gt;My current work is on improving presence, since that has some fun edge cases. Fingers crossed that works out next year and I find a few more things to drive by fix. Do you have anything you have seen come up often? Maybe 2023 is the year to try to fix one of the bugs you encountered far too often? It is always easier to fix stuff, that has been annoying you, so why not try and make your own life on Matrix a little bit better? Most projects are pretty open to contributors and it also often teaches you some new skills, so there is nothing to lose but lots of time!&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Valheim Matrix Bridge&lt;&#x2F;h2&gt;
&lt;p&gt;A Valheim (the game) to Matrix bridge. &lt;a href=&quot;https:&#x2F;&#x2F;nheko.im&#x2F;nheko-reborn&#x2F;valheimmatrix&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Nico mentions&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;I built a Valheim Mod to bridge Matrix messages from and to Valheim, so that I didn&#x27;t have to switch windows as often when playing with the other Nheko devs. You can find it here: &lt;a href=&quot;https:&#x2F;&#x2F;nheko.im&#x2F;nheko-reborn&#x2F;valheimmatrix&quot;&gt;https:&#x2F;&#x2F;nheko.im&#x2F;nheko-reborn&#x2F;valheimmatrix&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;neko.dev_cltTmMvhoxagKJMNiPHdcLLB.png&quot; style=&quot;display: inline-block&quot;&#x2F;&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Postmoogle&lt;&#x2F;h2&gt;
&lt;p&gt;An Email to Matrix bridge. Postmoogle is an actual SMTP server that allows you to send and receive emails on your matrix server. It can&#x27;t be used with arbitrary email providers, because it acts as an actual email provider itself, so you can use it to send emails from your apps and scripts as well. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;etke.cc&#x2F;postmoogle&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Aine reports&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;At &lt;a href=&quot;https:&#x2F;&#x2F;etke.cc&quot;&gt;etke.cc&lt;&#x2F;a&gt; we love matrix, but have to use email as well, especially for some notification things and communication with customers. Let&#x27;s face it: email ecosystem is awful, there is no really usable and nice looking email clients that allow you to collaborate and use &amp;quot;hivemind&amp;quot; to work on emails, there is no simple backend implementations that will just work with simple configuration, and you have to dig into all that stuff on your own to understand how it works and configure it...&lt;&#x2F;p&gt;
&lt;p&gt;So, we already had experience in bringing stuff into matrix and we decided to do the same for email, that&#x27;s how Postmoogle was born.&lt;&#x2F;p&gt;
&lt;p&gt;Of course, there was email2matrix, but it&#x27;s too hard to configure and it&#x27;s intended only to receive messages.&lt;&#x2F;p&gt;
&lt;p&gt;Our &amp;quot;20 minutes adventure&amp;quot; to develop it was a hell ride with several weeks of nearly full-time working on it even on weekends, and during that time we literally studied SMTP protocol using RFCs, Wikipedia and source code of other mail servers (shoutout to Maddy - you guys did amazing work!).&lt;&#x2F;p&gt;
&lt;p&gt;It was a tough fight, but the result is satisfying - you can get an email server that handles 99% of usual email cases and uses matrix as frontend.&lt;&#x2F;p&gt;
&lt;p&gt;So, what&#x27;s the result?&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;we use Postmoogle for customer support&lt;&#x2F;li&gt;
&lt;li&gt;we offer it to customers&lt;&#x2F;li&gt;
&lt;li&gt;we have cases when people ditched regular email service (like gmail) and use postmoogle as the only email account&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Of course, we have other ideas with it, but even now it&#x27;s pretty satisfying results&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Halcyon&lt;&#x2F;h2&gt;
&lt;p&gt;Halcyon is a python matrix library made with the goal of being very easy to use, and requiring no local databases. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;WesR&#x2F;Halcyon&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;gen3 mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Halcyon is a python matrix library made with the goal of being very easy to use, and requiring no local databases. 2022 brought a few key features that made it usable for general usage in unencrypted room (We reached milestone 2!).&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Query for room information, with automatic background updating in a local cache. (ex, get the room name, admin, moderators, etc)&lt;&#x2F;li&gt;
&lt;li&gt;Improved polling for reduced server usage and for connection with slow internet&lt;&#x2F;li&gt;
&lt;li&gt;Image sending functionality with automatic blurhash and thumbnail generation&lt;&#x2F;li&gt;
&lt;li&gt;More examples&lt;&#x2F;li&gt;
&lt;li&gt;More documentation!&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Come chat with us in  &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#halcyon:blackline.xyz&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#halcyon:blackline.xyz&lt;&#x2F;a&gt;&lt;br&#x2F;&gt;Find the library here:  &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;WesR&#x2F;Halcyon&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;WesR&#x2F;Halcyon&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;f0x&#x27; year of not-so-much Matrix&lt;&#x2F;h2&gt;
&lt;p&gt;f0x gives an update about their Matrix (and not-so-much Matrix) projects.&lt;&#x2F;p&gt;
&lt;p&gt;f0x mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Looking back I realized I didn&#x27;t do much with Matrix at all this year, besides actively using it as my main communication platform.&lt;br&#x2F;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.pixie.town&#x2F;f0x&#x2F;matrix-streamchat&quot;&gt;matrix-streamchat&lt;&#x2F;a&gt; had some commits at the start of the year but got abandoned shortly after. I stopped streaming myself, and others I knew&lt;br&#x2F;&gt;mostly used Owncast which had it&#x27;s own chat, which got some neat ActivityPub integration soon after too.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.pixie.town&#x2F;f0x&#x2F;synapse-media-proxy&quot;&gt;synapse-media-proxy&lt;&#x2F;a&gt; also had very little changes, but that&#x27;s quite good, because it&#x27;s been very solidly running in production for more than a year now,&lt;br&#x2F;&gt;running all the Matrix media for &lt;a href=&quot;https:&#x2F;&#x2F;pixie.town&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;pixie.town&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;There&#x27;s some stuff on the ops-side; worked on a refactor of my NixOS modules for Synapse with workers (not quite working yet). Moved all my bridges to a &lt;a href=&quot;https:&#x2F;&#x2F;git.pixie.town&#x2F;f0x&#x2F;nixos&#x2F;src&#x2F;branch&#x2F;main&#x2F;nodes&#x2F;via&quot;&gt;new NixOS host&lt;&#x2F;a&gt;. (Barely)&lt;br&#x2F;&gt;maintained my &lt;a href=&quot;https:&#x2F;&#x2F;git.pixie.town&#x2F;f0x&#x2F;matrix-appservice-irc&quot;&gt;matrix-appservice-irc fork&lt;&#x2F;a&gt;, and got some nice &lt;a href=&quot;https:&#x2F;&#x2F;git.pixie.town&#x2F;f0x&#x2F;gitea-registration-proxy&quot;&gt;clickfarm-supplied Haiku&#x27;s&lt;&#x2F;a&gt;&lt;br&#x2F;&gt;from a bot re-using an account because I still haven&#x27;t gotten around to giving it it&#x27;s own access token..&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Successful registration for jamessemith70 (jamessmithp70@gmail.com)&lt;br&#x2F;&gt;5, Frigid winter night—&lt;br&#x2F;&gt;7, even the thieves stay at home,&lt;br&#x2F;&gt;5, except for those two&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;In my non-Matrix time I&#x27;ve been working a lot on the frontend and settings interface for &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;superseriousbusiness&#x2F;gotosocial&quot;&gt;GoToSocial&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;git.pixie.town&#x2F;f0x&#x2F;fedifox&#x2F;&quot;&gt;FediFox&lt;&#x2F;a&gt; Masto-api client and Masto-api compatible alternative frontend &lt;a href=&quot;https:&#x2F;&#x2F;git.pixie.town&#x2F;f0x&#x2F;fedifox-shield&quot;&gt;FediFox Shield&lt;&#x2F;a&gt;. Article about the latter: &lt;a href=&quot;https:&#x2F;&#x2F;cthu.lu&#x2F;projects&#x2F;fedifox-shield&quot;&gt;https:&#x2F;&#x2F;cthu.lu&#x2F;projects&#x2F;fedifox-shield&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Gwmngilfen&#x27;s Matrix Year&lt;&#x2F;h2&gt;
&lt;p&gt;Gwmngilfen gives an update about their work on Matrix in 2022.&lt;&#x2F;p&gt;
&lt;p&gt;Gwmngilfen tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;While 2021 was a big year for me in Matrix, 2022 has been one of steady progress on various projects. Being a community architect, much of those projects are &amp;quot;communities on Matrix&amp;quot; rather than code, but hey! We need users 😀. So, here&#x27;s what I&#x27;ve been up this year...&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#space:ansible.com&quot;&gt;#space:ansible.com&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Ansible started on it&#x27;s Matrix journey &lt;a href=&quot;https:&#x2F;&#x2F;emeraldreverie.org&#x2F;2021&#x2F;07&#x2F;08&#x2F;ansible_and_matrix&quot;&gt;last year&lt;&#x2F;a&gt; but the arguments I made then have proven solid. The community has seen steady decline in the number of IRC users, but a steady rise in the number of Matrix users - enough to make a positive trend overall. As of last month, we&#x27;re now at over 50% of unique MXIDs talking each day coming from Matrix vs IRC. That&#x27;s a huge milestone to have reached in just over a year!&lt;&#x2F;p&gt;
&lt;p&gt;We also used Matrix as a key part of our message to the wider tech landscape as part of our Keynote at AnsibleFest. I don&#x27;t want to make this too product-y, but you can check out that video &lt;a href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;J7YRaPzKw4A?t=1819&quot;&gt;here&lt;&#x2F;a&gt; and also the interview my colleagues Adam and Carol &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=5EQjSaWRWyQ&quot;&gt;here&lt;&#x2F;a&gt; (that&#x27;s worth a look, Adam crowbars Matrix into almost every sentence 😁)&lt;&#x2F;p&gt;
&lt;p&gt;Steady progress isn&#x27;t eye catching, but I&#x27;m so pleased that the move has been a positive one, and I hope it continues in 2023.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#rlang:matrix.org&quot;&gt;#rlang:matrix.org&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Since part of my work involves doing data science, I&#x27;ve also been trying to boost the presence of the Rstats world on Matrix. The community there is small so far, but we&#x27;re super supportive and trying to build out our presence. My eventual goal is to make it big enough to be worth setting up a bridge to the larger Slack R4DS community (R for Data Science), but we&#x27;re not there yet. If you use R at all, come see us!&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;GregSutcliffe&#x2F;ChatStat&#x2F;&quot;&gt;ChatStat for data on your Matrix Rooms&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;The one Matrix project I did get done this year (although it hasn&#x27;t been updated in ... a while) is an R library for producing reports on Matrix rooms. I use this for gathering data on the Ansible community regularly, and it comes in two parts. The first part is the API calls to get all the events for a set of rooms over a given time and arrange it in a nice rectangular format. The second part uses this tabular data to produce reports on when people talk, who talks the most, and so on. It&#x27;s been very useful to me over the past few months to show how the trends I talk about above have developed.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Carolinacon in matrix&lt;&#x2F;h2&gt;
&lt;p&gt;CarolinaCon is a yearly cybersecurity conference hosted out of North Carolina. Since 2004 CarolinaCon has been host to talks ranging from BioHacking, to developing OpenBSD, to Web app security, and beyond. Over the years we have run a wide range of events, mostly in person. The past two years we decided to run the conference online. &lt;a href=&quot;https:&#x2F;&#x2F;carolinacon.org&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;gen3 mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;h3&gt;whoami&lt;&#x2F;h3&gt;
&lt;p&gt;CarolinaCon is a yearly cybersecurity conference hosted out of North Carolina. Since 2004 CarolinaCon has been host to talks ranging from BioHacking, to developing OpenBSD, to Web app security, and beyond. Over the years we have run a wide range of events, mostly in person. The past two years we decided to run the conference online.&lt;&#x2F;p&gt;
&lt;h3&gt;How did we use matrix?&lt;&#x2F;h3&gt;
&lt;p&gt;We decided to run a homeserver bridged with our discord. We wanted to take careful consideration to users who have never used matrix before, and offer some background information to enable them to use it even if they were feeling unsure. Along with running our own homeserver and element instance, We also made a Space that users can join to automatically see all the rooms available for the conference. When a user creates an account on our homeserver, they are automatically placed in a few key rooms such as the Space, #CTF, #general, and #announcements. Check it out on &lt;a href=&quot;https:&#x2F;&#x2F;carolinacon.org&#x2F;coms.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;carolinacon.org&#x2F;coms.html&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We didn&#x27;t want anyone to feel left out, so all rooms are mirrored. One challenge this faced was getting permissions to work properly with rooms such as #announcements. The usage of a Space was generally positive in terms of increasing room desirability in Matrix. It was also nice to be able to include the local 2600 room into our space, something that we couldn&#x27;t do with Discord.&lt;&#x2F;p&gt;
&lt;h3&gt;Stats&lt;&#x2F;h3&gt;
&lt;p&gt;We already had a large userbase on discord, but still had good user interaction on both sides. 150 users interacted in the #general chat. Of those users, 113 were from discord. Of the 37 Matrix only users, we had 7 separate homeservers. Its really cool to see that people who where already on Matrix, decided to federate in. Almost all homeservers had more then one person join, which is good to see.&lt;&#x2F;p&gt;
&lt;p&gt;In the future as we go back to in an person conference, we will continue to run the an online portion. The community seemed to really enjoy it, and we consider it a success as we were able to increase our outreach to world wide. Check us out at &lt;a href=&quot;https:&#x2F;&#x2F;carolinacon.org&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;carolinacon.org&#x2F;&lt;&#x2F;a&gt; , we would love to chat!&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Google-free push notifications with UnifiedPush and Ntfy&lt;&#x2F;h2&gt;
&lt;p&gt;Using the &lt;a href=&quot;https:&#x2F;&#x2F;unifiedpush.org&#x2F;&quot;&gt;UnifiedPush open standard&lt;&#x2F;a&gt;, ntfy enables self-hosted (Google-free) push notifications. &lt;a href=&quot;https:&#x2F;&#x2F;wrily.foad.me.uk&#x2F;unifiedpush-notifications-for-your-matrix-server-with-ntfy&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;JulianF reports&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;In the interests of supporting Open Tech in general, I made a small contribution to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&quot;&gt;matrix-docker-ansible-deploy&lt;&#x2F;a&gt;: it can now install the &lt;a href=&quot;https:&#x2F;&#x2F;ntfy.sh&#x2F;&quot;&gt;ntfy&lt;&#x2F;a&gt; push notifications server for you.&lt;&#x2F;p&gt;
&lt;p&gt;To explain what it&#x27;s for: Using the &lt;a href=&quot;https:&#x2F;&#x2F;unifiedpush.org&#x2F;&quot;&gt;UnifiedPush open standard&lt;&#x2F;a&gt;, ntfy enables self-hosted (Google-free) push notifications. The notifications go from Matrix (and other) servers, to our self-hosted ntfy server, and then straight to our phone. Especially useful for users of &lt;a href=&quot;https:&#x2F;&#x2F;wrily.foad.me.uk&#x2F;all-i-want-for-christmas-is&quot; title=&quot;A smart phone that doesn&#x27;t own me&quot;&gt;Google-free Android&lt;&#x2F;a&gt; phones, and others who want to reduce their dependence on big tech.&lt;&#x2F;p&gt;
&lt;p&gt;To set it up, see &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;docs&#x2F;configuring-playbook-ntfy.md&quot;&gt;Setting up the ntfy push notifications server&lt;&#x2F;a&gt; in the playbook docs.&lt;&#x2F;p&gt;
&lt;p&gt;Read about it on my blog: &lt;a href=&quot;https:&#x2F;&#x2F;wrily.foad.me.uk&#x2F;unifiedpush-notifications-for-your-matrix-server-with-ntfy&quot;&gt;UnifiedPush notifications for your Matrix server with ntfy&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Paul&#x27;s updates and blog posts&lt;&#x2F;h2&gt;
&lt;p&gt;Paul shares what they did in 2022. &lt;a href=&quot;https:&#x2F;&#x2F;paul.totterman.name&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Paul mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
I haven&#x27;t had much time, but I did write two tiny projects and small blog posts: &lt;a href=&quot;https:&#x2F;&#x2F;paul.totterman.name&#x2F;posts&#x2F;matrix-menu-bot&#x2F;&quot;&gt;https:&#x2F;&#x2F;paul.totterman.name&#x2F;posts&#x2F;matrix-menu-bot&#x2F;&lt;&#x2F;a&gt; &amp;amp; &lt;a href=&quot;https:&#x2F;&#x2F;paul.totterman.name&#x2F;posts&#x2F;remarkable-matrix&#x2F;&quot;&gt;https:&#x2F;&#x2F;paul.totterman.name&#x2F;posts&#x2F;remarkable-matrix&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Open Tech Will Save Us on PeerTube&lt;&#x2F;h2&gt;
&lt;p&gt;Hosting of the Open Tech Will Save Us talks on PeerTube. &lt;a href=&quot;https:&#x2F;&#x2F;wrily.foad.me.uk&#x2F;open-tech-will-save-us-on-peertube&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;JulianF mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;wrily.foad.me.uk&#x2F;open-tech-will-save-us-on-peertube&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;wrily.foad.me.uk&#x2F;open-tech-will-save-us-on-peertube&lt;&#x2F;a&gt; -- I am publishing the Open Tech Will Save Us (OTWSU) talks on an Open Tech platform — namely on my own instance of Peertube. -- Thanks to Harald for doing it first. -- This article talks more about why, how, etc. &lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;This Year in Trixnity&lt;&#x2F;h2&gt;
&lt;p&gt;Trixnity is a multiplatform Matrix SDK written in Kotlin. You can write clients, bots, appservices and servers with it. This SDK supports JVM (also Android), JS and Native as targets for most modules. Ktor is used for the HTTP client&#x2F;server and kotlinx.serialization for the serialization&#x2F;deserialization. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;trixnity&#x2F;trixnity&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Benedict mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Trixnity made some huge steps towards a fully featured cross platform matrix SDK written in Kotlin.&lt;&#x2F;p&gt;
&lt;p&gt;Starting with version 1.0.0 in January I added support for cross signing, secrets and key backup.&lt;&#x2F;p&gt;
&lt;p&gt;Version 2.0.0 in April included a large refactoring. This allows you to share a lot code between server and client implementations of the Matrix APIs. For example you can now implement a server with Trixnity. Also Olm has been bundled into most release files, push rules are evaluated, there is a new better TimelineEvent retrieving API and many more. JS has been enabled for the last module, so Trixnity is now fully multiplatform capable. With v2.3.0 dependency injection has been added to Trixnity to make it even more configurable.&lt;&#x2F;p&gt;
&lt;p&gt;The next big release 3.0.0 was in November. We added support for realm as database backend (e. g. for iOS), allowed to exchange the MediaStore, calculate power levels and many more. Some APIs in trixnity-client has been purified, because I improved the StateFlowCache. The developer experience has increased even more with 3.1.0 in December. It adds a completely new Timeline abstraction.&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Matrix Community Summit 2022 Berlin&lt;&#x2F;h2&gt;
&lt;p&gt;The Matrix Community Summit 2022 in Berlin was a conference entirely focused on Matrix. &lt;a href=&quot;https:&#x2F;&#x2F;cfp.summit2022.matrixmeetup.de&#x2F;matrix-summit-conference-2022&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;jaller94 contributes&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Where do I even begin? This has been such a great and fun event.&lt;br&#x2F;&gt;On the last days of August more than 60 Matrix enthusiasts from various countries met at c-base in Berlin.&lt;br&#x2F;&gt;We started with a Barcamp day for attendees to discuss spontaneous topics.&lt;br&#x2F;&gt;The highlight have been two days with 36 presentations and workshops on three stages.&lt;br&#x2F;&gt;Check out the schedule, if you want to contact some of the speakers: &lt;a href=&quot;https:&#x2F;&#x2F;cfp.summit2022.matrixmeetup.de&#x2F;matrix-summit-conference-2022&#x2F;schedule&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;cfp.summit2022.matrixmeetup.de&#x2F;matrix-summit-conference-2022&#x2F;schedule&#x2F;&lt;&#x2F;a&gt;&lt;br&#x2F;&gt;Thanks to all attendees for the great conversations we&#x27;ve had! Thanks to all presenters for a schedule full of Matrix knowledge! Thanks to the c-base hackerspace for hosting us! Thanks to the sponsors for paying for the food and drinks!&lt;&#x2F;p&gt;
&lt;p&gt;For those who missed this in-person event or wish to revive some of the memories, we&#x27;re publishing interviews with some community members as a podcast.&lt;br&#x2F;&gt;In total there are 2 English and 6 German episodes, the last one being published on Fri, 3rd Jan 2023.&lt;br&#x2F;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;anchor.fm&#x2F;matrix-podcast0&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;anchor.fm&#x2F;matrix-podcast0&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Nheko&lt;&#x2F;h2&gt;
&lt;p&gt;The motivation behind the project is to provide a native desktop app for Matrix that feels more like a mainstream chat app (Element, Telegram etc) and less like an IRC client. &lt;a href=&quot;https:&#x2F;&#x2F;nheko-reborn.github.io&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Nico reports&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;What a year, eh? I don&#x27;t know if as much happened in your lives as did in mine, but certainly stuff happened! And that certainly was the case for Nheko too! There have been plenty of new and returning faces. Before I go into more detail what happened with Nheko, I&#x27;d like to prefix it with a thank you to some specific people, who noticeably contributed to Nheko in the last year on a regular basis:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;LorenDB, who while causing us a lot of trouble by breaking stuff, also tackles many of the more annoying issues and brings a lot of creativity to problems and their solutions.&lt;&#x2F;li&gt;
&lt;li&gt;MaltE, who despite being usually busy, reworked most of our mobile UI and gave Nheko a pretty bubble mode.&lt;&#x2F;li&gt;
&lt;li&gt;q234rty, who seems to have a solution to every issue and even upstreamed some of those patches to the KDE Qt collection, so that some of the annoying Wayland bugs won&#x27;t bother many users anymore.&lt;&#x2F;li&gt;
&lt;li&gt;Linerly, Priit and many of the other translators, who tirelessly keep our translations up to date, even if they have to re-translate whole paragraphs after I fixed a single comma...&lt;&#x2F;li&gt;
&lt;li&gt;And many of the other contributors and the community, who report and fix issues as well as just make the whole journey more enjoyable!&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Now with that out of the way, where are we going?&lt;&#x2F;p&gt;
&lt;p&gt;Nheko got plenty of new features, even though some of them I tried hard to avoid for a long time! For example you can now send confetti. I prefer to toggle that off, because I think it can be distracting, but it is undeniable, that it looks very fun and fun is very important!&lt;&#x2F;p&gt;
&lt;p&gt;Another one is threads. Nheko now supports them, but I would have liked for threads to work differently. Some features, like notification counts for each thread, we skip out on, since it seems very hard to support well. Instead we integrate threads into the timeline and you can filter them out. Ideally threads would behave like dynamic subrooms, with titles and listed below the room list entry, but that seems not doable with the current design of threads in the specification. So we chose a design, that is still useful, but doesn&#x27;t run into such limitations.&lt;&#x2F;p&gt;
&lt;p&gt;Apart from that we really started investing into our communities support (which is how we call our UX for spaces). While showing communities as a filter is already useful, you can now also modify those filters. Nheko now shows you notification counts, suggests you to join the space for a community (if possible) and allows you to apply permission changes across the whole community.&lt;&#x2F;p&gt;
&lt;p&gt;Speaking of permissions, we invested a lot into improving our management and moderation tooling. With this you can now fine tune join rules for a room (with toggles for knocking, restricted joins and more), edit the permissions using a role-like interface, edit the addresses for a room, edit your sticker packs and more. You can also knock on rooms now, which is a way to request access to a room without it having to be public or manually messaging someone for an invite and we can now show policy lists.&lt;&#x2F;p&gt;
&lt;p&gt;Oh, one thing that definitely deserves a mention, we had our first official CVE! Now, you might think that is not worth celebrating, but it does feel like Nheko is growing up. Partially this is thanks to Github making it easy to file CVEs for security issues though. Who would have thought we ever would have our own CVE entry? We certainly need to improve our test coverage and hardening against such issues, though to be fair in this case I pretty much already wrote a comment about what the problem would be, but just didn&#x27;t fix it properly... We however are also constantly improving our encryption in general, so hopefully it only becomes more secure from now on. Part of that is fallback keys, which make it easier to come back after a long period away.&lt;&#x2F;p&gt;
&lt;p&gt;Nheko now also evaluates notifications locally. This is especially great for encrypted rooms, since before the server mostly guessed what should notify or not. But it also means you get highlighted when mentioned now, which makes it much easier to find where you were notified. We also now have a line where you last left off reading the room, which is much more useful than I initially wanted to admit and I use it a lot. We also have experimental support for MSC3664, which allows us to hopefully eventually get rid of reply fallbacks, by evaluating the reply relation instead of relying on every message to include the name of who you replied to for highlight purposes...&lt;&#x2F;p&gt;
&lt;p&gt;We also improved performance, however as always anytime you do, you end up adding features, that slow you down again. However current Nheko should still start up significantly faster than 2021 Nheko.&lt;&#x2F;p&gt;
&lt;p&gt;Speaking of improvements, we have made a few for macOS this year. Apple Silicon is now natively supported, so Rosetta is no longer needed to run Nheko. This means improved battery life and performance! At least on Apple Silicon, launching Nheko on macOS should now be roughly as fast as Alt+Tab-ing to another window. Additionally, you can now reply to messages straight from the notification in the Notification Center.&lt;&#x2F;p&gt;
&lt;p&gt;One thing I didn&#x27;t imagine we would ever have is a D-Bus API. This means you now can do some limited interactions with Nheko via the D-Bus API, like switching rooms using KRunner or Rofi! For FOSDEM we also added some support for widgets, because I wanted to be able to participate in the online FOSDEM without running a second client. This however is an incomplete experience, since... why run a browser in Nheko, if you have a perfectly capable browser client you can use for widgets? Nheko just shows you how to open a widget in a browser.&lt;&#x2F;p&gt;
&lt;p&gt;As already mentioned, we also significantly improved our support for the PinePhone. We now have a bubble layout, which looks better on mobile than the normal layout without bubbles. There has been significant work to make dialogs fit on mobile screens as well as allowing interaction using touch in almost all places. If you want to play with a PinePhone, definitely give Nheko a try and tell us, how you like it!&lt;&#x2F;p&gt;
&lt;p&gt;You might have noticed that we spent a lot of work on moderation tooling and that is probably something we will continue. I have a lot of ideas on how to integrate policy lists with spaces as well as using them to auto-decline invites, automatically ban people and more. How cool would it be if you could ban people community wide using a &amp;quot;banned members&amp;quot; editor in Nheko that is compatible with Mjolnir? And have permissions in spaces apply globally, maybe with some tweaks based on room types? There are a lot of cool ideas out there and we will certainly be experimenting with them.&lt;&#x2F;p&gt;
&lt;p&gt;Another topic will be building out our call support. I want to be able to use Nheko for my gaming sessions. Just drop into a voice chat room and talk to each other. Maybe do my work conference calls, including presentations as well or do remote help for my parents and grandparents over Matrix! We also really need to support calls on other platforms.&lt;&#x2F;p&gt;
&lt;p&gt;Which brings us on the last big goal: We do want to eventually switch to Qt6. We did have a branch testing out how difficult that would be and it was doable, but we were mostly blocked on GStreamer not supporting Qt6 yet. This is fixed in GStreamer 1.24, which should be out soon, so this is probably the time we can start looking into finalizing the port. Qt6 will fix A LOT of Wayland issues and give us a lot of new optimization opportunities. Maybe that is the year we can get below 100MB RAM usage on my ever growing account and make every room switch feel instant.&lt;&#x2F;p&gt;
&lt;p&gt;Well... this was a bit of a long one? Certainly it wasn&#x27;t the work of one person. The Nheko community seems to just be constantly growing and there are so many people contributing, that it really makes me love open source! Thank you! All of you! It has been a great year (Nheko wise) and I hope 2023 becomes even greater! Have a great year!&lt;&#x2F;p&gt;
&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;neko.dev_qiXeJLZOYzYGDltLQptSTZxb.png&quot; style=&quot;display: inline-block;&quot;&#x2F;&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Timo Kösters&#x27; year in Matrix&lt;&#x2F;h2&gt;
&lt;p&gt;Timo gives an update about Conduit and their year on Matrix. &lt;a href=&quot;https:&#x2F;&#x2F;conduit.rs&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Timo on Conduit ⚡️ tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Hello everyone, I am the maintainer of the Conduit Matrix project and this year my goal was to make Conduit more reliable. I&#x27;ve released three major updates this year, going from v0.2 to v0.5:&lt;&#x2F;p&gt;
&lt;p&gt;For example, the admin room received a lot of love this year. It&#x27;s a Conduit-specific way of controlling the Matrix server using a chat bot. Commands are parsed using &lt;code&gt;clap&lt;&#x2F;code&gt; and perform actions like creating or deactivating users, adding appservices or listing rooms.&lt;&#x2F;p&gt;
&lt;p&gt;Conduit now supports RocksDB as the database, which is better than the previous ones, but still has some problems. I have worked on a new database abstraction layer that would allow using PostgreSQL in the future.&lt;&#x2F;p&gt;
&lt;p&gt;I have also worked on all sorts of bug fixes. End-to-end encrypted chats work reliably, Server ACLs are respected, the user directory hides private users and so on.&lt;&#x2F;p&gt;
&lt;p&gt;These and many, many other fixes allow me to use Conduit for most of my Matrix interactions now and most of the issues I encounter are client and not server bugs, see &lt;a href=&quot;https:&#x2F;&#x2F;conduit.rs&#x2F;issues&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;conduit.rs&#x2F;issues&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;My goal for 2023 is adding all the modern features we need to be competitive with Synapse, like threading, space exploration, registration tokens and so on.&lt;&#x2F;p&gt;
&lt;p&gt;I also want to contribute to the Matrix spec and implement my ideas in Conduit, for example changing state resolution to speed up room joining.&lt;&#x2F;p&gt;
&lt;p&gt;I can&#x27;t promise to finish all of this next year. I will finish my Bachelor&#x27;s degree next year and for now I&#x27;m a full time student working on these things in the remaining time.&lt;&#x2F;p&gt;
&lt;p&gt;Thanks to all my individual sponsors this year and to FUTO ( &lt;a href=&quot;https:&#x2F;&#x2F;futo.org&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;futo.org&#x2F;&lt;&#x2F;a&gt; ) for making this worth it financially as well. &lt;a href=&quot;https:&#x2F;&#x2F;liberapay.com&#x2F;timokoesters&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https:&#x2F;&#x2F;liberapay.com&#x2F;timokoesters&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Sticker&#x2F;emoji pack collection&lt;&#x2F;h2&gt;
&lt;p&gt;Tastytea maintains a collection of MSC2545 sticker pack rooms and gives an update about how the experience has been so far. &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;%23stickers-and-emojis%3Atastytea.de&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;tastytea mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;At the end of 2021 i made a room with a Blobcat emoji pack, and since i could
not find a place to announce it, i started &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;%23stickers-and-emojis%3Atastytea.de&quot;&gt;a space to collect rooms with
sticker&#x2F;emoji packs&lt;&#x2F;a&gt;.
It began with 3 rooms and under 500 images, but with
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;2545&quot;&gt;MSC2545&lt;&#x2F;a&gt; getting
implemented in more and more clients in 2022, the space quickly grew and we&#x27;re
now at 7 rooms with more than 30 packs containing over 2000 stickers and emojis!
&lt;img data-mx-emoticon height=&quot;32&quot; src=&quot;&#x2F;blog&#x2F;img&#x2F;pixie.town_i2OfzCDAFTltAQ1BlFLITwjx.png&quot; alt=&quot;Blobcat tooting a party horn&quot; style=&quot;height: 2em;&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;One thing i didn&#x27;t anticipate was that people started to request new stickers
and sometimes submitted their own. We&#x27;re not just collectors anymore but also
the prime source for Blobcats on Matrix!&lt;sup&gt;[citation needed]&lt;&#x2F;sup&gt;
If you have a sticker room too, please drop by our lobby and tell us
about it so we can list it and make it known to more people! Do you make your
own Blobcats or want to learn how to? Visit &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;%23tastytea_emojis%3Atastytea.de&quot;&gt;my
room&lt;&#x2F;a&gt;
so we can spread the blobby joy together! &lt;img data-mx-emoticon height=&quot;32&quot; src=&quot;&#x2F;blog&#x2F;img&#x2F;pixie.town_A5gZTcUCMSFX0H2ag1kOVkgw.png&quot; alt=&quot;Blobcat holding heart in its paws&quot; style=&quot;height: 2em;&quot;&#x2F;&gt;&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Meetups in Berlin&lt;&#x2F;h2&gt;
&lt;p&gt;Berlin has a vivid Matrix community with not only one, but two Matrix meetups.&lt;&#x2F;p&gt;
&lt;p&gt;jaller94 tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Berlin has a vivid Matrix community with not only one, but two Matrix meetups.&lt;&#x2F;p&gt;
&lt;p&gt;Once a month, the Matrix User Meetup Berlin (MUMB) invites people to chat about Matrix and meet other users.&lt;br&#x2F;&gt;In summer this exchange of ideas and starting points into Matrix was sometimes combined with food from the BBQ grill.&lt;br&#x2F;&gt;For their upcoming events in 2023, check out the room &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#mumb:c-base.org&quot;&gt;#mumb:c-base.org&lt;&#x2F;a&gt;. It takes place at c-base on the first Wednesday of a month.&lt;br&#x2F;&gt;Thanks to the organiser &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;@saces:c-base.org&quot;&gt;saces&lt;&#x2F;a&gt; for bringing people together!&lt;&#x2F;p&gt;
&lt;p&gt;Furthermore, we have the Berliner Matrix Salon 🍷 (previously called Matrix Meetup Berlin, which made it hard to tell apart from the MUMB).&lt;br&#x2F;&gt;In the first half of 2022 we had regular meetups for developers and server admins to talk about their Matrix projects. This meetup eventually led to the Matrix Community Summit in August.&lt;br&#x2F;&gt;We still meet infrequently to discuss our projects and what public events we could host next. We&#x27;d love to host a series of presentations at various offices which also appeal to an audience outside the Matrix community (e.g. education, public sector and health care which have a growing Matrix adoption in Germany). Ping me or &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;@yan:datanauten.de&quot;&gt;Yan&lt;&#x2F;a&gt;, if you want to help by being a presenter, have access to an office or know of a particular audience in Berlin to bring Matrix to.&lt;br&#x2F;&gt;The room is &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#matrix-berlin:matrix.org&quot;&gt;#matrix-berlin:matrix.org&lt;&#x2F;a&gt;. Feel free to ask when we&#x27;re meeting next.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Sailtrix&lt;&#x2F;h2&gt;
&lt;p&gt;Sailtrix is a Matrix client for SailfishOS. &lt;a href=&quot;https:&#x2F;&#x2F;forum.sailfishos.org&#x2F;t&#x2F;sailtrix-matrix-client-supporting-end-to-end-encryption&#x2F;7199&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;HengYeDev contributes&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;The following major changes have been applied to Sailtrix in the year 2022, in no particular order:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Basic emoji verification&lt;&#x2F;li&gt;
&lt;li&gt;SSO Login&lt;&#x2F;li&gt;
&lt;li&gt;Create room&lt;&#x2F;li&gt;
&lt;li&gt;Integration with Sailfish.Share API&lt;&#x2F;li&gt;
&lt;li&gt;Room searching UI&lt;&#x2F;li&gt;
&lt;li&gt;and numerous cosmetic improvements and bugfixes&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;This year in NeoChat&lt;&#x2F;h2&gt;
&lt;p&gt;NeoChat is a client for Matrix, the decentralized communication protocol for instant messaging. It is a fork of Spectral, using KDE frameworks, most notably Kirigami, KConfig and KI18n. &lt;a href=&quot;https:&#x2F;&#x2F;invent.kde.org&#x2F;network&#x2F;neochat&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Tobias Fella mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;It&#x27;s been an interesting year, that&#x27;s for sure :)&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s start with some statistics:&lt;&#x2F;p&gt;
&lt;p&gt;Some quick git magic shows 689 commits for this year so far; Roughly 200 of those were for translations.&lt;&#x2F;p&gt;
&lt;p&gt;On the topic of translations, NeoChat is currently (almost) fully translated into 17 languages, with 17 others being in progress.&lt;&#x2F;p&gt;
&lt;p&gt;One of the major areas of work this year - like last year - has been end-to-end-encryption, which, as of last week, is released in libQuotient and NeoChat. This means that you can now read new messages and verify your session with other devices. You won&#x27;t yet be able to recover from (most) undecryptable messages, we&#x27;re working on implementing those parts of the matrix specification.&lt;&#x2F;p&gt;
&lt;p&gt;NeoChat&#x27;s user interface saw major improvements this year:&lt;&#x2F;p&gt;
&lt;p&gt;The message list has been improved to be less buggy, adapt better to different form-factors and the different appearance options NeoChat offers, like the &amp;quot;compact&amp;quot; message style.&lt;&#x2F;p&gt;
&lt;p&gt;The compact style also recently gained a sibling in the equivalent style for the room list, which makes the list more compact by not showing the last message of the room.&lt;&#x2F;p&gt;
&lt;p&gt;Input handling has been overhauled, as a result user mentions are now highlighted while writing a message, making them more reliable and appear less magic to the user.&lt;&#x2F;p&gt;
&lt;p&gt;More new features include basic support for room search, improved emoji and reaction handling (including better emoji data, search and a skin tone selector), basic developer tools, support for showing and responding to polls and an improved account switcher. One of my personal highlights is support for collapsing large amounts of state events, which makes low-activity rooms significantly more pleasant to use.&lt;&#x2F;p&gt;
&lt;p&gt;On the moderation side, we&#x27;ve implemented support for reporting messages to the homeserver administrators and improved the kicking and banning support.&lt;&#x2F;p&gt;
&lt;p&gt;Progress on the space support has unfortunately been slower than hoped, with the only result of the GSoC project being the space list that is shown at the top of the room list. Space support will be one of the areas to work on in 2023.&lt;&#x2F;p&gt;
&lt;p&gt;Plasma users have gained some nice integration points with their desktop: File uploads and downloads will now be shown in plasma&#x27;s job tracker, there is now a D-Bus runner for opening rooms, and you can share messages with purpose-enabled apps.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, we&#x27;ve been working on improving NeoChat&#x27;s settings. Visually, the application and room settings have been ported to newer components that look significantly nicer, especially on mobile devices. We&#x27;ve also added settings for configuring room visibility, join rules and notifications and added support for configuring a proxy to use when connecting to a homeserver.&lt;&#x2F;p&gt;
&lt;p&gt;In terms of contributors, this year was better than last year, with several people becoming active in development and bug reporting. We&#x27;re especially excited about having been able to add James Graham as a third maintainer for NeoChat after all his work, focusing mostly on NeoChat&#x27;s front-end and settings.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;imbev&#x27;s year in Matrix&lt;&#x2F;h2&gt;
&lt;p&gt;imbev gives an update about what they have been up to this year.&lt;&#x2F;p&gt;
&lt;p&gt;imbev tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;This past year I have worked on several projects using Matrix:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;imbev&#x2F;matrix-rss-bridge&quot;&gt;matrix-rss-bridge&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is a bot that can be configured to watch RSS&#x2F;Atom feeds and relay to Matrix rooms. It is written in Python, configured with a single &lt;code&gt;config.toml&lt;&#x2F;code&gt;, and licensed under the GPLv3.&lt;&#x2F;li&gt;
&lt;li&gt;I don&#x27;t actively work on it, however I will review and merge contributions that improve the project.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;imbev&#x2F;matrix-debate-bot&quot;&gt;matrix-debate-bot&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is a bot that &amp;quot;moderates&amp;quot; discussion in Matrix rooms. It does nothing more than provide a signal every 2 minutes. Also in Python, interacted with via &amp;quot;command&amp;quot; messages, and licensed under the GPLv3.&lt;&#x2F;li&gt;
&lt;li&gt;Same thing as the previous project :)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;imbev&#x2F;matrix-quicksetup&quot;&gt;matrix-quicksetup&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is a docker compose file and a few config files to help setup a Matrix homeserver and client. The homeserver setup is Conduit, and the client is Cinny. I don&#x27;t advise that anyone use this in a serious deployment, but if you want to quickly test Matrix entirely on your local machine, this may be useful.&lt;&#x2F;li&gt;
&lt;li&gt;Same as previous&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;imbev&#x2F;simplematrixbotlib&quot;&gt;simplematrixbotlib&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is an easy to use bot library for the Matrix ecosystem written in Python. Having taken ownership of the project, I maintain the project with help from @kim:sosnowkadub.de, @moanos:hyteck.de, and others. Thank you for your contributions!&lt;&#x2F;li&gt;
&lt;li&gt;While I anticipate releasing version 3 of simplematrixbotlib, this next project has captured my focus recently.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;imbev&#x2F;matrix-social&quot;&gt;matrix-social&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;matrix-social is a Matrix &amp;quot;Social Media&amp;quot; client. It is a webapp written in Rust using WASM, Yew, and the Matrix Rust SDK. Inspired by the design of Reddit, matrix-social will provide a similar experience, but based entirely upon Matrix. By providing seamless interoperability with Matrix chat clients, matrix-social will extend the Matrix ecosystem without dividing it. matrix-social currently lacks crucial features that will be added soon.&lt;&#x2F;li&gt;
&lt;li&gt;I actively develop matrix-social and will be doing so for the foreseeable future. At the moment, I am porting the styling from the Bulma CSS framework to TailwindCSS for greater control. If you&#x27;d like to try out the current state of matrix-social, &lt;a href=&quot;https:&#x2F;&#x2F;imbev.codeberg.page&#x2F;matrix-social&#x2F;&quot;&gt;https:&#x2F;&#x2F;imbev.codeberg.page&#x2F;matrix-social&#x2F;&lt;&#x2F;a&gt; is available. Join us in the Matrix room &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#matrix-social:matrix.org&quot;&gt;#matrix-social:matrix.org&lt;&#x2F;a&gt; !&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Kitsune&#x27;s year in Matrix&lt;&#x2F;h2&gt;
&lt;p&gt;Kitsune, one of the Spec Core Team members and maintainer of the Quotient client for Matrix, gives an update about their work this year as well as some new projects.&lt;&#x2F;p&gt;
&lt;p&gt;kitsune mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;This year hasn&#x27;t been very productive for me (not in Matrix at least) but a few things are worth a mention.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;quotient-im&quot;&gt;Quotient&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;This year I finally got to diving into the (new) E2EE code for libQuotient that NeoChat fellows started writing back in 2021, and was quite happy to end up collaborating with &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;@tobiasfella:kde.org&quot;&gt;Tobias Fella&lt;&#x2F;a&gt; on making it even better, all the way to merging and releasing way overdue libQuotient 0.7.0. The best news for me in all this was not even getting E2EE to its first actually usable release but the fact that libQuotient is no more a one man show. And now that there&#x27;s yet another libQuotient-based client (with much more solid traction than any client before), there&#x27;s hope that the project will move on at a somewhat steadier pace.&lt;&#x2F;p&gt;
&lt;h3&gt;Spec Core Team&lt;&#x2F;h3&gt;
&lt;p&gt;I did my share of MSC reviews (much fewer than I&#x27;d like to) and carried on with my role of ensuring Element doesn&#x27;t throw too much weight behind its contributions (although there are a few other people in SCT who seriously push for neutrality in things we work on; so that role is rather formal). One thing that I unfortunately did not find enough time to help with this year but I&#x27;m sure we&#x27;ll make it happen in 2023 is to move our API definitions from Swagger (v2) to OpenAPI v3, ditching all the Swagger extensions we had to add - thanks to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;zecakeh&quot;&gt;Kevin&lt;&#x2F;a&gt; for driving this home.&lt;&#x2F;p&gt;
&lt;h3&gt;CLUP.chat&lt;&#x2F;h3&gt;
&lt;p&gt;About a year ago I was contacted by folks who wanted to use Matrix as a backend to bridge WhatsApp, Signal and Telegram for scout (and other) communities in Germany and asked me to be their technical advisor. Less than a year later we went live (you can connect the groups &lt;a href=&quot;https:&#x2F;&#x2F;clup.chat&#x2F;&quot;&gt;here&lt;&#x2F;a&gt;), soon after ran into rate-limiting issues &lt;em&gt;outside&lt;&#x2F;em&gt; of Matrix (centralised networks, heh...), did the homework, and now busy making the whole thing worth charging money for. The backend is almost entirely vanilla code for Synapse and Mautrix-based bridges, plus a small website and a non-Matrix bot to onboard people.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Jae&#x27;s year of Matrix&lt;&#x2F;h2&gt;
&lt;p&gt;Jae gives an update about what they worked on this year.    &lt;a href=&quot;From&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Jae (Beep) shares&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Yet another year well spent on Matrix, which was a bit more &lt;em&gt;dynamic&lt;&#x2F;em&gt; than the previous ones.&lt;br&#x2F;&gt;
From mitigating spam attacks to creating brand-new projects and also contributing to others, there&#x27;s no shortage of news.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;sr.ht&#x2F;~jae&#x2F;cert-monitor&#x2F;&quot;&gt;cert-monitor&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;cert-monitor&lt;&#x2F;code&gt; is a small program made entirely in vanilla Python that checks the validity of your SSL certificates and warn you when they are about to expire.&lt;br&#x2F;&gt;
The idea for it originated in a Matrix room in which the other administrator would usually forget to renew SSL (bringing down their homeserver).&lt;br&#x2F;&gt;
The software can send notifications to e-mails and Matrix and other methods are in the works like NTFy (but a bit on stale since Matrix support was the main goal).&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3868&quot;&gt;MSC3868: Room Contribution&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;The MSC3868 (currently still a draft) is a spec proposal by me and Aminda to add a way for rooms to advertise easily official links like code repositories, ways to contribute to translations, donations and more but only showing to users inside the room.&lt;br&#x2F;&gt;
The start of it is that we noticed that usually users don&#x27;t even bother reading the topic&#x2F;MOTD of the room, which renders putting links inside of it just about useless in most cases.&lt;br&#x2F;&gt;
The proposal is still being refined, but the big lines are there already!&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~jae&#x2F;gh-bot&quot;&gt;gh-bot&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;gh-bot&lt;&#x2F;code&gt; is a small bot made to be used with the webhook function of various Git forges (namely GitHub, GitLab and Gitea&#x2F;Forgejo).&lt;br&#x2F;&gt;
The bot itself is pretty simple and will just output new commits, new stars and build statuses in all the rooms the bot is.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~jae&#x2F;hsl-matrix-notifier&quot;&gt;hsl-matrix-notifier&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;hsl-matrix-notifier&lt;&#x2F;code&gt; has a bit of an exotic use case: it is made to track problems with the Helsinki public transports company and warn about potential disruptions.&lt;br&#x2F;&gt;
For now, it is very basic and is still being worked on to have a better version (like if no news, it will still post old stuff when I would like in term something more like an RSS feed).&lt;br&#x2F;&gt;
When I move, I&#x27;ll probably spin off this bot to make a local version or even build something, so it can be configured by city.&lt;&#x2F;p&gt;
&lt;hr&#x2F;&gt;
&lt;p&gt;In the end, this year has been a very dynamic one in the Matrix world, and I can&#x27;t wait to see what is coming next.&lt;br&#x2F;&gt;
For my part, I don&#x27;t intend to stop there, and I have even more Matrix related projects, so stay tuned!&lt;br&#x2F;&gt;
Oh also, I almost forgot, happy new year Matrixians, stay awesome!&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Cinny&lt;&#x2F;h2&gt;
&lt;p&gt;Cinny is a Matrix client for instant messaging. Our main goal is to make the best UI&#x2F;UX so that less technical folks can easily adopt Matrix. &lt;a href=&quot;https:&#x2F;&#x2F;cinny.in&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;ajbura shares&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Cinny is a Matrix client for instant messaging. Our main goal is to make the best UI&#x2F;UX so that less technical folks can easily adopt Matrix.&lt;br&#x2F;&gt;2022 has been really productive year for Cinny, we have landed Full Spaces support, Room settings, Custom emojis and stickers, Session verification and cross-signing, and so many cool features.&lt;&#x2F;p&gt;&lt;p&gt;Lately, we have been working on a design system for Cinny and it is almost ready to release. Our short-term goals for 2023 would be to incorporate the design system into Cinny, and convert the code to TypeScript both of which will greatly improve the developer and user experience.&lt;&#x2F;p&gt;&lt;p&gt;You can join &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#cinny-space:matrix.org&quot;&gt;Cinny space&lt;&#x2F;a&gt; to talk about it or browse &lt;a href=&quot;https:&#x2F;&#x2F;cinny.in&quot;&gt;https:&#x2F;&#x2F;cinny.in&lt;&#x2F;a&gt; &lt;&#x2F;p&gt;
&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;matrix.org_nIQXMyDqrhZmlzaPlmcPHPKV.png&quot; style=&quot;display: inline-block;&quot;&#x2F;&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;2022 year in Nyatrix&lt;&#x2F;h2&gt;
Nyaoori gives us an update about their various Matrix related projects.
&lt;p&gt;Nyaaori ⚛️ tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
      &lt;ul&gt;
        &lt;li&gt;Initial workings on spec.cat
          &lt;ul&gt;
            &lt;li&gt;Intended to be a community-driven extension specification to allow for easier collaboration and client&#x2F;server integration prior to submitting an MSC&lt;&#x2F;li&gt;
            &lt;li&gt;Would allow for finalising community things even if they get little to no attention from SCT&lt;&#x2F;li&gt;
            &lt;li&gt;Eventually will take over maintenance of Catalyst&lt;&#x2F;li&gt;
          &lt;&#x2F;ul&gt;
        &lt;&#x2F;li&gt;
        &lt;li&gt;Initial work on decentralised trust&#x2F;moderation system
          &lt;ul&gt;
            &lt;li&gt;Should work on under any federated system, not just matrix&lt;&#x2F;li&gt;
            &lt;li&gt;Intended to reduce workload on moderators&#x2F;admins&lt;&#x2F;li&gt;
            &lt;li&gt;Makes use of a web of trust system, with each user or server being their own center of trust&lt;&#x2F;li&gt;
          &lt;&#x2F;ul&gt;
        &lt;&#x2F;li&gt;
        &lt;li&gt;Catalyst (fork of conduit) progress
          &lt;ul&gt;
            &lt;li&gt;Cacophony
              &lt;ul&gt;
                &lt;li checked=&quot;false&quot;&gt;
                  &lt;p&gt;Implementation of Discord C2S inside a matrix homeserver&lt;&#x2F;p&gt;
                &lt;&#x2F;li&gt;
                &lt;li checked=&quot;false&quot;&gt;
                  &lt;p&gt;Marginally modified Discord web client can connect to it&lt;&#x2F;p&gt;
                &lt;&#x2F;li&gt;
              &lt;&#x2F;ul&gt;
            &lt;&#x2F;li&gt;
            &lt;li&gt;Partial Dendrite API support
              &lt;ul&gt;
                &lt;li checked=&quot;false&quot;&gt;
                  &lt;p&gt;Allows using TARDIS&lt;&#x2F;p&gt;
                &lt;&#x2F;li&gt;
              &lt;&#x2F;ul&gt;
            &lt;&#x2F;li&gt;
            &lt;li&gt;Room V10 support
              &lt;ul&gt;
                &lt;li checked=&quot;false&quot;&gt;
                  &lt;p&gt;=&amp;gt; Upstreamed to Conduit&lt;&#x2F;p&gt;
                &lt;&#x2F;li&gt;
              &lt;&#x2F;ul&gt;
            &lt;&#x2F;li&gt;
            &lt;li&gt;Support for private read receipts
              &lt;ul&gt;
                &lt;li checked=&quot;false&quot;&gt;
                  &lt;p&gt;=&amp;gt; Upstream in progress&lt;&#x2F;p&gt;
                &lt;&#x2F;li&gt;
                &lt;li&gt;Partial support for displaying space hierarchies&lt;&#x2F;li&gt;
              &lt;&#x2F;ul&gt;
            &lt;&#x2F;li&gt;
            &lt;li&gt;Backfill to other servers via S2S
              &lt;ul&gt;
                &lt;li checked=&quot;false&quot;&gt;
                  &lt;p&gt;=&amp;gt; Upstream in progress&lt;&#x2F;p&gt;
                &lt;&#x2F;li&gt;
              &lt;&#x2F;ul&gt;
            &lt;&#x2F;li&gt;
            &lt;li&gt;Code refactor alongside Conduit&lt;&#x2F;li&gt;
            &lt;li&gt;Many minor bug fixes
              &lt;ul&gt;
                &lt;li checked=&quot;false&quot;&gt;
                  &lt;p&gt;=&amp;gt; Most upstreamed&lt;&#x2F;p&gt;
                &lt;&#x2F;li&gt;
              &lt;&#x2F;ul&gt;
            &lt;&#x2F;li&gt;
          &lt;&#x2F;ul&gt;
        &lt;&#x2F;li&gt;
        &lt;li&gt;Initial research into designing my own matrix client
          &lt;ul&gt;
            &lt;li&gt;Intended to be extensible&lt;&#x2F;li&gt;
            &lt;li&gt;Plugins&#x2F;extensions should be installable via matrix itself&lt;&#x2F;li&gt;
            &lt;li&gt;Eventually will be spec.cat&amp;apos;s reference client&lt;&#x2F;li&gt;
          &lt;&#x2F;ul&gt;
        &lt;&#x2F;li&gt;
      &lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Ement&lt;&#x2F;h2&gt;
&lt;p&gt;Ement or ement.el is a Matrix client for GNU Emacs, the classic-yet-ever-new text editor and Lisp environment. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;alphapapa&#x2F;ement.el&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;alphapapa contributes&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;alphapapa&#x2F;ement.el&quot;&gt;Ement&lt;&#x2F;a&gt; is a Matrix client for &lt;a href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;software&#x2F;emacs&#x2F;&quot;&gt;GNU Emacs&lt;&#x2F;a&gt;, the classic-yet-ever-new text editor and Lisp environment.  After a couple of years of off-and-on development, 2022 saw the first versioned release, published to &lt;a href=&quot;https:&#x2F;&#x2F;elpa.gnu.org&#x2F;&quot;&gt;GNU ELPA&lt;&#x2F;a&gt;, the official Emacs package repository (so it&#x27;s installable into Emacs &quot;out-of-the-box,&quot; without any additional configuration).
&lt;&#x2F;p&gt;
&lt;p&gt;
This development was enabled by the maturation and publishing of Ement&#x27;s underlying HTTP library, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;alphapapa&#x2F;plz.el&quot;&gt;plz&lt;&#x2F;a&gt;, also to ELPA.  And another library, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;alphapapa&#x2F;taxy.el&quot;&gt;taxy&lt;&#x2F;a&gt;, used in Ement for organizing rooms into meaningful groups for the UI, was also released to ELPA.
&lt;&#x2F;p&gt;
&lt;p&gt;
Along the way, Ement gained useful features like a helpful command menu based on the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;magit&#x2F;transient&quot;&gt;Transient&lt;&#x2F;a&gt; library (the one used in &lt;a href=&quot;https:&#x2F;&#x2F;magit.vc&#x2F;&quot;&gt;Magit&lt;&#x2F;a&gt;, the popular Emacs frontend to git), the ability to show and send images, files, and reactions, read receipts, room directories and searching, an improved notification system, fancy, configurable room grouping provided by &lt;code&gt;taxy&lt;&#x2F;code&gt;, and many other improvements and fixes.
&lt;&#x2F;p&gt;
&lt;p&gt;
As well, although Ement doesn&#x27;t support E2EE natively, users have successfully used it via &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;pantalaimon&quot;&gt;Pantalaimon&lt;&#x2F;a&gt;, the E2EE proxy daemon, allowing Ement to be used with encrypted rooms.
&lt;&#x2F;p&gt;
&lt;p&gt;
Altogether, Ement now provides a stable, reliable client for Emacs users to &quot;jack in&quot; to the Matrix.  Users and interested parties are invited to join the chat room, &lt;code&gt;#ement.el:matrix.org&lt;&#x2F;code&gt;, where users help each other and announcements are made.
&lt;&#x2F;p&gt;
&lt;p&gt;
Looking forward to 2023, it&#x27;s planned to improve support for newer versions of the client-server spec.  Sliding-sync support will be especially helpful for improving initial sync times, and the new event-to-timestamp endpoints will aid in searching room events and paging back in history by date.  As well, the next stable release of Emacs, version 29, will include native SQLite support, and the author looks forward to investigating how that might be helpful for Ement (e.g. caching events locally, similar to Element).
&lt;&#x2F;p&gt;
&lt;p&gt;
And as always, like Emacs, Ement is Free Software, so contributions are welcome.  Feel free to submit bug reports, feature requests, and other feedback on the repo&#x27;s issue tracker and in the chat room.&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Matrix Highlight&lt;&#x2F;h2&gt;
&lt;p&gt;Matrix Highlight is a web annotation tool based on Matrix. It allows you to select and highlight text on webpages, as well as comment on it. Because it&#x27;s built on Matrix, you can keep this information hosted on your own hardware, and highlight pages together with other users. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;DanilaFe&#x2F;matrix-highlight&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Daniel mentions&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Matrix Highlight is a web annotation tool based on Matrix. It allows you to select and highlight text on webpages, as well as comment on it. Because it&#x27;s built on Matrix, you can keep this information hosted on your own hardware, and highlight pages together with other users.&lt;&#x2F;p&gt;
&lt;p&gt;This year, Matrix Highlight switched to manifest V2. This is a browser extension version format supported by Firefox (Chrome too, but not for the web store). Now, you can highlight pages from Firefox! In addition to this, the project switched to using a shadow DOM for styling its UI elements, which makes it significantly less likely to be affected by the style and design of the webpage it&#x27;s running on.&lt;&#x2F;p&gt;
&lt;p&gt;You can find Matrix Highlight on its &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;DanilaFe&#x2F;matrix-highlight&quot;&gt;GitHub page&lt;&#x2F;a&gt; or read about it in the &lt;a href=&quot;https:&#x2F;&#x2F;danilafe.com&#x2F;blog&#x2F;introducing_highlight&#x2F;&quot;&gt;introductory blog post&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;Populus-Viewer&lt;&#x2F;h2&gt;
&lt;p&gt;Populus-Viewer is a social annotation tool, powered by Matrix. It lets you attach Matrix chats to PDFs, images, videos, and audio files. &lt;a href=&quot;https:&#x2F;&#x2F;opentower.github.io&#x2F;populus-viewer&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;gleachkr tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Populus-Viewer is a social annotation tool, powered by Matrix. It lets you attach Matrix chats to PDFs, images, videos, and audio files.&lt;&#x2F;p&gt;&lt;p&gt;It&amp;#x27;s been a big year for populus! Since last January, we&amp;#x27;ve seen huge improvements in usability, appearance, and Matrix feature support, that have taken populus from a fun experiment to a useful tool (though we&amp;#x27;re still considering ourselves in beta). The topline item is that we&amp;#x27;ve achieved our original goal of supporting matrix-powered social annotation of PDFs and audiovisual media. So what&amp;#x27;s left to do?&lt;&#x2F;p&gt;&lt;p&gt;Here are some ideas for the New Year.&lt;&#x2F;p&gt;&lt;ul&gt;&lt;li&gt;Let&amp;#x27;s add support for annotating web files: HTML (out on the web) and WARC (web archives, stored as files on matrix).&lt;&#x2F;li&gt;&lt;li&gt;Let&amp;#x27;s add widget support for populus chats, so you can annotate your documents with all sorts of matrix-powered tools.&lt;&#x2F;li&gt;&lt;li&gt;Let&amp;#x27;s get moving on &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3775&quot;&gt;the&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3752&quot;&gt;social&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3592&quot;&gt;annotation&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3574&quot;&gt;MSCs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;&lt;li&gt;Stickers?&lt;&#x2F;li&gt;&lt;&#x2F;ul&gt;&lt;p&gt;If you&amp;#x27;d like to talk about any of these ideas, or add some of your own, come join us at: &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;%23opentower%3Amatrix.org&quot;&gt;#opentower:matrix.org&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
&lt;!-- Stuff I forgot because I didn&#x27;t tag it... --&gt;
&lt;h2&gt;Aminda&#x27;s matrix update&lt;&#x2F;h2&gt;
&lt;p&gt;Aminda (she&#x2F;they 🏳️‍⚧️ MSC1769|MSC3189) reports&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;so I have been doing&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitea.blesmrt.net&#x2F;mikaela&#x2F;gist&#x2F;commits&#x2F;branch&#x2F;master&#x2F;matrix&quot;&gt;https:&#x2F;&#x2F;gitea.blesmrt.net&#x2F;mikaela&#x2F;gist&#x2F;commits&#x2F;branch&#x2F;master&#x2F;matrix&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.piraattipuolue.fi&#x2F;Pikaviestimet&#x2F;Pikaviestimet&#x2F;commits&#x2F;branch&#x2F;master&#x2F;matrix&quot;&gt;https:&#x2F;&#x2F;git.piraattipuolue.fi&#x2F;Pikaviestimet&#x2F;Pikaviestimet&#x2F;commits&#x2F;branch&#x2F;master&#x2F;matrix&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Mikaela&#x2F;mikaela.github.io&#x2F;commits&#x2F;master&#x2F;blog&#x2F;_posts&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Mikaela&#x2F;mikaela.github.io&#x2F;commits&#x2F;master&#x2F;blog&#x2F;_posts&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Mikaela&#x2F;mikaela.github.io&#x2F;commits&#x2F;master&#x2F;pages&#x2F;matrix.markdown&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Mikaela&#x2F;mikaela.github.io&#x2F;commits&#x2F;master&#x2F;pages&#x2F;matrix.markdown&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Mikaela&#x2F;mikaela.github.io&#x2F;commits&#x2F;master&#x2F;txt&#x2F;matrix.txt&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Mikaela&#x2F;mikaela.github.io&#x2F;commits&#x2F;master&#x2F;txt&#x2F;matrix.txt&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;&lt;&#x2F;blockquote&gt;
&lt;h2&gt;matrix-docker-ansible-deploy&lt;&#x2F;h2&gt;
&lt;p&gt;Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;↗&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Slavi tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;For &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;&quot;&gt;matrix-docker-ansible-deploy&lt;&#x2F;a&gt;, 2022 started with &lt;strong&gt;breaking the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&quot;&gt;Synapse&lt;&#x2F;a&gt; monopoly&lt;&#x2F;strong&gt; by &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#dendrite-support&quot;&gt;adding support&lt;&#x2F;a&gt; for the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;dendrite&quot;&gt;Dendrite&lt;&#x2F;a&gt; Matrix homeserver in early January. This required various internal changes so that the &lt;a href=&quot;https:&#x2F;&#x2F;www.ansible.com&#x2F;&quot;&gt;Ansible&lt;&#x2F;a&gt; playbook would not be Synapse-centric anymore. This groundwork paved the way for continuing in this direction and we &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#conduit-support&quot;&gt;added support&lt;&#x2F;a&gt; for &lt;a href=&quot;https:&#x2F;&#x2F;conduit.rs&#x2F;&quot;&gt;Conduit&lt;&#x2F;a&gt; in August.&lt;&#x2F;p&gt;
&lt;p&gt;When it comes to the &lt;code&gt;matrix-docker-ansible-deploy&lt;&#x2F;code&gt; Ansible playbook, 2022 was the year of the non-Synapse homeserver implementation. In practice, none of these homeserver implementations seem ready for prime-time yet and there is no migration path when coming from Synapse. Having done our job of adding support for these alternative homeserver implementations, we can say that we&#x27;re not getting in the way of future progress. It&#x27;s time for the Dendrite developers to push harder (development-wise) and for the Synapse developers to take a well-deserved long (infinite) break, and we may get to see more people migrating away from Synapse in the next year(s).&lt;&#x2F;p&gt;
&lt;p&gt;Support for the following new &lt;strong&gt;bridges&lt;&#x2F;strong&gt; was added:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#postmoogle-email-bridge-support&quot;&gt;Postmoogle&lt;&#x2F;a&gt; for bi-directional email bridging, which supersedes my old and simplistic &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;devture&#x2F;email2matrix&quot;&gt;email2matrix&lt;&#x2F;a&gt; one-way bridge-bot&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#mautrix-discord-support&quot;&gt;mautrix-discord&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#go-skype-bridge-bridging-support&quot;&gt;go-skype-bridge&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#matrix-appservice-kakaotalk-support&quot;&gt;matrix-appservice-kakaotalk&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Support for the following new &lt;strong&gt;bots&lt;&#x2F;strong&gt; was added:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#buscarron-bot-support&quot;&gt;buscarron bot&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#honoroit-bot-support&quot;&gt;Honoroit bot&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#matrix-registration-bot-support&quot;&gt;matrix-registration-bot&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#matrix-hookshot-bridging-support&quot;&gt;matrix-hookshot&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#maubot-support&quot;&gt;maubot&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Support for the following new &lt;strong&gt;components and services&lt;&#x2F;strong&gt; was added:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#borg-backup-support&quot;&gt;Borg backup&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#cactus-comments-support&quot;&gt;Cactus Comments&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#cinny-support&quot;&gt;Cinny&lt;&#x2F;a&gt; client support&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#ntfy-push-notifications-support&quot;&gt;ntfy&lt;&#x2F;a&gt; notifications&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#matrix-ldap-registration-proxy-support&quot;&gt;matrix-ldap-registration-proxy&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#matrix_encryption_disabler-support&quot;&gt;matrix_encryption_disabler support&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#synapse-s3-storage-provider-support&quot;&gt;synapse-s3-storage-provider&lt;&#x2F;a&gt; to stop the Synapse media store from being a scalability problem. This brought along &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#synapse-container-image-customization-support&quot;&gt;another feature&lt;&#x2F;a&gt; - an easier way to customize the Synapse container image without having to fork and self-build all of it from scratch&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Besides these major user-visible changes, a lot of work also happened &lt;strong&gt;under the hood&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;we made &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#potential-backward-compatibility-break-major-improvements-to-synapse-workers&quot;&gt;major improvements to Synapse workers&lt;&#x2F;a&gt; - adding support for stream writers and for running multiple workers of various kinds (federation senders, pushers, background task processing workers, etc.)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;we &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#backward-compatibility-break-changing-how-reverse-proxying-to-synapse-works---now-via-a-matrix-synapse-reverse-proxy-companion-service&quot;&gt;improved the compatibility of (Synapse + workers) with the rest of the playbook&lt;&#x2F;a&gt; by introducing a new &lt;code&gt;matrix-synapse-reverse-proxy-companion-service&lt;&#x2F;code&gt; service&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;we started &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#the-playbook-now-uses-external-roles-for-some-things&quot;&gt;splitting various Ansible roles out of the Matrix playbook and into independent roles&lt;&#x2F;a&gt; (e.g. &lt;code&gt;matrix-postgres&lt;&#x2F;code&gt; -&amp;gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;devture&#x2F;com.devture.ansible.role.postgres&quot;&gt;com.devture.ansible.role.postgres&lt;&#x2F;a&gt;), which could be included in other Ansible playbooks. In fact, these roles already power a few &lt;strong&gt;interesting other sibling playbooks&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;gitea-docker-ansible-deploy&quot;&gt;gitea-docker-ansible-deploy&lt;&#x2F;a&gt;, for deploying a &lt;a href=&quot;https:&#x2F;&#x2F;gitea.io&#x2F;&quot;&gt;Gitea&lt;&#x2F;a&gt; (self-hosted &lt;a href=&quot;https:&#x2F;&#x2F;git-scm.com&#x2F;&quot;&gt;Git&lt;&#x2F;a&gt; service) server&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;nextcloud-docker-ansible-deploy&quot;&gt;nextcloud-docker-ansible-deploy&lt;&#x2F;a&gt;, for deploying a &lt;a href=&quot;https:&#x2F;&#x2F;nextcloud.com&#x2F;&quot;&gt;Nextcloud&lt;&#x2F;a&gt; groupware server&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;vaultwarden-docker-ansible-deploy&quot;&gt;vaultwarden-docker-ansible-deploy&lt;&#x2F;a&gt;, for deploying a &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dani-garcia&#x2F;vaultwarden&quot;&gt;Vaultwarden&lt;&#x2F;a&gt; password manager server (unofficial &lt;a href=&quot;https:&#x2F;&#x2F;bitwarden.com&#x2F;&quot;&gt;Bitwarden&lt;&#x2F;a&gt; compatible server)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;These sibling playbooks co-exist nicely with one another due to using &lt;a href=&quot;https:&#x2F;&#x2F;traefik.io&#x2F;&quot;&gt;Traefik&lt;&#x2F;a&gt; for reverse-proxying, instead of trying to overtake the whole server by running their own &lt;a href=&quot;https:&#x2F;&#x2F;nginx.org&#x2F;&quot;&gt;nginx&lt;&#x2F;a&gt; reverse-proxy. Hopefully soon, the Matrix playbook will follow suit and be powered by Traefik by default.&lt;&#x2F;p&gt;
&lt;p&gt;Last, but not least, to optimize our &lt;a href=&quot;https:&#x2F;&#x2F;etke.cc&#x2F;&quot;&gt;etke.cc managed Matrix server hosting service&lt;&#x2F;a&gt;&#x27;s performance (but also individual Ansible playbook runs for people self-hosting by themselves using the playbook), we&#x27;ve &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;spantaleev&#x2F;matrix-docker-ansible-deploy&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime&quot;&gt;improved playbook runtime 2-5x&lt;&#x2F;a&gt; by employing various Ansible tricks.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2&gt;MTRNord&#x27;s Journey of Matrix 2022&lt;&#x2F;h2&gt;
&lt;p&gt;MTRNord is known for starting way too many interesting projects. Definitely worth checking out!&lt;&#x2F;p&gt;
&lt;p&gt;MTRNord tells us&lt;&#x2F;p&gt;&lt;blockquote&gt;
&lt;p&gt;Since I worked on so many projects this year, I am trying to group these here.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;matrix-art&#x2F;pull&#x2F;121&quot;&gt;Matrix-Art&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Matrix Art was meant to be a Deviantart or Art Station style image gallery using Matrix. This project, as many others of mine, is currently on ice.&lt;&#x2F;p&gt;
&lt;p&gt;It offered profiles, uploading images and comments using Spaces as FS.&lt;&#x2F;p&gt;
&lt;p&gt;You can see the latest version of it at &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;matrix-art&#x2F;pull&#x2F;121&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;matrix-art&#x2F;pull&#x2F;121&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;matrix-moderation-widget&quot;&gt;Matrix Moderation Widget for Mjolnir&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;A widget made to be a companion to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;mjolnir&quot;&gt;Mjolnir&lt;&#x2F;a&gt;. It offers a form input and lists to view the policy lists.&lt;&#x2F;p&gt;
&lt;p&gt;For 2023 this effort is going into the Moderation bot I am currently developing as part of the Matrix Spam ML project. While not being a widget, similar UX decisions are used.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;matrix-fuzz&quot;&gt;Matrix Fuzz&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;A simple fuzzer written in rust to fuzz some endpoints of Synapse.&lt;br&#x2F;&gt;A Fuzzer is essentially a bruteforce approach to finding bugs. Usually by sending pseudo random characters.&lt;&#x2F;p&gt;
&lt;p&gt;As part of running this, I found a few minor verification issues at Synapse:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;13510&lt;&#x2F;li&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;13511&lt;&#x2F;li&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;13512&lt;&#x2F;li&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;13664&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For 2023 the goal is to fuzz more endpoints, especially within the rooms using fuzzed events.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;mrsbfh&quot;&gt;MRSBFH - Matrix-Rust-SDK-Bot-Framework-Helper&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;In 2022, I also worked on further updating &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;mrsbfh&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;mrsbfh&lt;&#x2F;a&gt; which is a command bot framework for the matrix-rust-sdk.&lt;&#x2F;p&gt;
&lt;p&gt;Since then, the SDK massively improved how you interact with the API. Due to this, there are no plans to further develop it as by now the SDK has a sufficient API interface.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;generic-conference-bot&#x2F;tree&#x2F;MTRNord&#x2F;Pretalx&quot;&gt;Generic Conference Bot&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;People likely know the Conference bot from FOSDEM. Back in February, I did work on making it possible to be used more generic without the hard-coded penta integration.&lt;&#x2F;p&gt;
&lt;p&gt;As a result, this branch was created: &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;generic-conference-bot&#x2F;tree&#x2F;MTRNord&#x2F;Pretalx&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;generic-conference-bot&#x2F;tree&#x2F;MTRNord&#x2F;Pretalx&lt;&#x2F;a&gt; It offers a way to easily add new backends and adds a pretalx backend. Due to the changes it has, there is currently no way this is possible to upstream, but maybe it will help someone from the community.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;matrix-spam-ml&quot;&gt;Matrix Spam ML&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;This project is mainly a project to experiment with using Machine Learning for Moderation as a warning system.&lt;&#x2F;p&gt;
&lt;p&gt;As part of this effort, there is currently an RNN model and a BERT model available. The trainingset is public.&lt;&#x2F;p&gt;
&lt;p&gt;For users, there is both an API endpoint for this available and a Matrix Mod Bot in progress.&lt;&#x2F;p&gt;
&lt;p&gt;You can find more about it at https:&#x2F;&#x2F;github.com&#x2F;MTRNord&#x2F;matrix-spam-ml or join the chat at &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#matrix-spam-ml:midnightthoughts.space&quot;&gt;#matrix-spam-ml:midnightthoughts.space&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.nordgedanken.dev&#x2F;MTRNord&#x2F;matrix-faq-rasa&quot;&gt;Matrix Faq Rasa&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;This is a RasaX based FAQ Bot project. The goal is to have a NLP based FAQ bot. It currently is very simple and not finished. The goal for 2023 is to continue working on this and getting it to a stable level where people can contribute to.&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;matrix.turbo.fish&quot;&gt;Matrix.org Zola&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Last but not least, I did kick off the Zola rewrite of Matrix.org together with Thib and jplatte, and a small team of element devs and designers. Please note that this was initiated by the community and still is a community project.&lt;&#x2F;p&gt;
&lt;p&gt;The goal of this rewrite is to move away from Gatsby and rewrite and redesign matrix.org using the zola static page generator.&lt;br&#x2F;&gt;We made great progress this year, but sadly it will take a bit longer before it can be deployed. :) If you want to watch progress, I suggest looking at things labeled with &amp;quot;zola&amp;quot; in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix.org&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3&gt;&lt;a href=&quot;https:&#x2F;&#x2F;miki.community&quot;&gt;Miki - A Matrix Wiki&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Miki is a MediaWiki meant for Matrix. It isn&#x27;t a bridge, but instead the goal is to document projects and history around Matrix. This project aims for 2023 to extend the data, while in 2022 the work was focused around infrastructure.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;That&#x27;s all I know about so far. I hope you had a great year and that the next one will be even better. As you can see, the Matrix community is a riot of colors and seems to grow every year. I absolutely love it!&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>The Matrix Holiday Update 2022</title>
    <published>2022-12-25T00:00:00+00:00</published>
    <updated>2022-12-25T00:00:00+00:00</updated>
    <author>
      <name>
            Matthew Hodgson
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2022/12/25/the-matrix-holiday-update-2022/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2022/12/25/the-matrix-holiday-update-2022/</id>
    <content type="html">&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;2022 has been a rollercoaster of a year for Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;On one hand, the network has doubled in size (44.1M to 80.3M visible matrix IDs). The wider world is having a grand awakening to the importance of decentralisation thanks to the situation at Twitter. We’ve seen an amazing number of major new players entering the Matrix ecosystem: &lt;a href=&quot;https:&#x2F;&#x2F;macaw.social&#x2F;@wongmjane&#x2F;109529583352532543&quot;&gt;Reddit appears to be building out new Chat&lt;&#x2F;a&gt; functionality using Matrix; &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;teamspeak&#x2F;status&#x2F;1589621116032585728&quot;&gt;TeamSpeak announced&lt;&#x2F;a&gt; Matrix-based chat in TS5; &lt;a href=&quot;https:&#x2F;&#x2F;meta.discourse.org&#x2F;t&#x2F;matrix-protocol-for-chat&#x2F;210780&quot;&gt;Discourse&lt;&#x2F;a&gt; is working on adding Matrix support; &lt;a href=&quot;https:&#x2F;&#x2F;www.theregister.com&#x2F;2022&#x2F;06&#x2F;30&#x2F;thunderbird_102&quot;&gt;Thunderbird&lt;&#x2F;a&gt; launched Matrix support; Governments from &lt;a href=&quot;https:&#x2F;&#x2F;gouvernement.lu&#x2F;en&#x2F;actualites&#x2F;toutes_actualites&#x2F;communiques&#x2F;2022&#x2F;11-novembre&#x2F;16-hansen-lancement.html&quot;&gt;Luxembourg&lt;&#x2F;a&gt; to &lt;a href=&quot;https:&#x2F;&#x2F;delta.mil.gov.ua&#x2F;wiki&#x2F;info&#x2F;&quot;&gt;Ukraine&lt;&#x2F;a&gt; have launched their own Matrix-powered chat infrastructure; and hundreds of other organisations ranging from startups to massive private &amp;amp; public sector entities are betting on the protocol. The European Parliament has used Matrix as a proof-point for the viability for communication interoperability between gatekeepers in the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;03&#x2F;29&#x2F;how-do-you-implement-interoperability-in-a-dma-world&quot;&gt;Digital Markets Act&lt;&#x2F;a&gt;. &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;02&#x2F;07&#x2F;hosting-fosdem-2022-on-matrix&quot;&gt;FOSDEM 2022&lt;&#x2F;a&gt; ran smoothly via Matrix with over 23,000 attendees, making it the world&#x27;s largest open source conference (with 70% of attendees using their own servers!). &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;dsam-och-esam-forordar-matrix-for-saker-och-federerad-kommunikation-inom-sveriges-offentliga-sektor&#x2F;&quot;&gt;Sweden&lt;&#x2F;a&gt; has published case studies on the benefits of Matrix for messaging interoperability. Meanwhile existing players like Germany’s BWI have expanded their scope to providing Matrix messaging to the &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;bundesmessenger-is-a-milestone-in-germanys-ground-breaking-vision&#x2F;&quot;&gt;whole German State&lt;&#x2F;a&gt;; Automattic is busy building &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Automattic&#x2F;chatrix&quot;&gt;Matrix plugins&lt;&#x2F;a&gt; for Wordpress; Rocket.Chat launched &lt;a href=&quot;https:&#x2F;&#x2F;rocket.chat&#x2F;press-releases&#x2F;rocket-chat-leverages-matrix-protocol-for-decentralized-and-interoperable-communications&quot;&gt;federation via Matrix&lt;&#x2F;a&gt;, Gematik has been busy progressing their &lt;a href=&quot;https:&#x2F;&#x2F;www.gematik.de&#x2F;anwendungen&#x2F;ti-messenger&quot;&gt;TI Messenger&lt;&#x2F;a&gt; initiative for interoperable messaging within Germany’s healthcare industry, and &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;case-studies&#x2F;tchap&quot;&gt;Tchap&lt;&#x2F;a&gt; in France is continuing to expand.&lt;&#x2F;p&gt;
&lt;p&gt;On the other hand, only a handful of these initiatives have resulted in funding reaching the core Matrix team. &lt;strong&gt;This is directly putting core Matrix development at risk.&lt;&#x2F;strong&gt; We are witnessing a classic tragedy of the commons. We’ve released all the foundational code of Matrix as permissively-licensed open source and got it to the point that anyone can successfully run it at scale themselves. The network is expanding exponentially. But in return, it transpires that the vast majority of these commercial deployments fail to contribute financially to the Matrix Foundation - whether by donating directly or supporting indirectly by working with &lt;a href=&quot;https:&#x2F;&#x2F;element.io&quot;&gt;Element&lt;&#x2F;a&gt;, who fund the vast majority of core Matrix development today.&lt;&#x2F;p&gt;
&lt;p&gt;In short: folks love the amazing decentralised encrypted comms utopia of Matrix.  But organisations also love that they can use it without having to pay anyone to develop or maintain it. &lt;strong&gt;This is completely unsustainable&lt;&#x2F;strong&gt;, and Element is now &lt;em&gt;literally&lt;&#x2F;em&gt; unable to fund the entirety of the Matrix Foundation on behalf of everyone else - and has had to lay off some of the folks working on the core team as a result.&lt;&#x2F;p&gt;
&lt;p&gt;The only viable solution to this is for organisations building on Matrix to contribute to sharing the costs of maintaining Matrix’s core projects.  We made &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;12&#x2F;01&#x2F;funding-matrix-via-the-matrix-org-foundation&quot;&gt;a proposal&lt;&#x2F;a&gt; to address this a few weeks ago, which we’ll iterate on further in the new year to find an approach which both empowers the community and encourages organisations to participate.  In the interim, if you are an organisation who’s building on Matrix and you want the project to continue to flourish, &lt;strong&gt;please&lt;&#x2F;strong&gt; mail &lt;a href=&quot;mailto:funding@matrix.org&quot;&gt;funding@matrix.org&lt;&#x2F;a&gt; to discuss how you can support the foundations that you are depending on.&lt;&#x2F;p&gt;
&lt;p&gt;As a reminder, the work the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;foundation&quot;&gt;Foundation&lt;&#x2F;a&gt; does today for the benefit of the Matrix includes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Publishing the&lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&quot;&gt; Matrix Specification&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Organising the Matrix Spec Core Team, responsible for reviewing and evolving the protocol.&lt;&#x2F;li&gt;
&lt;li&gt;Writing roughly half the Matrix Spec Change &lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&#x2F;proposals&quot;&gt;proposals&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Developing &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&quot;&gt;Synapse&lt;&#x2F;a&gt;, the Python matrix homeserver implementation&lt;&#x2F;li&gt;
&lt;li&gt;Developing &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;dendrite&quot;&gt;Dendrite&lt;&#x2F;a&gt;, the Go homeserver implementation&lt;&#x2F;li&gt;
&lt;li&gt;Developing client SDKs for Web (matrix-js-sdk, matrix-react-sdk), iOS (matrix-ios-sdk), Android (matrix-android-sdk2), Python (matrix-nio)&lt;&#x2F;li&gt;
&lt;li&gt;Developing our next-generation client SDKs (matrix-rust-sdk)&lt;&#x2F;li&gt;
&lt;li&gt;Developing our end-to-end encryption implementations (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.matrix.org&#x2F;matrix-org&#x2F;olm&quot;&gt;libolm&lt;&#x2F;a&gt; in C&#x2F;C++ and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;vodozemac&quot;&gt;vodozemac&lt;&#x2F;a&gt; in Rust)&lt;&#x2F;li&gt;
&lt;li&gt;Developing next-generation end-to-end encryption implementations (&lt;a href=&quot;https:&#x2F;&#x2F;arewemlsyet.com&quot;&gt;MLS&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Developing and evolving additional core functionality in Matrix, including:
&lt;ul&gt;
&lt;li&gt;Account portability&lt;&#x2F;li&gt;
&lt;li&gt;Faster room joins over federation&lt;&#x2F;li&gt;
&lt;li&gt;Sliding Sync for instant client sync&lt;&#x2F;li&gt;
&lt;li&gt;Threads&lt;&#x2F;li&gt;
&lt;li&gt;Rich Text composer components&lt;&#x2F;li&gt;
&lt;li&gt;Spaces&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Developing &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-hookshot&quot;&gt;open source integrations&lt;&#x2F;a&gt; to other products (GitLab, GitHub, JIRA... )&lt;&#x2F;li&gt;
&lt;li&gt;Developing open source bridges to other platforms (IRC, XMPP, Slack, Discord, Telegram, bifrost…)&lt;&#x2F;li&gt;
&lt;li&gt;Developing &lt;a href=&quot;https:&#x2F;&#x2F;arewep2pyet.com&quot;&gt;peer-to-peer Matrix&lt;&#x2F;a&gt; implementations, avoiding the need for servers (and associated data&#x2F;metadata accumulation) entirely&lt;&#x2F;li&gt;
&lt;li&gt;Developing &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;lb&quot;&gt;low-bandwidth Matrix&lt;&#x2F;a&gt; transports&lt;&#x2F;li&gt;
&lt;li&gt;Developing and hosting static Matrix room archives for the wider network (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-static&quot;&gt;matrix-static&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-public-archive&quot;&gt;matrix-public-archive&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Developing and hosting the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&quot;&gt;matrix.to&lt;&#x2F;a&gt; link redirect service&lt;&#x2F;li&gt;
&lt;li&gt;Developing open source authentication mechanisms and integrations for Matrix (&lt;a href=&quot;https:&#x2F;&#x2F;areweoidcyet.com&quot;&gt;OIDC&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Developing decentralised Video&#x2F;VoIP conferencing servers on Matrix (&lt;a href=&quot;https:&#x2F;&#x2F;f297f985.matrix-website.pages.dev&#x2F;blog&#x2F;2022&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2022&#x2F;github.com&#x2F;matrix-org&#x2F;waterfall&quot;&gt;waterfall&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Developing decentralised Video&#x2F;VoIP client components on Matrix (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-js-sdk&#x2F;pull&#x2F;2553&quot;&gt;matrixRTC&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Developing showcase &amp;quot;beyond chat&amp;quot; implementations of Matrix such as &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&quot;&gt;Third Room&lt;&#x2F;a&gt; &lt;&#x2F;li&gt;
&lt;li&gt;Developing moderation tooling and applying it to matrix.org (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;mjolnir&quot;&gt;mjolnir&lt;&#x2F;a&gt; and much more)&lt;&#x2F;li&gt;
&lt;li&gt;Publishing moderation reputation lists for the benefit of the wider community&lt;&#x2F;li&gt;
&lt;li&gt;Developing integration test suites for Matrix compatibility testing (&lt;a href=&quot;https:&#x2F;&#x2F;f297f985.matrix-website.pages.dev&#x2F;blog&#x2F;2022&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2022&#x2F;github.com&#x2F;matrix-org&#x2F;sytest&quot;&gt;sytest&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;complement&quot;&gt;complement&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;trafficlight&quot;&gt;trafficlight&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Developing a reference push notification server (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;sygnal&quot;&gt;sygnal&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Developing a reference identity directory server (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;sydent&quot;&gt;sydent&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Procuring and publishing independent &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;05&#x2F;16&#x2F;independent-public-audit-of-vodozemac-a-native-rust-reference-implementation-of-matrix-end-to-end-encryption&quot;&gt;public audits&lt;&#x2F;a&gt; of Matrix&#x27;s encryption and wider stack&lt;&#x2F;li&gt;
&lt;li&gt;Publishing the matrix.org website and blog&lt;&#x2F;li&gt;
&lt;li&gt;Publishing the weekly &amp;quot;Matrix Live&amp;quot; video podcast&lt;&#x2F;li&gt;
&lt;li&gt;Publishing the weekly &amp;quot;This Week In Matrix&amp;quot; news letter&lt;&#x2F;li&gt;
&lt;li&gt;Organising regular meetups (e.g. &amp;quot;Open Tech Will Save Us&amp;quot;)&lt;&#x2F;li&gt;
&lt;li&gt;Promoting Matrix at open source conferences&lt;&#x2F;li&gt;
&lt;li&gt;Running the matrix.org homeserver&lt;&#x2F;li&gt;
&lt;li&gt;Moderating the matrix.org project rooms&lt;&#x2F;li&gt;
&lt;li&gt;Running free public bridges to networks such as IRC networks and XMPP.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This list is not remotely exhaustive (turns out there are over 240 projects in the matrix.org GitHub org!) but it serves to illustrate the sheer scale of work that the Foundation performs today.  Keeping the core team funded to work on Matrix as our day job is critical for Matrix’s long-term success, and so we &lt;strong&gt;really&lt;&#x2F;strong&gt; hope that organisations depending on Matrix (or passing philanthropists who appreciate Matrix’s value) will drop a line to &lt;a href=&quot;mailto:funding@matrix.org&quot;&gt;funding@matrix.org&lt;&#x2F;a&gt; and help keep the show on the road.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;turbocharging-matrix&quot;&gt;Turbocharging Matrix&lt;&#x2F;h3&gt;
&lt;p&gt;Aside from the nightmares of funding open source software, 2022 has very much been a year of building - focusing on implementing a step change in Matrix’s performance and usability: ensuring that the protocol can punch its weight (and more!) against centralised proprietary alternatives. After all, Matrix clients need to be at least as good as the centralised alternatives in order to get widespread uptake.&lt;&#x2F;p&gt;
&lt;p&gt;This work has ended up taking many forms: on the server-side, Synapse sprouted Rust support to accelerate its hot paths, starting with &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;pull&#x2F;13838&quot;&gt;push rule evaluation&lt;&#x2F;a&gt;. It’s super exciting to see Synapse performance heading into a new era, building on the foundations of what’s become a very mature and stable homeserver implementation.&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile work is in the final stages on “&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;rav&#x2F;proposal&#x2F;faster_joins&#x2F;proposals&#x2F;3902-faster-remote-joins.md&quot;&gt;Faster Joins&lt;&#x2F;a&gt;”, finally letting servers rapidly join rooms over federation by synchronising only the minimal subset of state needed to join, rather than proactively synchronising the room’s full current state.  Faster joins became &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;10&#x2F;18&#x2F;testing-faster-remote-room-joins&quot;&gt;available for testing&lt;&#x2F;a&gt; in Synapse in October, and since then the team has been &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;milestone&#x2F;10&quot;&gt;working through&lt;&#x2F;a&gt; making it support workers and addressing the various edge cases and bugs that have shown up during testing.  Current join performance is a roughly 25x speedup on large rooms, although we’re confident that we can improve this even more, and we’re aiming to land it in time for FOSDEM at the beginning of Feb.&lt;&#x2F;p&gt;
&lt;p&gt;On the client-side, the work to transform Matrix client performance has centred around “&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;kegan&#x2F;sync-v3&#x2F;proposals&#x2F;3575-sync.md&quot;&gt;Sliding Sync&lt;&#x2F;a&gt;” - our entirely new API for synchronising the minimal data to a client needed for it to render its UI, thus making login, launch and sync instant.  Sliding sync (originally called “sync v3”) has been a long time in the making; the API has gone through countless iterations as we worked away throughout 2022 implementing it in real-life clients, and adding all the extensions (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3884&quot;&gt;MSC3884&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3885&quot;&gt;MSC3885&lt;&#x2F;a&gt;) needed to get to parity with sync v2.  The wait has been well worth it, though: &lt;a href=&quot;https:&#x2F;&#x2F;pr9256--matrix-react-sdk.netlify.app&#x2F;&quot;&gt;support&lt;&#x2F;a&gt; in Element Web is in the final stages of development - and moreover the next-generation Element X mobile clients will only speak Sliding Sync.&lt;&#x2F;p&gt;
&lt;p&gt;Element X itself is shaping up to be a showcase of just how snappy and performant Matrix can be: built on matrix-rust-sdk, it uses native Swift UI on iOS&#x2F;macOS and Jetpack Compose on Android to couple together the best possible platform-native user experience with the ultimate underlying native-code SDK implementation, backed by sliding sync. The goal is to be at least as snappy as Telegram, iMessage or WhatsApp (we’ve taken to counting the frames in screen recordings to compare things like time-to-launch and time-to-load scrollback).  Element X is currently in late alpha on iOS, and the hope is to enter public beta in time for FOSDEM.  You can see a sneak peek here of the iPad-style layout (running under macOS) though!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;blog&#x2F;img&#x2F;2022-12-25-elementx.png&quot; alt=&quot;Element X&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Finally, in terms of usability, there have been leaps and bounds forwards across Matrix - particularly with Element’s mobile UI being &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;an-unrecognisable-improvement-elements-new-design-is-here&#x2F;&quot;&gt;entirely refreshed&lt;&#x2F;a&gt; by the design team in September as a stepping stone to the forthcoming final Element X design.  Any remaining UX quirks should be flushed out with Element X, but the visuals are already a clear step forwards towards an excellent alternative to the centralised encumbents.&lt;&#x2F;p&gt;
&lt;noscript&gt;Today&#x27;s Matrix Live: &lt;a href=&quot;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=kjZCD14qMK0&quot;&gt;https:&#x2F;&#x2F;youtube.com&#x2F;watch?v=kjZCD14qMK0&lt;&#x2F;a&gt;&lt;&#x2F;noscript&gt;
&lt;youtube-player video-id=&quot;kjZCD14qMK0&quot;&gt;&lt;&#x2F;youtube-player&gt;
&lt;h3 id=&quot;encryption&quot;&gt;Encryption&lt;&#x2F;h3&gt;
&lt;p&gt;We had great plans for E2EE in Matrix this year; starting off in a huge rush to get &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;vodozemac&quot;&gt;vodozemac&lt;&#x2F;a&gt; finished and &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;05&#x2F;16&#x2F;independent-public-audit-of-vodozemac-a-native-rust-reference-implementation-of-matrix-end-to-end-encryption&quot;&gt;audited&lt;&#x2F;a&gt; as our shiny new native-Rust implementation of Olm&#x2F;Megolm. The plan was then to integrate vodozemac into matrix-rust-sdk’s crypto crate, and then replace the various old fragmented E2EE implementations across matrix-js-sdk, matrix-ios-sdk, matrix-android-sdk2 and matrix-rust-sdk itself with One True audited implementation - with audits booked with Least Authority to get further assurance around matrix-rust-sdk-crypto, matrix-rust-sdk itself and finally the full stack (Element X + Synapse).&lt;&#x2F;p&gt;
&lt;p&gt;Unfortunately, things went sideways when security researchers from Royal Holloway University London &amp;amp; elsewhere got in touch to explain that they had found some &lt;a href=&quot;https:&#x2F;&#x2F;nebuchadnezzar-megolm.github.io&#x2F;&quot;&gt;nasty implementation vulnerabilities&lt;&#x2F;a&gt; in the venerable matrix-js-sdk implementation.  So, we had no choice but to pause “Element R” - the project to converge matrix-{js,ios,android}-sdk on matrix-rust-sdk-crypto, and instead start analysing and addressing the issues across all current shipping Matrix clients in order to resolve them as rapidly as possible.  Ironically, it turned out in the end that only matrix-{js,ios,android}-sdk were affected - all other independent implementations, including matrix-rust-sdk, were okay.  As such, the Element R work would have protected us from these vulnerabilities had it been ready, and failing that it would have let us solve them in a single place.  Instead, Element R ended up getting pushed back for months while we worked through the various issues in triplicate across the legacy SDKs, while also checking all the other client implementations we could find, and dealing with additional issues which the RHUL researchers discovered as they dug deeper.  Eventually we finished the analysis and agreed a &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;09&#x2F;28&#x2F;upgrade-now-to-address-encryption-vulns-in-matrix-sdks-and-clients&quot;&gt;coordinated disclosure&lt;&#x2F;a&gt; at the end of September.
(EDIT: to be clear, we are very grateful to the security researchers for discovering and disclosing the vulns responsibly to us. The frustration here stems from the irony that if we&#x27;d finished the matrix-rust-sdk-crypto rewrite a few months earlier, we&#x27;d have mitigated the severe vulns - but instead, the rewrite got pushed back even further. It&#x27;s obviously our fault though, not the researchers&#x27;.)&lt;&#x2F;p&gt;
&lt;p&gt;Since then, work has been split three ways: firstly, Element R work has resumed - and in fact Element R on iOS is pretty much usable as of today, other than needing some work to support E2EE push notifications (which will also be required for Element X). Element R on Android is very close too, and meanwhile Element R on Web decrypted its first event on Dec 19th! We’re hoping to get Element R in production on all platforms by Feb.&lt;&#x2F;p&gt;
&lt;p&gt;Secondly, we’ve been addressing other points raised by the RHUL researchers to ensure that malicious servers cannot add malicious devices or users to conversations, rather than warning as we do today.  This is not a trivial problem to solve, but we’re making progress via &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3917&quot;&gt;MSC3917&lt;&#x2F;a&gt; (Cryptographically Constrained Room Membership) and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3834&quot;&gt;MSC3834&lt;&#x2F;a&gt; (Opportunistic user key pinning (TOFU)).  However, this work is effectively blocked on Element R landing first, as there’s no way we’re going to fix this in triplicate on the legacy SDKs.&lt;&#x2F;p&gt;
&lt;p&gt;Thirdly, we’ve been pushing ahead on implementing Decentralised MLS as a next-generation encryption protocol for Matrix to potentially replace Olm and Megolm.  This work was badly disrupted by RHUL mitigations, but we’re making good progress again - you can follow all the details over at &lt;a href=&quot;https:&#x2F;&#x2F;arewemlsyet.com&quot;&gt;https:&#x2F;&#x2F;arewemlsyet.com&lt;&#x2F;a&gt;.  Matrix over DMLS is currently in alpha, but the aim is to start beta testing Decentralised MLS in 2023.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, we’ve been working hard on completely reworking the overall UX of how E2EE should work in Matrix clients - specifically, requiring users to cross-sign their devices in order to use E2EE, and so end up in a much higher trust world (alongside Trust On First Use). Can’t wait to finally simplify the E2EE UX!&lt;&#x2F;p&gt;
&lt;h3 id=&quot;all-new-features&quot;&gt;All new features&lt;&#x2F;h3&gt;
&lt;p&gt;It’s not all been performance and stability work this year - there have been some large areas of feature work happening too.&lt;&#x2F;p&gt;
&lt;p&gt;One of the most visible projects has been Threads, which &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;introducing-threads-in-beta&#x2F;&quot;&gt;launched in beta&lt;&#x2F;a&gt; in April, and subsequently has undergone huge amounts of polish to improve performance, notification semantics, unread behaviour and thread-aware read receipts.  The end result is feeling great now, and threads &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;element_hq&#x2F;status&#x2F;1605861000296640512&quot;&gt;exited beta&lt;&#x2F;a&gt; in Element Mobile on Dec 20th. Web narrowly missed the window due to a final ‘stuck notification’ bug which is still being tracked down, but will follow shortly afterwards and then threads will be finally out of beta!&lt;&#x2F;p&gt;
&lt;p&gt;Another big project in 2022 has been to create a general purpose Rich Text Editor to provide WYSIWYG (What You See Is What You Get) message composition for Matrix clients.  This has ended up being a very ambitious project to define all the core editing semantics in a shared rust library, with platform-specific bindings to link it into the editing UI available on Web, iOS &amp;amp; Android.  The end result lives at &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-rich-text-editor&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-rich-text-editor&lt;&#x2F;a&gt; - and you can play with it by enabling it in labs on Element Web&#x2F;iOS&#x2F;Android or experiment with the &lt;a href=&quot;https:&#x2F;&#x2F;matrix-org.github.io&#x2F;matrix-rich-text-editor&quot;&gt;live demo&lt;&#x2F;a&gt;. The core behaviour is feeling excellent, although predictably some of the fine detail is very fiddly to get right. It’s almost there, though, and thanks to its built-in rust test harness generator(!) we are confident we’ll catch and control all the edge cases, and this should form an incredibly strong platform for all future rich text editing requirements in Matrix (and beyond!).  This work was very kindly sponsored by one of Element’s public sector customers in order to get Element to parity with Teams - thank you!&lt;&#x2F;p&gt;
&lt;p&gt;Location Sharing was another feature which landed in 2022 - powered by &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3488&quot;&gt;MSC3488&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3489&quot;&gt;MSC3489&lt;&#x2F;a&gt;, and implemented in matrix-{js,ios,android}-sdk in Element Web&#x2F;iOS&#x2F;Android, letting users share static and live locations and view them on an OpenStreetMap compatible map tileserver of their server’s choice. The Live Location Sharing is controversial in that it stores location data in the room history (and as such is hidden behind a labs flag on Element), but should eventually be replaced by &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3672&quot;&gt;MSC3672&lt;&#x2F;a&gt; to share locations are custom ephemeral events instead (once custom EDUs land) in the spec.  Around the same time, Polls also went live thanks to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3381&quot;&gt;MSC3381&lt;&#x2F;a&gt; - it’s worth noting that both Location Sharing and Polls are excellent examples of “extensible events” in the wild: ensuring that clients which understand the custom event type will render them appropriately, but letting other clients fall back to showing them as simple timeline events.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;open-id-connect&quot;&gt;Open ID Connect&lt;&#x2F;h3&gt;
&lt;p&gt;The transition to using Open ID Connect for Matrix authentication has been progressing steadily throughout 2022 - with Third Room being the first OIDC-native Matrix client, closely followed by Element X. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-authentication-service&quot;&gt;matrix-authentication-service&lt;&#x2F;a&gt; now exists as a basic OIDC identity provider suitable for being linked into Synapse, and meanwhile Third Room demonstrates how you can integrate Keycloak as a third party IDP (complete with reCAPTCHA and guest access!).  The team also went on a very exciting detour to figure out how to perform login-and-E2EE-setup in a single operation by scanning a QR code (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3906&quot;&gt;MSC3906&lt;&#x2F;a&gt;), and how it might integrate into OIDC in future.&lt;&#x2F;p&gt;
&lt;p&gt;Element X looks set to be the showcase for native OIDC in a typical Matrix client going forwards, so watch this space to see how it feels!&lt;&#x2F;p&gt;
&lt;p&gt;You can keep track of the inexorable transition to OIDC over at &lt;a href=&quot;https:&#x2F;&#x2F;areweoidcyet.com&quot;&gt;https:&#x2F;&#x2F;areweoidcyet.com&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;voip&quot;&gt;VoIP&lt;&#x2F;h3&gt;
&lt;p&gt;2022 was the year that Matrix finally got native multiparty VoIP.  After launching &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;introducing-native-matrix-voip-with-element-call&#x2F;&quot;&gt;Element Call Beta 1&lt;&#x2F;a&gt; in March followed by &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-call-beta-2-encryption-spatial-audio-walkie-talkie-mode-and-more&#x2F;&quot;&gt;Beta 2&lt;&#x2F;a&gt; in June, we’ve been busy embedding Element Call as a “matryoshka” widget into Element Web, using it to replace Jitsi in powering video rooms and video calls.  You can read all about this in detail in the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;08&#x2F;15&#x2F;the-matrix-summer-special-2022#native-voip-conferencing&quot;&gt;summer blog post&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile, lots of progress is underway on &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;waterfall&quot;&gt;Waterfall&lt;&#x2F;a&gt; - the name we picked for the Pion-based decentralised Selective Forwarding Unit (i.e. conferencing focus) contributed by Sean DuBois earlier in the year, including adding simulcast support to support large scale conferences.&lt;&#x2F;p&gt;
&lt;p&gt;There’s only one catch, which is that Element Call is still in (very very late) beta, thanks to a handful of bugs which have been hard to track down, which has in turn kept all the other dependencies (embedded Element Call; video rooms etc) in beta too.  However, we think we’re pretty much there now - which is perfect timing given how Waterfall is coming together, meaning that both stable &lt;em&gt;and&lt;&#x2F;em&gt; scalable native Matrix conferences are on the horizon!&lt;&#x2F;p&gt;
&lt;p&gt;Even better, the plan is for Element X to rely entirely on embedding Element Call for VoIP - so we should be able to jump forwards pretty rapidly to having excellent native multiparty VoIP and video rooms on mobile as well as on Web.  So, once Element Call exits beta, everything should follow.  Just for a change, we’re aiming to get this done by the end of January - but there are a lot of unknown unknowns still flying around, so watch this space…&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ietf-mimi&quot;&gt;IETF &amp;amp; MIMI&lt;&#x2F;h3&gt;
&lt;p&gt;Another massive new initiative this year has been the process of proposing Matrix to the IETF as a candidate for use in interoperable instant messaging standardisation.  The &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;group&#x2F;mimi&#x2F;about&#x2F;&quot;&gt;MIMI (More Instant Messaging Interoperability) working group&lt;&#x2F;a&gt; emerged earlier in the year within IETF as an initiative to define how MLS could be used to interoperate between different instant messaging silos - as shortly to be required by the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;03&#x2F;29&#x2F;how-do-you-implement-interoperability-in-a-dma-world&quot;&gt;Digital Markets Act&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;One of the things that MIMI aims to do is to define a common application layer protocol to exchange messages. At first &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-mahy-mimi-content&#x2F;01&#x2F;&quot;&gt;CPIM was proposed&lt;&#x2F;a&gt; (an ancient message format that looks a lot like email) - and then an &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-rosenberg-mimi-msg-format&#x2F;&quot;&gt;entirely new JSON message format&lt;&#x2F;a&gt; proposal emerged which looks somewhat Matrix (but isn’t). At this point it became obvious that we should throw our hat into the ring and encourage MIMI to use Matrix rather than reinvent it, and so we set about proposing Matrix as at least the &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-ralston-mimi-matrix-message-format&#x2F;&quot;&gt;message format&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-ralston-mimi-matrix-transport&#x2F;&quot;&gt;message transport layer&lt;&#x2F;a&gt; of the stack. It’s quite surreal to see Matrix starting to fly around as IETF Drafts!&lt;&#x2F;p&gt;
&lt;p&gt;The next step here is to re-express the relevant bits of the current Matrix spec as self-contained IETF Drafts (rather than backreferencing the current spec from the drafts).  The idea is that the normal Matrix spec will continue to evolve much as it always has, but we’ll effectively donate a Long Term Supported dialect of it to IETF which can then evolve according to IETF process and be immortalise as RFCs for use in MIMI.  We’ll then backport those changes into spec.matrix.org in order to avoid fragmentation, while retaining the same ability we have to rapidly iterate and extend Matrix with MSCs.  This work is well under way (taking opportunity to use &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;matthew&#x2F;msc1767&#x2F;proposals&#x2F;1767-extensible-events.md&quot;&gt;Extensible Events&lt;&#x2F;a&gt; from the outset!), and we should see explosions of further IETF Drafts emanating from Travis as 2023 progresses.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;trust-safety&quot;&gt;Trust &amp;amp; Safety&lt;&#x2F;h3&gt;
&lt;p&gt;2022 saw a real uptick in spam and abuse across Matrix, and there have been some valiant attempts to improve our moderation tooling over the course of the year.  Unfortunately it hasn’t come together as rapidly as we might have hoped, however, and we’ve seen several large communities give up on Matrix and move back to Discord thanks in part to needing better anti-abuse mechanisms.&lt;&#x2F;p&gt;
&lt;p&gt;In 2023 we’re resetting our trust &amp;amp; safety work, with Mjolnir dev returning to its original development team, and we’ll be working as tactically as possible to ensure that all communities on Matrix can easily block abuse using whatever mechanisms they need.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;p2p-dendrite&quot;&gt;P2P &amp;amp; Dendrite&lt;&#x2F;h3&gt;
&lt;p&gt;Meanwhile, Dendrite (our second generation homeserver implementation) development has continued at pace throughout the year. According to sytest we are now at 93% client-server API compliance with 577 out of 620 tests passing, and the server-server API compliance is at 97% with 111 out of 114 tests passing! None of the missing tests are showstoppers, so it’s fair to say that Dendrite is very nearly ready for primetime.&lt;&#x2F;p&gt;
&lt;p&gt;The interesting plot twist is that Dendrite development has ended up increasingly focusing on embedded matrix server use cases - particularly to power Peer-to-Peer Matrix, where clients require a server to be embedded within them.  So while Synapse has ended up increasingly focusing on large-scale deployments, Dendrite has ended up pursuing smaller instances (which is ironic, given originally it was meant to be the other way round!).&lt;&#x2F;p&gt;
&lt;p&gt;P2P Matrix work has been progressing well too - you can follow the blow-by-blow updates over at &lt;a href=&quot;https:&#x2F;&#x2F;arewep2pyet.com&quot;&gt;https:&#x2F;&#x2F;arewep2pyet.com&lt;&#x2F;a&gt;. After a lot of back and forth evaluating hard-state routing versus soft-state routing in Pinecone, we’ve ended up converging on soft-state routing (which is chattier, but easier to reason about in terms of mitigating attacks). However, the chattiness means that it doesn’t scale as well as one might hope - so we’re now working on a “tiered” approach where separate Pinecone networks can be tiered together into one inter-network, giving us scalability at the expense of being slightly less decentralised. It’s fair to say that the journey here has been pretty frustrating in its twists and turns, and sadly Neil Alexander chose to move on a few months ago. However, Devon has stepped up to fill his shoes as primary Pinecone and P2P wrangler, and is making amazing progress on the remaining work - firstly implementing &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;dendrite&#x2F;pull&#x2F;2917&quot;&gt;Store and Forward relaying&lt;&#x2F;a&gt; in Dendrite so that today’s Pinecone networks can exchange messages even if the recipient node is offline.  Next up will be bridging P2P Matrix with today’s Matrix network - and then working on tiering to provide the scalability we need.  The expectation is that today’s serverside Dendrite instances will effectively turn into static pinecone peers, store and forwarding messages on behalf of P2P nodes, and providing tiering between respective pinecone subnets.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hydrogen-chatterbox&quot;&gt;Hydrogen &amp;amp; Chatterbox&lt;&#x2F;h3&gt;
&lt;p&gt;Development on Hydrogen as a super-lightweight progressive-web-app Matrix client has also been progressing throughout the year (with a few detours to help out with end-to-end testing via &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;trafficlight&quot;&gt;trafficlight&lt;&#x2F;a&gt; both for the benefit of Hydrogen and other clients).&lt;&#x2F;p&gt;
&lt;p&gt;The biggest change has been Hydrogen sprouting a separate SDK layer, letting the engine be embedded into other webapps in order to add noninvasive Matrix messaging with as minimal a footprint as possible.  This was showcased in Element’s &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;blog&#x2F;element-launches-chatterbox&#x2F;&quot;&gt;chatterbox&lt;&#x2F;a&gt; offering in July - providing an open source chatbox which can be trivially embedded into existing sites, and also powers the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Automattic&#x2F;chatrix&quot;&gt;Chatrix&lt;&#x2F;a&gt; wordpress plugin that Automattic is working on.&lt;&#x2F;p&gt;
&lt;p&gt;Hydrogen also added independent support for &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3401&quot;&gt;MSC3401&lt;&#x2F;a&gt; multiparty voice&#x2F;video calling (albeit on a &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;vector-im&#x2F;hydrogen-web&#x2F;pull&#x2F;705&quot;&gt;branch&lt;&#x2F;a&gt;), letting us showcase heterogeneous Element Call &amp;lt;-&amp;gt; Hydrogen group calling and prove MSC3401 as fit for purpose as a true open interoperable call signalling - and in turn Hydrogen SDK, complete with the multiparty voice&#x2F;video calling, powers the Matrix engine within Third Room - our metaverse-on-Matrix platform.&lt;&#x2F;p&gt;
&lt;p&gt;We’re looking forwards to Hydrogen continuing to reach full feature parity with Element over the next year, and popping up in increasingly unexpected places as everyone’s favourite embedded Matrix client!&lt;&#x2F;p&gt;
&lt;h3 id=&quot;third-room&quot;&gt;Third Room&lt;&#x2F;h3&gt;
&lt;p&gt;Finally, it’s hard to believe that &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&quot;&gt;Third Room&lt;&#x2F;a&gt;, our Matrix-based open platform for decentralised realtime spatial collaboration, barely existed at the beginning of the year.  Third Room serves to demonstrate that Matrix is &lt;em&gt;way&lt;&#x2F;em&gt; more than just chat and VoIP, but can power the spatial communication layer of the open web. This has ended up driving forwards a tonne of new capabilities for Matrix - showcasing native OIDC auth; scalable multiparty VoIP in Hydrogen SDK, efficient binary-diffed file storage, and more recently has been defining how to store extensible behaviour for Matrix rooms as WASM objects stored in the Matrix room itself.&lt;&#x2F;p&gt;
&lt;p&gt;Third Room itself is a Hydrogen-based Matrix client, which lets you view Matrix rooms as interactive multiparty 3D environments (using &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3815&quot;&gt;MSC3815&lt;&#x2F;a&gt;) - with the world defined as glTF blobs stored in the Matrix room, and the ability to script and customise any aspect of that world using WASM blobs stored in Matrix rooms, which execute on the participating clients, exposing a new scenegraph API called WebSceneGraph in order to manipulate the glTF that makes up the world.  We also expect to see a variant of Matrix’s normal widget API to be exposed to these WASM blobs, introducing the concept of sandboxed clientside widgets, bots or other integrations - letting users customise and extend Matrix without ever having to run serverside bots again.&lt;&#x2F;p&gt;
&lt;p&gt;The intention is to provide a platform which can be used to build &lt;em&gt;any&lt;&#x2F;em&gt; kind of interactive realtime spatial multiparty app in an open standardised, decentralised, end-to-end encrypted way - whether that’s for gaming, social, or professional activity such as building “digital twins” for manufacturing, agriculture, smart cities, search &amp;amp; rescue, etc.  You can read more about the vision at &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;preview&quot;&gt;thirdroom.io&#x2F;preview&lt;&#x2F;a&gt;, or via press coverage at &lt;a href=&quot;https:&#x2F;&#x2F;thenewstack.io&#x2F;third-room-teases-user-generated-content-for-the-metaverse&#x2F;&quot;&gt;TheNewStack&lt;&#x2F;a&gt; or &lt;a href=&quot;https:&#x2F;&#x2F;www.golem.de&#x2F;news&#x2F;third-room-das-open-source-metaverse-von-matrix-2212-170638.html&quot;&gt;Golem&lt;&#x2F;a&gt;.  We were also incredibly flattered to be invited to present Third Room at &lt;a href=&quot;https:&#x2F;&#x2F;sa2022.siggraph.org&#x2F;en&#x2F;presentation&#x2F;?id=realcur_102&amp;amp;sess=sess143&quot;&gt;SIGGRAPH Asia&lt;&#x2F;a&gt; a few weeks ago.  The official recording has yet to emerge, but you can find a &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;o_ob&#x2F;status&#x2F;1601442998696677376&quot;&gt;cheeky bootleg here&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;We launched &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;09&#x2F;27&#x2F;announcing-third-room-tech-preview-1&quot;&gt;Tech Preview 1 of Third Room&lt;&#x2F;a&gt; at the end of September, and since then all of the work has been around building out WebSceneGraph and the WASM scripting environment - letting users build their own functionality in JS via QuickJS or C (and in future Rust or Zig too).  We’ve also been working on making the networking (via Matrix WebRTC-negotiated data channels) more robust, switching to an ‘authoritative’ simulation model rather than having each client run its own physics simulation, in order to kick the hard problem of decentralised physics simulations down the road a bit further. We’re also adding in a much-needed ‘discover’ page to help users find new rooms and explore everything that’s possible in the platform.  And finally, we’re adding WebXR support so that folks can use ThirdRoom with VR and AR hardware if they so desire. All this should culminate in Tech Preview 2, due in the coming weeks.&lt;&#x2F;p&gt;
&lt;p&gt;If you want a quick sneak preview of the scripting capabilities on the horizon with a &lt;a href=&quot;https:&#x2F;&#x2F;matrix.thirdroom.io&#x2F;_matrix&#x2F;media&#x2F;r0&#x2F;download&#x2F;thirdroom.io&#x2F;qFfvHcXNQkjeDjTpdMfPCniY&quot;&gt;very basic script&lt;&#x2F;a&gt; stored in the media repository, head over to &lt;a href=&quot;https:&#x2F;&#x2F;thirdroom.io&#x2F;world&#x2F;#surprise:thirdroom.dev&quot;&gt;https:&#x2F;&#x2F;thirdroom.io&#x2F;world&#x2F;#surprise:thirdroom.dev&lt;&#x2F;a&gt; and click on the television ;)&lt;&#x2F;p&gt;
&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h3&gt;
&lt;p&gt;So there you have it: it’s been a mixed year for Matrix, but at least the project itself is moving forwards faster than ever, for now. If you look back at the predictions from &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2021&#x2F;12&#x2F;22&#x2F;the-mega-matrix-holiday-special-2021#2022&quot;&gt;last year’s holiday blog post&lt;&#x2F;a&gt; you’ll see that most of them even came true. This year, we’ll keep the predictions simple: our plans for 2023 are to ensure that the Foundation is well funded, ship all of the step-change improvements in performance and usability which are currently in beta as rapidly as possible - and demonstrate for once and for all that Matrix can indeed punch its weight against the proprietary centralised alternatives.&lt;&#x2F;p&gt;
&lt;p&gt;If you can afford it, please consider donating to the Matrix.org Foundation to support our work. The most efficient way to support us is to &lt;a href=&quot;https:&#x2F;&#x2F;donorbox.org&#x2F;keep-matrix-exciting&quot;&gt;donate via donorbox&lt;&#x2F;a&gt;. Our Patreon is not going anywhere, so if you wish to keep supporting it there we&#x27;re happy to count you in our supporters.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;donorbox.org&#x2F;keep-matrix-exciting&quot;&gt;&lt;img src=&quot;&#x2F;images&#x2F;donorbox.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Thanks for flying Matrix;&lt;&#x2F;p&gt;
&lt;p&gt;Matthew, Amandine &amp;amp; the whole core team.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Funding Matrix via the Matrix.org Foundation</title>
    <published>2022-12-01T00:00:00+00:00</published>
    <updated>2022-12-01T00:00:00+00:00</updated>
    <author>
      <name>
            Matthew Hodgson
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2022/12/01/funding-matrix-via-the-matrix-org-foundation/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2022/12/01/funding-matrix-via-the-matrix-org-foundation/</id>
    <content type="html">&lt;p&gt;&lt;em&gt;TL;DR: you can now officially join the Matrix Foundation as an organisational
or individual member in order to sustainably support core Matrix development,
help steer the direction of the protocol and how best to fund it! Organisations
can join by filling &lt;a href=&quot;https:&#x2F;&#x2F;forms.gle&#x2F;Yy345QkB5pifJJNy6&quot;&gt;this form&lt;&#x2F;a&gt; and we will get back in touch, or individuals can
now donate directly &lt;a href=&quot;https:&#x2F;&#x2F;donorbox.org&#x2F;keep-matrix-exciting&quot;&gt;here&lt;&#x2F;a&gt; (as a more efficient alternative to Patreon, which
remains online for Patrons used to it).&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;Only two days late for Giving Tuesday (and 4 years late on the Foundation
scale), we are super excited to announce that we are finally expanding the
Matrix Foundation into a fully-fledged non-profit fund-raising organisation to
help support the core Matrix development and the wider open source Matrix
ecosystem!&lt;&#x2F;p&gt;
&lt;p&gt;Has your organisation been using Matrix to communicate via the open source
server and clients and you want to ensure that improvements and features still
keep coming? Become a member, and feed into the roadmap.&lt;&#x2F;p&gt;
&lt;p&gt;Has your company been building on top of Matrix, making the most of its openness
and flexibility, but you’ve never figured out how to contribute back in order
to ensure the resilience of the tech which you rely on for the success of your
business? Become a member, and ensure the core development is funded and that
Matrix is here to thrive.&lt;&#x2F;p&gt;
&lt;p&gt;Are you about to be designated a gatekeeper by the EU, and have to rapidly figure out how to implement &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;03&#x2F;29&#x2F;how-do-you-implement-interoperability-in-a-dma-world&quot;&gt;DMA-compliant interoperability&lt;&#x2F;a&gt; (complete with end-to-end encryption compatibility) into your services? Become a member, and discover how Matrix can solve all your problems, while providing your input too. &lt;&#x2F;p&gt;
&lt;p&gt;Are you looking to implement DMA interoperability but don&#x27;t fall into the gatekeeper designation? Become a member, and help ensure Matrix fits your needs too!&lt;&#x2F;p&gt;
&lt;p&gt;Are you a non-profit organisation with a mission to provide secure and sovereign communications to those who need it the most, providing an alternative to the current players? Become a member, and help us take our mission forward.&lt;&#x2F;p&gt;
&lt;p&gt;Are you an individual who strongly supports the mission of Matrix and wants to see it thrive and become the open backbone of the world’s communications? Become a member, and support the future of Matrix. &lt;&#x2F;p&gt;
&lt;p&gt;In short, this finally gives the wider world a way to contribute concretely to the significant costs of funding folks to work fulltime on core Matrix development - which now covers over 243(!) projects in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&quot;&gt;github.com&#x2F;matrix-org&lt;&#x2F;a&gt;. Core Matrix work ranges from: &lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;managing the Matrix spec itself &lt;&#x2F;li&gt;
&lt;li&gt;maintaining the reference client SDKs and encryption and getting them independently audited&lt;&#x2F;li&gt;
&lt;li&gt;maintaining example server implementations in the form of Synapse and Dendrite&lt;&#x2F;li&gt;
&lt;li&gt;writing the test suite&lt;&#x2F;li&gt;
&lt;li&gt;publishing the matrix.org website&lt;&#x2F;li&gt;
&lt;li&gt;promoting awareness of Matrix&lt;&#x2F;li&gt;
&lt;li&gt;running the matrix.org homeserver&lt;&#x2F;li&gt;
&lt;li&gt;and so much more... &lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;In exchange for supporting the Foundation, and beyond providing certainty that our work can continue, organisations and individuals who contribute financially will be able to directly provide input to the trajectory of the core Matrix developments by becoming official members of the Matrix.org Foundation.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;introducing-foundation-memberships-and-the-governing-board&quot;&gt;Introducing Foundation Memberships and the Governing Board&lt;&#x2F;h2&gt;
&lt;p&gt;Practically speaking, this means that we are going to create a &amp;quot;Governing Board&amp;quot; to the Matrix.org Foundation: a new team, made up of members voted by the overall membership, a subset of the Guardians and a subset of the Spec Core Team. The Governing Board will have the responsibility of determining how Foundation funds are distributed and used, how the Spec Core Team roadmap is prioritised, how to best grow Matrix awareness, etc.&lt;&#x2F;p&gt;
&lt;p&gt;In other words, we are literally expanding the day-to-day steering of the direction of the Matrix Foundation to the wider community. In order to run the Governing Board and the overall work of the Foundation, &lt;strong&gt;we are also hiring an Executive Director&lt;&#x2F;strong&gt;, so please get in touch via &lt;a href=&quot;mailto:funding@matrix.org&quot;&gt;funding@matrix.org&lt;&#x2F;a&gt; if you’re a non-profit foundation-running expert! In the interim, while this search proceeds, Matthew and Amandine will fill the role with the support of the other Guardians of Matrix. The Guardians themselves retain their existing function as the Foundation&#x27;s non-executive board - responsible for safeguarding the overall mission of Matrix, appointing the membership of the Spec Core Team, approving membership applications, and defining the overall changes we’re outlining here.&lt;&#x2F;p&gt;
&lt;p&gt;Membership comes at various levels, each with different rewards:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Individual memberships (i.e. today’s Patreon supporters):
&lt;ul&gt;
&lt;li&gt;Ability to vote in the appointment of up to 2 ‘community representatives’ to the Foundation&#x27;s governing board.&lt;&#x2F;li&gt;
&lt;li&gt;Name on the Matrix.org website&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Silver member: between £2,000 and £80,000 per year, depending on organisation size
&lt;ul&gt;
&lt;li&gt;Ability to vote on the appointment of up to 2 ‘Silver representative’ to the Foundation&#x27;s governing board&lt;&#x2F;li&gt;
&lt;li&gt;Supporter logo on the front page of the new Matrix.org website&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Gold member: £200,000 &#x2F; year, adds:
&lt;ul&gt;
&lt;li&gt;Ability to vote on the appointment of up to 3 ‘Gold representatives’ to the Foundation&#x27;s governing board.&lt;&#x2F;li&gt;
&lt;li&gt;Press release announcing the sponsorship&lt;&#x2F;li&gt;
&lt;li&gt;1 original post on the Matrix.org blog per year&lt;&#x2F;li&gt;
&lt;li&gt;Participation in the internal Spec Core Team room&lt;&#x2F;li&gt;
&lt;li&gt;Larger logo on the front page of Matrix.org&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Platinum member: £500,000 &#x2F; year, adds:
&lt;ul&gt;
&lt;li&gt;Ability to vote on the appointment of up to 5 ‘platinum representatives’ to the Foundation&#x27;s governing board.&lt;&#x2F;li&gt;
&lt;li&gt;1 sponsored Matrix Live episode per year&lt;&#x2F;li&gt;
&lt;li&gt;Largest logo on the front page of Matrix.org&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;As the activities of the Foundation increase, we expect to add more benefits to this list, for example discounts on sponsoring a future Matrix Conference, or similar.&lt;&#x2F;p&gt;
&lt;p&gt;Governing Board elections will occur yearly, with the first election planned towards the end of this year once we’ve gathered together the first wave of members and candidates have proposed themselves for election.&lt;&#x2F;p&gt;
&lt;p&gt;For anyone building on Matrix, memberships are a no-brainer as they will ensure the perpetuity and future-proof-ness of the standard. But for anyone supporting the mission of Matrix, this membership can be key to define its future. &lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile, with Matrix looking increasingly integral to implementing interoperable communication for compliance with the EU’s Digital Markets Act (whether that’s as pure Matrix, or as part of the IETF &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-ralston-mimi-matrix-transport&#x2F;&quot;&gt;MIMI&lt;&#x2F;a&gt; initiative), this is an incredible opportunity for the organisations impacted by DMA to get a front-row seat within the Foundation to ensure that Matrix thrives and solves the challenges posed by the act. To get involved, please apply via the &lt;a href=&quot;https:&#x2F;&#x2F;forms.gle&#x2F;Yy345QkB5pifJJNy6&quot;&gt;membership application form&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;so-why-is-this-all-happening&quot;&gt;So, why is this all happening?&lt;&#x2F;h2&gt;
&lt;p&gt;Since 2017, core Matrix development has been funded primarily by Element - the company founded by the team who created Matrix. Over the years, Element has put tens of millions of dollars into Matrix - which in turn has come from both selling Matrix hosting (EMS), on-premise Matrix solutions, and VC investment in Element. To put it in perspective, even though there are over 5000 contributors to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&quot;&gt;github.com&#x2F;matrix-org&lt;&#x2F;a&gt; - over 90% of the actual committed lines of code come from Element employees. Similarly, while we are &lt;em&gt;enormously&lt;&#x2F;em&gt; thankful for the past and existing generous donations from the wider Matrix community, today they only come to $6,000 a month, relative to the $400,000 a month that Element has been funding.&lt;&#x2F;p&gt;
&lt;p&gt;Over the last year, we’ve seen a palpable shift within the Matrix ecosystem. Matrix is growing faster than ever. Synapse has improved immeasurably, using less RAM than ever and even sprouting Rust to optimise its hot paths. Element has improved immeasurably too, with an entirely new design on mobile, and tons of new features including threads, voice messages, location share, video rooms and more. Monthly active users reported via Synapse’s phone-home stats have almost doubled and are growing at their fastest ever rate. The number of servers has increased equivalently. We hear about major new commercial Matrix deployments almost every day. However, while usage is going through the roof - we haven’t seen a matching increase in players looking to support the project.&lt;&#x2F;p&gt;
&lt;p&gt;In fact, we’ve seen the opposite: commercial vendors forking the protocol while trying to break up the core team. Matrix tenders lost to “preferred” vendors who know absolutely nothing about Matrix. Vendors selling Matrix hosting or services without contributing anything back to the project at all. Organisations with huge amounts of money (governments, $$B massive enterprises) have enthusiastically launched proprietary Matrix solutions by building on the liberally-licensed Apache reference Matrix implementations… while contributing back nothing. Now, we are enormously grateful for the commercial Matrix deployments who &lt;em&gt;do&lt;&#x2F;em&gt; actually work with Element to fund core development or contribute code themselves - but this is very clearly the minority. Obviously it’s great to see folks building on Matrix - but it’s rather galling if it ends up with insufficient funding trickling down to the core Matrix team to be able to build the foundational technology that everyone else is relying on.&lt;&#x2F;p&gt;
&lt;p&gt;Element in particular has staffed up in order to both support the core Matrix ecosystem (the spec, Synapse, Dendrite, Client SDKs, Encryption implementations etc) as well as Element-specific work (the Element apps, EMS, the Element Enterprise Installer, etc). As a result, Element employs roughly twice as many developers as you might expect, and while Matrix is here to stay, this turns out not to be sustainable for Element unless the wider ecosystem helps support the foundational work&lt;&#x2F;p&gt;
&lt;p&gt;We believe the world needs secure decentralised communication more than ever, and ensuring the Foundation can distribute funding to those contributing to the core platform (be that Element or individuals or other organisations) is key to that. So: please consider this a call to arms - if you believe the world needs Matrix, and particularly if you depend on it for your business, please join the Foundation and participate!&lt;&#x2F;p&gt;
&lt;p&gt;Fill in &lt;a href=&quot;https:&#x2F;&#x2F;forms.gle&#x2F;Yy345QkB5pifJJNy6&quot;&gt;the form&lt;&#x2F;a&gt; to apply for membership, or if you are not acting on behalf of an organisation, you can go straight to our &lt;a href=&quot;https:&#x2F;&#x2F;donorbox.org&#x2F;keep-matrix-exciting&quot;&gt;donation page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Matthew, Amandine &amp;amp; the whole Matrix.org Foundation&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Call for Participation for the FOSDEM 2023 Matrix Devroom</title>
    <published>2022-11-16T00:00:00+00:00</published>
    <updated>2022-11-16T00:00:00+00:00</updated>
    <author>
      <name>
            Thib
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2022/11/16/call-for-participation-for-the-fosdem-2023-matrix-devroom/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2022/11/16/call-for-participation-for-the-fosdem-2023-matrix-devroom/</id>
    <content type="html">&lt;p&gt;This year, the Matrix.org Foundation is excited to host the first ever
Matrix.org Foundation and Community devroom &lt;em&gt;in person&lt;&#x2F;em&gt; at FOSDEM. Half a day of
talks, demos and workshops around Matrix itself and projects built on top of
Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;We encourage people working on the Matrix protocol or building on it in an open
source project to submit a proposal! Note that companies are welcome to talk
about the Matrix details of their open source projects, but marketing talks are
not welcome.&lt;&#x2F;p&gt;
&lt;p&gt;This call for participation is only about the physical devroom. A separate CfP
will be issued for the online devroom once there are more details about it.&lt;&#x2F;p&gt;
&lt;p&gt;Key dates are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Conference dates 4-5 February, 2023 In person&lt;&#x2F;li&gt;
&lt;li&gt;Matrix Devroom date: Sunday 5 morning in person, online devroom to be
announced&lt;&#x2F;li&gt;
&lt;li&gt;Submission deadline: Monday 5th December&lt;&#x2F;li&gt;
&lt;li&gt;Announcement of selected talks: Thursday 15th December &lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;You must be available in person to present your talk for the physical devroom.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;talk-details&quot;&gt;Talk Details&lt;&#x2F;h2&gt;
&lt;p&gt;The talks can follow one of thee two formats for the physical devroom&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;20 min talk + 10 min Q&amp;amp;A, for topics that can be covered briefly&lt;&#x2F;li&gt;
&lt;li&gt;50 min talk + 10 min Q&amp;amp;A for more complex subjects which need more focus&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;We strongly encourage you to prepare a demo when it makes sense, so people can 
actually see what your work looks like in practice!&lt;&#x2F;p&gt;
&lt;p&gt;Of course, the proposal must respect the FOSDEM terms as well:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The conference language is English. All content must relate to Free and Open
Source Software. By participating in the event you agree to the publication of
your recordings, slides and other content provided under the same licence as
all FOSDEM content (CC-BY).&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;submitting-a-proposal&quot;&gt;Submitting a Proposal&lt;&#x2F;h2&gt;
&lt;p&gt;Proposals must be &lt;a href=&quot;https:&#x2F;&#x2F;penta.fosdem.org&#x2F;submission&#x2F;FOSDEM23&quot;&gt;submitted on FOSDEM&#x27;s conference management system Pentabarf&lt;&#x2F;a&gt;
before &lt;del&gt;December 5&lt;&#x2F;del&gt; December 8 2022. If you are not used to Pentabarf, you can
follow this &lt;a href=&quot;https:&#x2F;&#x2F;eyskens.me&#x2F;beginners-guide-to-pentabarf&#x2F;&quot;&gt;beginners guide to Pentabarf&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;We expect to receive more requests than we have slots available. The devroom
organisers will be reviewing the proposals and accepting them based on the
potential positive impact the project has on Matrix (as defined in by the
Mission section of https:&#x2F;&#x2F;matrix.org&#x2F;foundation).&lt;&#x2F;p&gt;
&lt;p&gt;If a project proposal has been turned down, it doesn&#x27;t mean we don&#x27;t believe it
has good potential. Maintainers are invited to join the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#twim:matrix.org&quot;&gt;#twim:matrix.org&lt;&#x2F;a&gt;
Matrix room to give it some visibility.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Testing faster remote room joins</title>
    <published>2022-10-18T13:35:00+00:00</published>
    <updated>2022-10-18T13:35:00+00:00</updated>
    <author>
      <name>
            Richard van der Hoff
          </name>
    </author>
    <link rel="alternate" href="https://f297f985.matrix-website.pages.dev/blog/2022/10/18/testing-faster-remote-room-joins/" type="text/html"/>
    <id>https://f297f985.matrix-website.pages.dev/blog/2022/10/18/testing-faster-remote-room-joins/</id>
    <content type="html">&lt;p&gt;As of &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;10&#x2F;17&#x2F;synapse-1-69-released&quot;&gt;Synapse 1.69&lt;&#x2F;a&gt;, we consider &amp;quot;faster remote room joins&amp;quot; to be ready for testing by server admins.&lt;&#x2F;p&gt;
&lt;p&gt;There are a number of caveats, which I&#x27;ll come to, but first: this is an important step in a project which we&#x27;ve been working on for 9 months. Most people who use Matrix will be familiar with the pain of joining a large room over federation: typically you are just faced with a spinner, which is eventually replaced by a cryptic error. If you&#x27;re lucky, the room eventually pops up in your room list of its own accord. The whole experience is &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;1211&quot;&gt;one of the longest-standing open issues in Synapse&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;The &amp;quot;faster joins&amp;quot; project set out to change all this. Briefly, the reason the experience is so poor today is that there is a &lt;em&gt;lot&lt;&#x2F;em&gt; of information required to join a large room, which is slow for the &amp;quot;resident&amp;quot; server to generate, and even slower for the &amp;quot;joining&amp;quot; server to validate and store. The key insight is that we don&#x27;t really need the full membership list of a room to get started: rather, we can present the user with the basic information about the room (name, topic, space hierarchy, etc), and then populate the full details in the background. The upshot is that, whereas it used to take upwards of 12 minutes to join Matrix HQ (even assuming that your server didn&#x27;t fall over in the meantime), this is now down to about 30 seconds (and we&#x27;re confident that we can reduce this even further).&lt;&#x2F;p&gt;
&lt;p&gt;It sounds simple enough, but in reality this has meant a lot of work on Synapse. The main problem was that huge amounts of the Synapse codebase assumed that we either had all the state for a room, or none of it. That assumption no longer holds, which meant lots of changes to the code to handle &amp;quot;partial state&amp;quot;. Along the way we&#x27;ve also had to make some other improvements: for example, we &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;security&#x2F;advisories&#x2F;GHSA-jhjh-776m-4765&quot;&gt;found and fixed&lt;&#x2F;a&gt; some long-standing bugs in event authorisation, and implemented &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;3528&quot;&gt;cancellation&lt;&#x2F;a&gt; for requests where the client disconnects before we finish handling the request. For an idea of the things being changed at the Matrix protocol level, take a look at &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3902&quot;&gt;MSC3902&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The upshot of all that, is that instead of seeing a blank room with a spinner (or an error message), you can now see the basic information about the room, as well as receive incoming messages, within a few seconds of trying to join the room.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;caveats&quot;&gt;Caveats&lt;&#x2F;h2&gt;
&lt;p&gt;The devil, as they say, is in the detail, and unfortunately there remain a few rough edges to this work.&lt;&#x2F;p&gt;
&lt;p&gt;Firstly, and most importantly: &lt;strong&gt;we do not yet recommend enabling faster joins on important production systems&lt;&#x2F;strong&gt;. We&#x27;ve done quite a lot of testing, but there are some fundamental changes to Synapse, and by their nature they are hard to test rigorously. We&#x27;re pretty confident it won&#x27;t eat your entire database, but stuck rooms, stuck notifications, and stuck clients, are all entirely within the realms of possibility. We&#x27;d recommend only enabling faster joins on your server if you are comfortable looking at the logs, and using the Synapse Admin API or flushing client caches to clean things up if they go wrong.&lt;&#x2F;p&gt;
&lt;p&gt;Secondly: there&#x27;s still some &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;12994&quot;&gt;outstanding work&lt;&#x2F;a&gt; required to support faster joins on Synapse deployments using worker processes. At present, if you try to enable them on a worker-based deployment, Synapse will refuse to start.&lt;&#x2F;p&gt;
&lt;p&gt;Next: the faster-joins process requires some support from the resident server, and, since &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3706&quot;&gt;those changes&lt;&#x2F;a&gt; are not yet in the stable matrix spec, it must be explicitly enabled. We have enabled this support on the &lt;code&gt;matrix.org&lt;&#x2F;code&gt; homeserver, but it generally won&#x27;t work elsewhere. In other words: for now, you&#x27;ll only see the benefit when you join a room via a &lt;code&gt;#&amp;lt;name&amp;gt;:matrix.org&lt;&#x2F;code&gt; alias (or via the &lt;code&gt;matrix.org&lt;&#x2F;code&gt; room directory).&lt;&#x2F;p&gt;
&lt;p&gt;Finally, there are still quite a few things that don&#x27;t work properly yet. We&#x27;re tracking the list of things we need to fix as a &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;milestone&#x2F;10&quot;&gt;milestone&lt;&#x2F;a&gt; on the Synapse project, but to name a few:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;You can&#x27;t yet send messages during the &amp;quot;resynchronisation&amp;quot; phase (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;12997&quot;&gt;synapse#12997&lt;&#x2F;a&gt;). Currently, you&#x27;ll just get a spinner.&lt;&#x2F;li&gt;
&lt;li&gt;Similarly, attempts to leave the room (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;12802&quot;&gt;synapse#12802&lt;&#x2F;a&gt;) will block until the resync completes.&lt;&#x2F;li&gt;
&lt;li&gt;Clients which don&#x27;t support &lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&#x2F;v1.4&#x2F;client-server-api&#x2F;#lazy-loading-room-members&quot;&gt;lazy-loading room members&lt;&#x2F;a&gt; will &lt;em&gt;block&lt;&#x2F;em&gt; (ie, they won&#x27;t receive any new events at all) during the resynchronisation process (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;12989&quot;&gt;synapse#12989&lt;&#x2F;a&gt;). Most popular clients, including Element, Hydrogen, Fractal and FluffyChat &lt;em&gt;do&lt;&#x2F;em&gt; support lazy-loading, but a few (including Nheko) do not.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;turning-it-on&quot;&gt;Turning it on&lt;&#x2F;h2&gt;
&lt;p&gt;With all that said: we are very excited for people to start trying it and give us feedback. If you administer a Synapse server and are as excited as we are, all you need to do to start testing faster joins is to add this to your &lt;code&gt;homeserver.yaml&lt;&#x2F;code&gt; (and then restart Synapse):&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;yaml&quot; style=&quot;background-color:#1e1e1e;color:#dcdcdc;&quot; class=&quot;language-yaml &quot;&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span style=&quot;background-color:#282828;color:#569cd6;&quot;&gt;experimental_features&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;background-color:#282828;color:#569cd6;&quot;&gt;faster_joins&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#569cd6;&quot;&gt;True
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;With that, any future remote room joins (or at least those going via &lt;code&gt;matrix.org&lt;&#x2F;code&gt;) will use the new faster joins algorithm. Please let us know how you get on, and file GitHub issues for any problems you might have!&lt;&#x2F;p&gt;
</content>
</entry>

    
    
</feed>
