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:
- Potential API redesign to better handle endpoints without certain kinds of parameters
- Another potential API design merging the existing API with some of Ralith's ideas
- Yet another potential API design using generics
- Revision of the API based on Ralith's ideas.
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.
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
- [feature] Add missing documentation
- [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.