This Week in Ruma

Ruma is a homeserver for Matrix 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 ruma-api and ruma-client-api, converting ruma-client-api over to the new approach ruma-api is using. After converting several of the modules using macros, I decided to take another stab at using a macros 1.1 procedural macro for automatically implementing the details of each request and response type. The result is the new ruma-api-derive. So far it handles only a couple of simple variations, but with some of the groundwork laid, it should be easier now to fill out the remaining functionality. The result will be that ruma-client-api will be completely declarative, and won't have to resort to manual trait implementation for a few odd cases that didn't fit the pattern of the "macros by example" macros.

Notable changes to ruma

  • Updated Diesel to the 0.11 series.

Notable changes to ruma-identifiers

  • Published version 0.9.0, which updates Diesel to the 0.11 series.

Notable changes to ruma-events

  • Published version 0.6.0, which updates ruma-identifiers to the 0.9 series.

Call for participation

Interested in getting involved with Ruma? Here are some good places to start:

Previously featured and still available:

There are also plenty of API endpoints that still need to be implemented. Check the status document for a list.

This Week in Ruma

Ruma is a homeserver for Matrix 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 GET /rooms/:room_id/state endpoint.
  • 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 /tokenrefresh endpoint 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.

New contributors

Call for participation

Interested in getting involved with Ruma? Here are some good places to start:

Previously featured and still available:

There are also plenty of API endpoints that still need to be implemented. Check the status document for a list.

This Week in Ruma

Ruma is a homeserver for Matrix 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

With the recent death of my friend Tamara, and moving to a new home, I haven't been able to give Ruma the attention I would've liked in the last few weeks. The rest of the Ruma community is still helping to push things forward, and I thank them sincerely for that. In particular, I have shared commit access to the master branch of most Ruma repositories with top contributors mujx and farodin91, both in recognition of their continued contributions to the project, the trust I have in them now, and my desire to grow the community and not be a blocker for progress on the project when I'm unavailable. Congratulations and thank you to both of them!

We've had a lot of discussion over a major overhaul to the design of ruma-api. The discussion began when Simon Goller proposed some code for the first significant endpoint in ruma-client. It then continued in the Ruma room on Matrix, a reddit post, and a series of issues and pull requests against ruma-api:

Right now we are leaning towards that last one being the one we choose, but we still want to try implementing some of ruma-client-api and ruma-client against it to see how well it works. Feedback and participation in the discussion is most welcome!

Notable changes to ruma

  • Added initial support for user presence.
  • ruma's config file can now be indicated with an option to the CLI.

Notable changes to ruma-events

  • Published version 0.4.0, 0.4.1, and 0.5.0 to crates.io.
  • Updated serde to 0.9.

Notable changes to ruma-identifiers

  • Published version 0.7.0 and 0.8.0 to crates.io.
  • Updated serde to 0.9, regex to 0.2, and url to 1.4.
  • Updated diesel to 0.10, though this seems to have caused a regression, and will be fixed soon.

New contributors

Call for participation

Interested in getting involved with Ruma? Here are some good places to start:

Previously featured and still available:

There are also plenty of API endpoints that still need to be implemented. Check the status document for a list.

The source code and content of this website are free and available under the MIT license: www.ruma.io