Ruma is a Matrix homeserver, client, and supporting libraries written in the Rust programming language. Matrix is an open specification for an online communication protocol. For an overview of the project, visit the home page. This Week in Ruma is a weekly summary of the development of Ruma, published on Sunday nights.
From the editor
Progress on the Ruma homeserver has slowed a bit while we wait for the next version of the Matrix specification to be published. There have been some significant changes to Synapse (the reference implementation homeserver) and Riot (the flagship Matrix client) that are not yet reflected in the spec, and as such, releasing an initial version of Ruma would not be of much value since it could have significant breakage with Riot.
Progress on ruma-api, ruma-client-api, and ruma-client continues, however. We're pushing ahead on one of the new API designs (codenamed "Ralith" after the community member of the same name, whose ideas it is based on) and it's working well so far. You can see the in-progress changes to ruma-api, the in-progress changes to ruma-client-api, and the in-progress changes to ruma-client that we're using to test out this new design. Further review and comments on these changes are welcome!
Notable changes to ruma
- Added support for transaction IDs for event creation.
- Added the
- Updated to the Macros 1.1 version of code generation crates.
- Updated Serde to the 0.9 series and Diesel to the 0.10 series.
- Added a version number field to Ruma's configuration to allow for future changes to the schema.
- Changed the behavior of the deprecated
/tokenrefreshendpoint to match the behavior of Synapse.
Notable changes to ruma-identifiers
- Published version 0.8.1, which adds missing Diesel trait implementations needed for the homeserver.
Call for participation
Interested in getting involved with Ruma? Here are some good places to start:
Previously featured and still available:
- [feature] Sending a m.room.member event again after changing avatar or displayname
- [discussion] Bikeshed: Module names
- [discussion] Implementing Event storage/search with a timeseries database or a lucene indexed database
- [feature] Implement a rate-limiting middleware
There are also plenty of API endpoints that still need to be implemented. Check the status document for a list.