This Week in Matrix 2018-09-14
FluffychatIt's been some months since we checked in with FluffyChat. If you're a Ubuntu Touch user, or have a device running it, you should see the progress that has been made recently on this Matrix client. Collected changelog 0.5.0 to latest (0.5.4):
- Search chats
- Chat avatars
- Search users in chats
- Security & Privacy settings:
- Disable typing notifications
- Auto-accept invitations
- New message status:
- Sending: Activity indicator
- Sent: Little cloud
- Received: Tick
- Seen by someone: Usericon
- Display stickers
- Minor UI improvements
- FluffyChat now automatically opens the link to the matrix.org consens
- Updated translations
SeaglassNeil has been keeping up the pace with Seaglass development:
Seaglass has had a substantial rewrite to the room cache to help improve reliability and reduce crashes, better thumbnail behaviour on inline images, various tiny visual tweaks, in-window blending, support for encryption key sharing requests for E2E rooms.Screenshot below shows the new E2E UI:
Rendering performance has been massively increased (if you ignore the occasional bug). Resizing the window shouldn't be so slow anymore and a lot of avatar image operations are no longer repeated unnecessarily
Other than that this week has mostly featured lots and lots of bug fixes, hopefully lots of crashes fixed.
QuaternionWhen not escaping typhoons, kitsune has found some time to continue work on Quaternion:
Quaternion's master branch is alive again - it's been prone to crashes in the last two weeks, now it shouldn't. Feel free to try the new room list organised by tag!
MTRNord has been working on SimpleMatrix:
SimpleMatrix now supports Basic messages sending (with Commonmark) and basic receiving of messages.
miniVectorMarcus has re-packaged miniVector for F-Droid:
There's now a second matrix client available in F-Droid: https://f-droid.org/packages/com.lavadip.miniVector/
This is a fork of Riot Android done by hrjet, f-droid release done by me. It's removing mostly jitsi group call functionality and some other smaller stuff. In doing so it manages to require far less permissions and is also only 12 MB in size instead of riots 20 MB.
Matrique gained alpha support for multiple accountsThis is thanks to leaning on libqmatrixclient's native multiple account support!
Riot Web 0.16.4 releasedThis is pretty much a maintenance release - fixing the DM avatar regression that crept in with 0.16.3, adding better support for warning users when their client hasn't yet synced with the server, and the final bits of work needed before we can turn on membership Lazy Loading in the upcoming Riot 0.17.
Full changelogs as always are split over the three projects which make up Riot/Web:
SDKs and Libraries
libQMatrixClient ecosystemAs you may know, Matrique, led by Black Hat, and Quaternion, led by kitsune, are both projects build using libQMatrixClient, a Qt5 library from kitsune designed for writing Matrix clients. While kitsune has been working on the library for some time, Black Hat has also now started making contributions:
libQMatrixClient now has a pkg-config file to further ease clients building on Linux systems, as well as more convenient API to track read markers if all users, not just of the local one.
matrix-js-sdk v0.11.0 releasedThis release contains support for lazy loading room members, and also some breaking changes relating to
- Support for lazy loading members. This should improve performance for users who joined big rooms a lot. Pass to
lazyLoadMembers = trueoption when calling
MatrixClient::startClientnow returns a Promise. No method should be called on the client before that promise resolves. Before this method didn't return anything.
- A new
CATCHUPsync state, emitted by
MatrixClient#"sync"and returned by
MatrixClient::getSyncState(), when doing initial sync after the
MatrixClientdocumentation for details.
RoomState::maySendMessage(userId)do not check the membership of the user anymore, only the power level. To check if the syncing user is allowed to write in a room, use
RoomStateis not always aware of the syncing user's membership anymore, in case lazy loading of members is enabled.
SynapseSynapse 0.33.4 was released, with a whole host of bug fixes, some enhancements to resource usage management and a bunch of internal changes in readiness for room member state lazy loading and our ongoing port to Python 3.
Meanwhile, Python 3 support for monolithic (non-worker) Synapses has finally landed on the develop branch, thanks to massive work from hawkowl and notafile - if you want to help us test and flush out any remaining byte/utf8 style errors, please create a virtualenv for python 3.6 or 3.5 (twisted doesn't support 3.7 yet) and point the develop branch of Synapse at it, tail the logs for ERRORs and report them via Github if/when you see them. In practice it seems pretty stable though, and noticeably reduces RAM and speeds things up thanks to improved GC and general performance work in Python.
We've also discovered that jemalloc works very well at improving RAM usage on Python 2 under Linux (we haven't tried it on Python 3 yet) by providing a more fragmentation-resistent malloc implementation; if you are having problems with your Synapse RAM spiking up we recommend giving it a go. All of the Matrix.org server is using it now.
Also, lots of ops work this week; Erik has prototyped a new storage strategy for state groups which shrinks storage requirements by 10x, we'll be applying this shortly to Matrix.org otherwise we're going to run out of disk space. There was also a regression on Synapse develop on federation, where outbound requests would get stuck and never retry - this impacted the matrix.org server badly over the course of the week, but as of Friday night we have a workaround in place. We're not aware of it affecting anyone other than the matrix.org deployment (and we haven't got to the root cause yet).
Construct homeserver progressThis week:
Added notification counts which show up in Riot now, and expanded support for g++-7 and 8 instead of just g++-6. Construct repository is found at: https://github.com/matrix-construct/construct.
IRC Connection TrackerHalf-Shot is continuing to work on the project to split out IRC connection management from the IRC bridge, letting the bridge be restarted without interrupting IRC connections!
The project is going quite well, and is going to be used on matrix.org once production ready which will really speed up upgrades and give us near zero downtime indifferent to the size of the bridge.
At the moment the project has the ability to spin up and maintain connections, however the connections are not supporting IRC fully yet as there are bits to do on the parsing and maintaining state side. There is also work on a top-like tool to visualise and control the service outside of the bridge so we can quickly handle any oddities if they come up. Finally, it allows you to hot reload the configuration without dropping existing connections!
On the work done to support this on matrix-appservice-bridge, there is basic support for stating connections on the bridge but it's in early stages at the moment.
SpecTravis has been tidying up loose bits on the Matrix spec this week:
- experimenting with splitting out the "Room" specific bits of the spec into a dedicated section rather than being split between the CS and SS APIs;
- trying to pin down a formal grammar for room aliases
- ...and identifiers in general.
#matrix-dev#matrix-dev:matrix.org was reborn as a new room a couple of weeks ago to flush out old corrupted events, but maybe not everyone knows. Come join #matrix-dev:matrix.org, it's a starting point for all developers looking to build on the platform. We're also rebuilding #test:matrix.org and #riot:matrix.org, although once we ship the new state resolution
A sneak peek at Modular...
Finally, there's been a massive amount of work on the New Vector side of things to soft-launch Modular - a paid hosting platform for Matrix servers (and, in future, paid integrations). At this point we're looking for early adopters who want a dedicated Riot+Synapse for communities or companies of 50 or more users - but don't want to have to run it themselves. Modular takes the homeserver hosting we've already been providing for Status, TADHack and others, and turns it into a mass-market product. The pricing for early adopters is over 5x cheaper than Slack, so if you've been dying to have a reliable, fast and expertly maintained homeserver without any of the headaches of admining one yourself, please head over to https://modular.im and give it a whirl and let us know how it goes! This is also a great way to support Matrix development in general, as money from Modular will directly keep the core Matrix team funded to work on Matrix. Once we're happy with the soft-launch and have incorporated any feedback we'll start yelling about it as loud as we can :)