matrix-org / matrix-org/matrix-rust-sdk

[EPIC] Spring cleaning

Open
#3,272 3 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
2.3k
Forks
500
Avg merge
1d 16h
Merged PRs (30d)
106

Description

# Spring cleaning

![image](https://github.com/matrix-org/matrix-rust-sdk/assets/552026/913143d2-80fc-4e0a-beef-031ec7a15c90)

## Motivation

As the seasons change and the warmth of the sun begins to illuminate our surroundings, we're often confronted with the less appealing aspects of the thaw: dust accumulating, cobwebs in every nook, neglected electronic parts under desks, and remnants of recent woodworking projects scattered about. It's a scenario many of us are familiar with. Similarly, our SDK has been the focus of relentless feature development, but now it's crucial to take a step back and see which puzzle pieces don't quite fit.

## The list

This list is unordered and contains short descriptions of issues that we should tackle. Some of the items on the list are known bugs and have a separate issue already, some of them do not. If you want to work on one of the items, and there isn't a separate issue already, please open a separate issue and link it in the list.

If it's unclear what one of the items means, please just ask and we'll reword it, or open a dedicated issue for the item.

### General
- [x] Bring back git-cliff with a vengeance, it probably makes sense to test this out in vodozemac.
- [x] Determine a release schedule with a 1-2 week feature freeze period.
- [ ] Switch to using [similar_asserts](https://github.com/mitsuhiko/similar-asserts), it provides much nicer diffs if an assert fails.
- [x] https://github.com/matrix-org/matrix-rust-sdk/issues/2937
- [ ] Get rid of the testing feature

### Main crate
- [x] The calculated name is stored in the `m.room.name` field of the `RoomInfo`
- [ ] The avatar URL for DMs is calculated by the SS proxy and put into the `m.room.avatar` field of the `RoomInfo`
- [x] AuthenticationService duplicates the ClientBuilder API without a builder
- [ ] The `BaseRoomInfo` since some time uses something called `MinimalStateEvent`,
this event isn't that minimal since it's keeping the whole content. Since it
is keeping the whole content, and additionally is using Ruma types for the
content, those may fail to be reserialized.
- [ ] People hack around having no `MemberList`, an equivalent to the `RoomList` but for members.
- [ ] Deprecate the base crate and merge the `BaseClient` into the main crate and `Client`.
- [x] Check that we don't handle state events in the timeline portion of the sliding sync responses, fixed by https://github.com/matrix-org/matrix-rust-sdk/pull/4095
- [x] https://github.com/matrix-org/matrix-rust-sdk/issues/1254
- [x] https://github.com/matrix-org/matrix-rust-sdk/issues/3079
- [x] https://github.com/matrix-org/matrix-rust-sdk/issues/3502

### Crypto crate
- [ ] Split the gossipping support in the crypto crate into separate submodules, one for the secret send and one for the, now optional, room key forwarding support.
- [ ] Crypto crate doc improvements and tutorial.
- [ ] Clean up the mess and documentation in the `PkSigning` support.
- [ ] Clean up the verification state machine.
- [ ] Move the crypto related locks from the `matrix-sdk` crate into the `matrix-sdk-crypto` crate, this would allow consumers of the crypto crate.
- [ ] No way to observe Device/UserIdentity changes, blocked by the multiprocess crypto crate stuff.
- [ ] https://github.com/matrix-org/matrix-rust-sdk/issues/2624
- [ ] https://github.com/matrix-org/matrix-rust-sdk/issues/2448
- [x] Replace the `#[zeroize(drop)]` macro with the `ZeroizeOnDrop` derive.
- [ ] Clean up the zeroization story around attachments.
- [ ] If the `auto_enable_cross_signing` `EncryptionSettings` setting is enabled, device keys get uploaded twice.

### FFI crate

- [ ] Don't return an `EventTimelineItem` in `latest_event()`, because there's no timeline involved (consider unifying with the type returned by the notification client)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the unchecked items in the epic and choose one with a clear scope, such as the main, crypto, or FFI crate work listed. Check whether the item already has a linked issue; if not, open a dedicated issue as requested. Done means the selected item has its own actionable issue linked from this list.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.