matrix-org / matrix-org/complement-crypto
Clean up Client API
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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