matrix-org / matrix-org/complement-crypto

Clean up Client API

Open
#145 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
18
Forks
12
Avg merge
2d 12h
Merged PRs (30d)
6

Description

It has grown organically so we could test JS/Rust SDK. It's now time to think about the API more before we open it up to everyone.

Thoughts on each part of the API:
- `ClientCreationOpts` : Addition of extra options in https://github.com/matrix-org/complement-crypto/pull/144 keeps it extensible. We should cut down on as many fields as possible.
- [X] `Must...` variants: Remove them and decorate the Client API in tests with `Must` variants. It's crazy that impls need to implement `MustStartSyncing` AND `StartSyncing`, when the caller can just do the `err != nil` check on their end. https://github.com/matrix-org/complement-crypto/pull/146
- `Event`: re-check rust SDK and try to make it match the wire format for events as much as possible.
- `GetNotification`: it's useful as other SDKs have push-notification-like code path, but it's very rust SDK specific currently.

RPC-wise:
- `RequestOwnUserVerification` and `ListenForVerificationRequests`: we need to implement them. Can probably poll like we do with the waiters?
- Check RPC-only functions for sanity:
* Server.WaiterStart
* Server.WaiterPoll

Probably worth having a version handshake initially along with the port (e.g `56434 v1`). If we don't, we may have missing RPC functions or missing fields etc. This means we need to document the RPC API. Can we automate it?

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 inventorying the Client API areas named in the issue: ClientCreationOpts, Must... variants, Event, GetNotification, and the verification RPCs. Review the linked pull requests and the Server.WaiterStart/Server.WaiterPoll functions before deciding scope. Done requires an agreed API cleanup, implemented missing RPCs, and documented or versioned RPC compatibility.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.