This week we continue Matrix Live Season 3 by talking to community member axx, Axel Simon from La Quadrature du Net, a French advocacy group that promotes digital rights and freedoms of citizens. We talk about the work La Quadrature du Net do, with a focus on the importance of decentralisation and how Matrix helps support this.
mxisd v1.2.0 released
Max has been giving updates on the road to mxisd v1.2.0, which was released this week:
A new stable version of mxisd is out: v1.2.0. It comes with:
The ultimate identity store that lets you run any command on the system to fetch info, making it the most generic yet. The sky is now your limit!
The ability to send email notifications about room invites when done using a Matrix ID regardless if their users is already provisioned on synapse, using emails found in an Identity store. Targeted at onboarding/migration to Matrix for any org/corp.
The maubot management UI is now ready, which means you should be able to install, update and configure plugins with just the UI.
Half-Shot has been working on important work for his final undergrad year. Just kidding! He’s been working on bridges as you’d expect:
I’ve been working on matrix-appservice-purple, and the community immediately rallied around and helped me get it into shape. We’ve got automated builds for both the bridge and the libpurple binding modules. In features land, group chats are now working at a basic level and I will be working on supporting profiles next. #purple-bridge:half-shot.uk is now a room where you can tell me why your favorite protocol doesn’t work with the bridge. (It’s also used for updates.)
A couple of SCS (Specs Changes Submissions) have been merged into the Informo specs, notably SCS #2 which introduces a complete technical description of the network’s nodes and their expected behaviour, and SCS #4 which changes the duration of the call for public review period, shrinking it from 14 days to 7 days, in order to speed specs work up while letting a decent amount of time for people to give a look at new SCSs and voice their concerns.
aside from mundane bugfixing, Quaternion’s timeline scrolling has been improved in the master branch. Along with that, the native scrollbar can now be used instead of the shuttle scroller that is loved by some and equally hated by some others. Unfortunately, all that work has a side-effect that under some circumstances the timeline backlog is no more loaded. This will be fixed later this week.
Together with the ongoing work on refactoring room state cache and lazy-loading this makes Quaternion quite prone to regressions: unless you want to help to iron them out, it’s advised to stick with Quaternion 0.0.9.3 and wait for further announcements.
By the way, the latest Quaternion release is now available in OpenSUSE Tumbleweed rolling distribution.
Synapse has a new release candidate – 0.33.9rc1 – If you’d like to help us test it, you can get it here.
This week in Koma, I have been working on a correct implementation of the user registration process. Currently waiting for a small issue with synapse to get fixed
For kotlin programmer who might be interested https://github.com/koma-im/koma/pull/6
f-droid.org has set up a new matrix (synapse) server
An implementation for Push-to-Talk for Jitsi calls in Riot has now been completed and is in the review phase. This was a result of multiple weeks of work, with code changes across many different repositories. Will hopefully make a difference with background noise or many participants. Look forward to seeing it land in /develop sometime shortly! Works with both Scalar and Dimension setups.
Half-Shot: “The events API update for Slack was released on riot.im/develop a little while ago, which let you do more than webhooks could let you do. The UI scalar/integration manager bits were left on /develop for testing but got rolled out to /app this week.”
We continue the new format for Matrix Live season 3 by chatting with Francois from New Vector, to get a sneak preview of the work he’s doing on a new version of matrix-android-sdk, and how that will impact Riot:
Dendrite and Brendan
Welcome to Brendan, who has started working on Dendrite as his new day job at New Vector:
There’s been some progress on Dendrite (🎉), with a couple of bug getting fixed along with some progress in the implementation of Matrix endpoints, such as the /backfill federation one (documented here), which has already been merged, and the /messages one from the client-server API (documented here) for which a pull request has been opened and is currently under review.
TWIM (but actually over the last few weeks), thanks to the efforts of a new contributor, matrix-puppet-slack v1.7.0 and v1.8.0 have been released, fixing a number of old and new issues and adding support for new types of Slack events, including bidirectional @-mentions, Slack-to-Matrix typing notifications, fixing Slack-to-Matrix image/file uploads with comments, and more!
The matrix-puppet-bridge projects have gotten relatively quiet over the past year or so, but there’s still plenty of bridges with plenty of features to implement and plenty of bugs to fix (and, even more importantly, bugs to report!) for any would-be-contributors who’d like to use a trusted Matrix homeserver as their double-puppetting Slack/iMessage/Facebook/GroupMe/iChat/Skype/Hangouts/Signal/Tox client from which to brag to their friends on the other platforms about how great Matrix is.
tulir has been making big progress on his maubot management UI:
The maubot management UI has progressed well, but isn’t quite ready yet. I think it should be usable by Next Week in Matrix.
It can be used to set up and configure a maubot instance and plugins. Once it’s ready, it should be possible to do everything except installing maubot itself through the UI: installing and updating plugins, adding matrix clients, configuring plugin instances, viewing logs, etc.
HK Bot is an anti-abuse bot
Coffee continues his streak of TWIM mentions by bringing a new bot to combat abuse:
HK Bot is an anti-abuse bot for public Matrix chatrooms.
This is a bot that really shouldn’t exist, but since some people just like to make others’ lives more difficult, here we are.
The purpose of this bot is twofold. It can automatically oversee rooms and respond to abuse, based on programmable pattern rules, providing a stop-gap measure in case no human moderators are nearby. It can also automate some tedious tasks via its command interface, the primary one being the complete redaction of all of an abuser’s messages.
HK Bot is still under construction and contains dangerous features. Use with caution.
X-SAMPA to IPA bot
Dandellion “made an X-SAMPA to IPA bot based on matrix-bot-sdk and discord’s conniebot”. This bot essentially lets you use ASCII characters to get an output in IPA. The advantage of this is that you can much more easily type and transmit pronunciation (because you don’t need to find the characters).
I’ll just have to make it a bit more configurable, but then I’ll throw the source up
When making constructed languages and talking about linguistics, it’s nice to get an easilly readable IPA representation of a word, but it’s really hard to write IPA, which is why x-sampa exists as a way to input IPA with a normal keyboard!
vabd, the unknown organiser of Informo provided an update about the spec:
A handful of SCS (Specs Changes Submissions) to the Informo specifications have been happening over the last week and a half, with some of them still open to public review for at least a few days before being merged into the specs. The list of SCS open to review can be found here, and people can track new SCS and status changes to existing ones through our specs bot that’s living in #discuss:weu.informo.network 🙂
I increased message rendering performance in the room history. Also the history doesn’t move it’s position anymore when older messages are loaded, which results in a much better experience. All the changes are in master, but we didn’t make a new release.
I have made a video about Riot which could fit in the Guides on matrix.org. It’s for beginners, in French. It’s 6 months old, but I just uploaded it on youtube. Also it’s available on peertube.
More Things This Week
ma1uta introduces a new client built on JavaFX: no code yet, but it’s built on the previous Java Matrix work he’s been doing. “It will be cross-platform (linux,windows,osx I hope) client with supports of the multi accounts.”
Half-Shot also continued work on bridging via libpurple: “I’ve nearly got group chats working, with invites (and hopefully people joining and leaving them showing up properly) as well as user’s having profiles.”
Since the last TWIM update, koma is updated to kotlin 1.3, experimental coroutines are replaced with stable ones. The changes are being tested and should be merged soon. A new contributor has joined, so expect development to speed up a bit.
in preparation for the upcoming Matrix 1.0 release, we’ve been moving ahead with the rest of the open governance plan – and we’re happy to announce that as of a few hours ago, the initial incarnation of The Matrix.org Foundation exists!
Watch this space over the coming weeks as we announce the Guardians and finish bootstrapping the Foundation into its final long-term form! Meanwhile, any questions: come ask in #matrix-spec-process:matrix.org
Just wanted to let everyone know that changes are coming to the server list: I’ve put up a notice on the site that starting Nov 16th I will only show a curated list of servers I would recommend to join.
This reduces the workload for me quite a bit and avoids me becoming some kind of arbiter on what encompasses the Matrix universe… I think it is also more useful for users who are looking for a server to join.
And there is always matrixstats.org for those who are looking for a more complete-ish list of known homeservers.
However, if you have ideas on how to continue the project, or would like to step up and get involved in maintaining a list using data and tools from Hello Matrix, please contact me. Alex told me:
if you find someone willing to take up the project of a more automated, self-service and complete list at a later date, I am more than willing to hand over all the stuff I currently have and might also lend a helping hand myself (if I have time then).
maubot management API
tulir has continued work on the revamped, now-Pythonic maubot, and has added a management API:
The maubot management API I mentioned last week is now mostly ready. It should be possible to use it to set up a maubot instance and plugins without filling the database manually. There’s no UI yet though, so it still means curling manually.
The management API also supports the fancy plugin reloading stuff which was the > reason I rewrote maubot in python: You can POST an updated plugin to the API and it’ll install it without having to restart.
I also made a bunch of plugins while working on the API that I used to test the API: a dice rolling/calculator bot, a bot that replies with the MXC URI of images you send it, a simple echo/ping bot and an xkcd bot
Next steps are making the management UI, a few more plugins and making setup and development instructions so that other people could run it and make plugins
My lightweight bot/client framework, matrix-client-core, received its first tag ever. Version 0.0.1 is relatively stable, and lies on the doorstep of some refactoring work (ongoing) which should keep the master branch backwards compatible for now, but could make things less stable as I add new commits.
It turns out this isn’t strictly a new project:
[it has] been there all along, quietly powering FAQBot and all of my bots. 😁 Maybe I have failed to explicitly indicate it as such up until now. (oops)
Always good news to see more bot-creation tooling!
Max has updates on mxisd, Identity Server for Matrix:
mxisd v1.2.0-rc.1 is out with support of all features for the Exec Identity Store, allowing connectivity to totally custom/arbitrary backends. Feedback is extremely welcome!
Half-Shot interfaces with libpurple
It’s a job that someone needed to do, and that someone was Half-Shot (who else?)
I’ve been reviving node-purple (a library for communicating with libpurple) and making a brand new bridge service to make use of it called matrix-appservice-purple. Today I got it to the point where you could link your XMPP account to your matrix user and have it bridge PMs over.
Work is ongoing to make it bridge group chats, profiles, contacts lists and support other protocols better in the coming weeks
NSFW image detection API (on Matrix)
Black Hat is often found working on Spectral (previously ‘Matrique’.) This week, he has been building @nsfw:encom.eu.org, which is a bot designed to give scores for how likely an image should be classified as NSFW. It’s a simple mechanism, you give it an image, it gives you a JSON object with the result. For example:
My avatar returned less than 1% probability of being NSFW, which I was actually a little offended by.
kitsune is forced by his employers to use Viber, so is thinking of creating a Matrix bridge.
I spent some time this week repeatedly installing Synapse, then working with Stefan to create a new, hopefully definitive installation guide (available soon). I can also personally recommend Slavi‘s matrix-docker-ansible-deploy project, this is a great way to get a Synapse installation (and more!) running.
lately in #twim:matrix.org posters have been providing much clearer and atomic updates, which I like a lot
Matrix Live, season 3 episode 2
We continue the new season of Matrix Live. This re-booted season has a slightly different format to previous: in each outing, there will be a single deep-dive topic. This week, Matthew and recent-Matrix-arrival Nad discuss UX for E2E encryption key handling. This is an unsurprisingly complex design question, both in terms of how it should behave and how it should look. Nad shared his latest thinking in a blog post earlier today, and you can watch the video below.
Enjoy your week. We’ll see you back here next week, but if you are working on something using Matrix, come chat with us in #twim:matrix.org!
We have a LOT of updates this week, so let’s dive straight in!
We’ve covered the growth of this project several times in TWIM, but I wanted to give a little more attention to the work Slavi has been doing with matrix-docker-ansible-deploy. Synapse is a large Python project with many configurable options, and many optional components, so installing it has sometimes been a challenge. I have seen many reports that using Anisble and Docker, and in particular using these playbooks from Slavi, is a more sane way to install Synapse. The tools get a lot of attention and updates. This week, Slavi reports:
Dimension is an integration manager for Matrix. It’s written and maintained by TravisR, and allows you to an a pre-defined selection of widgets, bots and bridges to improve your self-hosted Matrix experience. Check out: https://dimension.t2bot.io/. This week, TravisR reports:
Dimension has received quite a lot of updates over the last week. Here’s what’s hot off the press:
4 new bridges can be self-hosted and managed in Dimension: Telegram, Webhooks, Slack, and Gitter.
3 new widgets are available: Grafana, TradingView, and Spotify.
Add your own custom bots for people to add to their rooms.
A dark theme has been added and is automatically applied if you use the dark theme in Riot.
The overall UI has been updated to be slightly more modern and less bright orange.
Various bug fixes and improvements (is it even possible to have a changelog without this?)
As per usual, if you find any bugs or have ideas for things to add to Dimension feel free to come by #dimension:t2bot.io
Spectral now provides an AppImage along with Flatpak build. Also, thanks to the notification codes from nheko, Spectral can show icons in notifications, and now enters corresponding room when clicking on the notification. It also gains several UI/UX improvements.
P.s. I have resubmitted Spectral to Flathub.
The Linux Gaming community has gotten a proper matrix community (+linux-gaming:matrix.org) with a fair few rooms in it, all of which are bridged to a discord channel via my matrix-appservice-discord instance.
mxisd v1.2.0-beta.3 is out with the start of a brand new Identity store based on arbitrary executable, to connect to anything and everything. Authentication is implemented at the moment (see doc). Feedback is very welcome to improve as much as possible for v1.2.0
Quaternion translations: German and Polish now available
Last week we had an update from kitsune to say that there was a new Lokalise project to allow Quaternion translations. This week, we learn that the first translations are now available:
First couple of translations – German and Polish – have made it to the released Quaternion 0.0.9.3 – thanks to krombel and krkk for their contributions! Swedish and Russian translations are in the works.
The first stable release of the #matrix messenger #fluffychat is out now. 😀 Get it from: https://www.fluffy.chat
Thanks to all who have helped me. Thanks to regionetz for hosting the ubports.chat homeserver, thanks to @matrix for the awesome work, thanks to @Ubports for this awesome platform and to fabiyamada, advocatux, wayneoutthere, lionelb, Diogo, mithgarthsormr, mark, and all the awesome people from the community!!
With your help, Ubuntu Touch is still alive and has got a new stable messenger!
We made a Matrix bot that shouts about updates to change submissions to Informo’s specifications. It basically processes all changes made to the list of labels for each issue and PR of a GitHub repository’s, and generates a notice message that it sends to the configured room(s). We made it because we wanted the people that are interested in Informo to know in real time about any change made to the state of proposals, along with the calls for public reviews. We just set it up in #discuss:weu.informo.network, and published its source code along with a built binary here: https://github.com/Informo/specs-bot
It might also be worth noticing that, although we designed it to shout about updates to Informo’s specifications proposals, we also made it compatible with other projects, e.g. the Matrix specs
Push-to-talk functionality with Jitsi on Riot
anoa has been making improvements to Video Calling on Riot:
I’ve been working on global push-to-talk functionality with Jitsi on Riot. I’ve got toggle on/off functionality working, but still trying for walkie-talkie mode. To do so, I need to get this library working with Riot: https://github.com/WilixLead/iohook
If anyone has experience with native Node modules and/or Electron, please hit me up! @andrewm:amorgan.xyz
Greetings from Mozfest
Mozfest is a tech-focused event happening this weekend in London. Neil and I have been along tonight and we’ve been chatting to a lot of people about Matrix, decentralisation and all those things we love! Check out our very short and sweet video below!
This is the start of Season Three of Matrix Live. Matrix Live seasons are variable in length, based on the data available so far. From this season, Matrix Live with change the format slightly, based on feedback. The videos will try to be a bit more interesting, varied, and deep. With this video being the start of a new season, it was meant to be more substantive with us talking to Mozfest-ites, but I lost track of time, so this shorter but still energetic video will hopefully convey the idea.
The maubot Python rewrite I twimmed two weeks ago is now complete. The plugin system seems to work well and I’m pretty sure I’ll be able to implement proper plugin reloading now.
Next I’ll implement plugin config storage and some way to manage maubot and plugins (maybe a plugin to manage plugins?)
Riot Web 0.17, Riot Android 0.8.18: Lazy Loading
This week saw the launch of Riot Web 0.17, and two bug-release updates (0.17.1 and 0.17.2) to fix issues on the Windows desktop app. This version is substantially faster due to its use of Lazy Loading room members. Read more here. Meanwhile, Travis continues his foray into ‘first impressions’ bugs – including an initial implementation of .well-known URI support!
Riot Android 0.8.18 is also available from the Play Store and F-Droid, with Lazy Loading option available in the Labs menu (but still has a few bugs left).
Riot iOS meanwhile is busy implementing incremental server-side E2E key backups, and there’s generally been a huge amount of work on E2E encryption UX across the board in preparation for all-new E2E on Web and iOS. More details will be coming soon!
After being in RC for a week, Quaternion 0.0.9.3 is ready and will be released over the weekend. Most importantly, you can now translate it into your language! Just head over to https://lokalise.co/public/730769035bbc328c31e863.62506391/, register (you can optionally reuse your GitHub account), ask in #qmatrixclient:matrix.org to add your language to the list (if it’s not there yet) and start translating!
Coffee on Matrix Console for Android
Coffee rolled a natural twenty for bravery this week.
I have decided to take up maintainership of the Matrix Console for Android client. This is still the only multi-account capable Android client, but it is unmaintained and growing long in tooth. In particular, the API endpoints it uses may be removed from Synapse soon.
I will not be developing new features for it, but I will integrate reasonable patches if others want to take that on.
My own goals are to remove GCM and analytics, and get it added to F-Droid. And of course to switch to the latest API.
As part of this work, I have been fighting Gradle and its bugs to get matrix-android-sdk to build together with matrix-android-console as a git submodule, so it’s no longer necessary to inject the precompiled sdk into the source code. I did not win yet.
FluffyChat stable release creeps closer
Ubuntu Touch fans will know that FluffyChat has been progressing rapidly, and the project is approaching a first stable release. You can find current features being tested as part of the release here.
mujx has decided to stop maintaining nheko. Since many people are using it, we hope that someone will step in to continue his work. Thanks to mujx for his work so far.
tracking the latest synapse release on my K8s optimized image. Got no real time to work on things due to deadlines at work, but that should end come November, so expect more odd Ruby stuff after that point.
I attended the GSOC mentor summit. I had some great conversations with people who are using matrix and with people about bridging in different chat services. A lot of matrix stickers all vanished off the overloaded sticker table. I have lots of ideas for GSOC next year, and plan to try and get many more community projects involved. Finally, I dont need to eat chocolate for a month.
GSOC chocolate: GCHOC
Until next week
Next Friday /me is going to be at MozFest 2018, promoting Matrix, Open Source, decentralisation etc. (all the stuff we know and love), so I may change the schedule a little next week. We’re also going to reboot Matrix Live, so consider this a hiatus before Season 3 begins next week!!
MSC1695Half-Shot has a newly released proposal relating to Message Edits: “The key difference to this proposal is that it’s only the event schema which is based off the relates stuff. It does NOT do any kind of aggregations but simply is a format to allow bridges/clients to specify edits in the metadata.”
MSC1693 Erik has been thinking about state res v2 in the case of rejected events
We mentioned libQMatrixClient progress last week, but this week kitsune reports:
The Informo specifications documentation is out! 😀 It now lives right here: https://specs.informo.network
As a reminder, we were working on “phase 1” of this documentation, which goal was to outline how Informo was going to work. This is basically the foundation for a more complete technical documentation, which shall come later.
The idea is to enable people to give it a look as soon as possible, and to enable them to contribute to Informo as early in the design process as possible. The spec is entirely open, with a process for contributions documented and all its source files available on GitHub here: https://github.com/Informo/specs
The online version I initially linked is a live version from the repo’s master branch, which is updated each time commits are pushed to it (including on merging a PR).
If people have any question or remark regarding the specs, or Informo in a general manner, we’ll gladly answer them in #discuss:weu.informo.network (or on the #informo IRC channel on Freenode, which is bridged to the Matrix room)! 🙂
mxisd v1.2.0-beta.1 (beta release)
Max has continued work on mxisd, an Identity Server:
mxisd got a new beta release v1.2.0-beta.1.
It adds the ability to send email notification about room invites to existing accounts in Identity store that might not have been provisioned in the homeserver yet as users never logged in, or for users’ profile that are not auto-populated wiht 3PIDs. This is especially targeted for onboarding/enrolling times when adopoting Matrix in groups/corporations or for custom setups.
We would love to hear about your experience with it!
matrix-trello-bot has received quite the overhaul. It’s gone from a small bot that had pre-determined notifications for board activity to a much more capable bot. The bot now supports managing boards (yes, you can create a board from within Matrix!), lists, and cards including creating, moving, archiving, assigning, and querying.
On top of all that, the bot respects that not every room will want to receive every possible notification and offers commands to pick and choose which events it should notify about on a per-board basis. Feel free to give it a spin and check out the massive help menu with !trello help. Please send bugs and suggestions to GitHub :)
The help menu really is massive! Travis provided an image to highlight the scope of functionality provided (click for larger version):
Riot 0.16.6 Released
Fixes only these two issues:
Firefox private mode being broken > (https://github.com/matrix-org/matrix-react-sdk/pull/2195)
Breakage when mixing /app and /develop use (issue #7432)
As both fixes are not relevant for electron, we didn’t release 0.16.6 as the electron app, but rest assured 0.17 will of course be released as electron.
We missed this last week, but FluffyChat (client for Ubuntu Touch) v0.6.0 was released, with LOTS of new features:
Audioplayer in chat
Videoplayer in chat (only audio at the moment)
Edit chat aliases
Edit chat settings and permissions
Kick, ban and unban users
Edit user permissions
New invite page
Display and edit chat topics
Change chat avatar
Change user avatar
Edit phone numbers
Edit email addresses
Display and edit archived chats
New add-chat and add-contact pages
Display contacts and find contacts with their phone number or email address
Discover public chats on the user’s homeserver
Registration (currently only working with ubports.chat and NOT with matrix.org due captchas)
Register and login with phone number
Construct Docker image
mujx has created a new Docker image for Construct, the C++ homeserver:
Quaternion is now localisable! The web platform for translation will be set up in the nearest days; meanwhile those who can’t wait can just take the repo, look how the German translation is made and copy!
That’s all we can tell you!
Safe travels to Cadair, who is off to represent Matrix at the GSOC 2018 mentors summit. Check out Matrix Live below: