My work focused mainly on Dendrite, Matrix server written in Go.
Large chunk of the work involved implementing left-over Federation APIs. These form the core of Matrix's decentralized approach to communication. Federation is basically a fancy term for server-server communication, using which two Matrix servers stay in sync.
- State APIs: This is used by Matrix servers to query each other for determining the state of a room at some point of history. #486
- GetMissingEvents API: Sometimes two federating servers get gaps in their event graph,
this is used to fill in the gaps.#516 - User Query API: This is used to query the devices for an user. #498
- Leave API: This is used when an remote user leaves a local room. #535
This was accompanied by small fixes to improve code consistency & error responses.
Typing notifications are ephemeral events which are generated when user types in a room. These are sent of to all members of the room.
- Authenticate typing requests from client and send it off to Typing Server. #550
- Build the Typing Server, maintain current list of typing users in all (local) rooms. #559 & #567
- Send Typing events to other federating servers. #572
- Accept typing events via federation API. issue #573
- Send Typing events to clients via syncapi. issue #574
- Forwarding typing events to AS. issue #578
- Build a transactions cache, to make clientapi idempotent. #440 & #444
- Store transaction IDs in roomserver to prevent reprocessing of events. #446
- [gomatrixserverlib] Add token library based on macaroons. #89
- Username auto generation. #470
- Handle application services in clientapi authentication. #433 & #427
- Add internal API to query membership for an user in roomserver. #544
Also varoius other fixes and code quality improvements.