Skip to content

Latest commit

 

History

History
49 lines (38 loc) · 3.2 KB

README.md

File metadata and controls

49 lines (38 loc) · 3.2 KB

My work focused mainly on Dendrite, Matrix server written in Go.

Federation

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.

Things worked on:
  • 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

Typing notifications are ephemeral events which are generated when user types in a room. These are sent of to all members of the room.

Things worked on:
  • 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
Things left to do:
  • Accept typing events via federation API. issue #573
  • Send Typing events to clients via syncapi. issue #574
  • Forwarding typing events to AS. issue #578

Miscellaneous Work

  • 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.