| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | AD | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Notes: Difficulty is 1-5 (1=easy, 5=hard). If item is 4 or 5, it MUST be justified in the notes why it is hard. Status is % completed (0-100). Pre-requisites indicates a dependency on another item which isn't ready yet. | |||||||||||||||||||||||||||||
2 | ||||||||||||||||||||||||||||||
3 | Our cast: | Mark, Kegan, Brendan, Rich vdH, Erik, (((Rob))), (=0=) | ||||||||||||||||||||||||||||
4 | Client-Server API Endpoints | Work to do (arbitrary units) | Work to do (phase 1) | |||||||||||||||||||||||||||
5 | Item | Phase | Path | Who? | Difficulty | Status(%) | Pre-requisites | Notes | Amount done | Amount left | Amount done | Amount left | ||||||||||||||||||
6 | Content Repository API | 1 | /_matrix/media/r0/* | 4 | 100% | None. | Thumbnailing mustn't be forgotten | 8 | 0 | 8 | 0 | |||||||||||||||||||
8 | Device API | 2 | /(devices|delete_devices) | 3 | ? | https://github.com/matrix-org/dendrite/issues/280 | 0 | 4 | 0 | 0 | ||||||||||||||||||||
10 | Account Deactivation | 2 | /account/deactivate | 2 | ? | 0 | 2 | 0 | 0 | |||||||||||||||||||||
11 | Password Reset | 1 | /account/password/* | 3 | Core Registration APIs | 0 | 4 | 0 | 4 | |||||||||||||||||||||
14 | Room Creation | 1 | /createRoom | 2 | 25% | None. | Currently bare-bones | 0.5 | 1.5 | 0.5 | 1.5 | |||||||||||||||||||
16 | Room Directory APIs, local alias | 1 | /directory/room/{roomAlias} | 2 | 100% | None. | 2 | 0 | 2 | 0 | ||||||||||||||||||||
17 | Room Directory APIs, remote alias | 1 | /directory/room/{roomAlias} | 1 | 100% | None. | 1 | 0 | 1 | 0 | ||||||||||||||||||||
18 | Room joining local alias, local room. | 1 | /join/{roomIDOrAlias} | 1 | 100% | Room Directory API | Can join by room ID via 'Event state sending API' | 1 | 0 | 1 | 0 | |||||||||||||||||||
19 | Room joining invite, local room | 1 | /join/{roomIDOrAlias} | M | 1 | 100% | 1 | 0 | 1 | 0 | ||||||||||||||||||||
20 | Room joining invite, remote room | 1 | /join/{roomIDOrAlias} | M | 4 | 100% | Hard because we need to add infrastructure for storing invites outside of the main room server database. | 8 | 0 | 8 | 0 | |||||||||||||||||||
21 | Room joining remote alias, local room | 1 | /join/{roomIDOrAlias} | 3 | 100% | 4 | 0 | 4 | 0 | |||||||||||||||||||||
22 | Room joining remote alias, remote room | 1 | /join/{roomIDOrAlias} | 3 | 100% | 4 | 0 | 4 | 0 | |||||||||||||||||||||
24 | Device Keys | 2 | /keys/* | 3 | Device API | Is this API still in flux on Synapse? (No, we think it's finalised now, and from reviewing it t'other day it looks good --Matthew) | 0 | 4 | 0 | 0 | ||||||||||||||||||||
25 | Core Login API | 1 | /login/* | 2 | 95% | Core Registration APIs | Password login into an account | 1.9 | 0.1 | 1.9 | 0.1 | |||||||||||||||||||
26 | Riot Login APIs | 2 | /login/* | 3 | Email / MSISDN login into an account | 0 | 4 | 0 | 0 | |||||||||||||||||||||
28 | Logout API | 1 | /logout/* | 2 | 50% | Core Registration APIs | Doesn't work and requires /logout/all | 1 | 1 | 1 | 1 | |||||||||||||||||||
29 | Notifications | 2 | /notifications | 3 | Push API | 0 | 4 | 0 | 0 | |||||||||||||||||||||
32 | Profile APIs | 1 | /profile/{userID}/(displayname|avatar_url) | 2 | 100% | Core Registration APIs | 2 | 0 | 2 | 0 | ||||||||||||||||||||
33 | Profile APIs sending m.room.member | 1 | /profile/{userID}/(displayname|avatar_url) | 2 | 100% | Core Registration APIs | Gnarly as this needs to affect all m.room.member events for the user. Needs to propagate through all processes | 2 | 0 | 2 | 0 | |||||||||||||||||||
34 | Published room API | 1 | /publicRooms (or equiv) | Brendan | 4 | 100% | Room Directory APIs | Keeping the list up-to-date is tricky! | 8 | 0 | 8 | 0 | ||||||||||||||||||
35 | Pushers API | 2 | /pushers/* | 4 | ? | Need to check these on relevant events in an efficient way. Read counts need to reach sync server. | 0 | 8 | 0 | 0 | ||||||||||||||||||||
36 | Push Rules API | 2 | /pushrules/* | 4 | ? | Need to check these on relevant events in an efficient way. Read counts need to reach sync server. | 0 | 8 | 0 | 0 | ||||||||||||||||||||
37 | Core Registration APIs | 1 | /register | 3 | 95% | None. | Add concept of an 'Account'. Access tokens. Devices. Passwords. (Missing tests) | 3.8 | 0.2 | 3.8 | 0.2 | |||||||||||||||||||
38 | Riot Registration APIs | 2 | /register | 4 | captcha, email and msisdn | 8 | 0 | 0 | ||||||||||||||||||||||
41 | Membership APIs | 1 | /rooms/{roomID}/(join|kick|ban|unban|leave|invite) | Brendan | 1 | 100% | None. | These are just syntax sugar for the main membership APIs which are already implemented | 1 | 0 | 1 | 0 | ||||||||||||||||||
45 | View Membership APIs | 1 | /rooms/{roomID}/members|joined_members | Brendan | 2 | 100% | None. | 2 | 0 | 2 | 0 | |||||||||||||||||||
46 | View Membership APIs for users who left | 1 | /rooms/{roomID}/members|joined_members | Brendan | 2 | 100% | None. | 2 | 0 | 2 | 0 | |||||||||||||||||||
47 | Pagination API | 1 | /rooms/{roomID}/messages | 4 | Sync API. | Optimisations, backfilling, interactions with Sync Server make this hard. | 0 | 8 | 0 | 8 | ||||||||||||||||||||
49 | Redaction API | 1 | /rooms/{roomID}/redact/{eventID} | 3 | ? | Making sure ALL processes load the redacted event is fiddly as it touches a lot of things. | 0 | 4 | 0 | 4 | ||||||||||||||||||||
51 | Event sending API | 1 | /rooms/{roomID}/send/{eventType} | Brendan | 2 | 100% | None. | Generic impl - needs idempotent PUTs | 2 | 0 | 2 | 0 | ||||||||||||||||||
52 | Event sending API | 1 | /rooms/{roomID}/send/{eventType}/{txnID} | vdh | 2 | 0% | None. | Generic impl - needs idempotent PUTs | 0 | 2 | 0 | 2 | ||||||||||||||||||
53 | Room State API | 1 | /rooms/{roomID}/state | Brendan | 2 | 100% | ? | This needs to hit the syncserver or..? | 2 | 0 | 2 | 0 | ||||||||||||||||||
54 | Event state sending API | 1 | /rooms/{roomID}/state/{eventType}/{stateKey} | 2 | 75% | None. | Generic impl - invites need special casing. https://github.com/matrix-org/gomatrixserverlib/pull/37 | 1.5 | 0.5 | 1.5 | 0.5 | |||||||||||||||||||
55 | Room Peek API, stub | 1 | /rooms/{roomID}/initialSync | 1 | 100% | None. | This is just a stub to allow Riot Web to join the room without it trying to peek into the room. | 1 | 0 | 1 | 0 | |||||||||||||||||||
56 | Room Tagging | 2 | /rooms/{roomID}/tags | 3 | None. | 0 | 4 | 0 | 0 | |||||||||||||||||||||
57 | Typing API | 2 | /rooms/{roomID}/typing/{userID} | 3 | None. | 0 | 4 | 0 | 0 | |||||||||||||||||||||
58 | Receipts | 2 | /rooms/{roomID/receipt/{receiptType}/{eventID} | 4 | ? | Interactions with room server make it harder than presence/typing | 0 | 8 | 0 | 0 | ||||||||||||||||||||
60 | Send-to-Device | 2 | /sendToDevice/* | 4 | Device API | Basically is message sending/receiving all over again | 0 | 8 | 0 | 0 | ||||||||||||||||||||
61 | Sync messages and state | 1 | /sync | 3 | 100% | None. | Currently bare-bones. Need optimisations. Lots of APIs glue in bits into the /sync response, filtering, etc | 4 | 0 | 4 | 0 | |||||||||||||||||||
62 | Sync history visibility | 1 | /sync | 3 | 0% | None. | Currently bare-bones. Need optimisations. Lots of APIs glue in bits into the /sync response, filtering, etc | 0 | 4 | 0 | 4 | |||||||||||||||||||
63 | Sync account data | 1 | /sync | 2 | 100% | None. | Currently bare-bones. Need optimisations. Lots of APIs glue in bits into the /sync response, filtering, etc | 2 | 0 | 2 | 0 | |||||||||||||||||||
64 | Sync invites | 1 | /sync | M | 3 | 100% | None. | Currently bare-bones. Need optimisations. Lots of APIs glue in bits into the /sync response, filtering, etc | 4 | 0 | 4 | 0 | ||||||||||||||||||
65 | Sync invites federation edge cases (#252) | 1 | /sync | 2 | 0 | 2 | 0 | 2 | ||||||||||||||||||||||
66 | Sync filtering | 1 | /sync | 2 | 0% | None. | Currently bare-bones. Need optimisations. Lots of APIs glue in bits into the /sync response, filtering, etc | 0 | 2 | 0 | 2 | |||||||||||||||||||
68 | Account Data | 1 | /user/{userID}/account_data | 2 | 100% | None. | 2 | 0 | 2 | 0 | ||||||||||||||||||||
69 | Filtering | 1 | /user/{userID}/filter | 2 | Sync API. | Impl of filters is easy, but applying them is hard (bundled under the Sync item) | 0 | 2 | 0 | 2 | ||||||||||||||||||||
71 | TURN Server APIs | 2 | /voip/turnServer | 1 | ? | https://github.com/matrix-org/dendrite/issues/279 | 0 | 1 | 0 | 0 | ||||||||||||||||||||
72 | History Visibility | 1 | 4 | 0% | Sync API. | Interactions with room server make it harder than presence/typing - currently it's all 'shared' | 0 | 8 | 0 | 8 | ||||||||||||||||||||
73 | Make sytest run Dendrite | 1 | vdH | 2 | 100% | |||||||||||||||||||||||||
74 | Dendrite Monolith Server | 1 | M | 2 | 100% | |||||||||||||||||||||||||
75 | Event auth for Third-Party Invites | 1 | Brendan | 3 | 100% | Cargocult the auth checks including validating the crypto on the 3PID invites from Synapse | ||||||||||||||||||||||||
76 | ||||||||||||||||||||||||||||||
77 | Server-Server API Endpoints | Work to do (arbitrary units) | ||||||||||||||||||||||||||||
78 | Item | Path | Who? | Difficulty | Status(%) | Pre-requisites | Notes | Amount done | Amount left | |||||||||||||||||||||
79 | Server Key APIs | 1 | /_matrix/keys/v2/sever | 1 | 100% | 1 | 0 | 1 | 0 | |||||||||||||||||||||
80 | Transaction send API, room events | 1 | /_matrix/federation/v1/send/{txnID}/ | 3 | 100% | 4 | 0 | 4 | 0 | |||||||||||||||||||||
81 | Transaction send API, typing events | 2 | /_matrix/federation/v1/send/{txnID}/ | 2 | 0 | 2 | 0 | 0 | ||||||||||||||||||||||
82 | Transaction send API, receipt events | 2 | /_matrix/federation/v1/send/{txnID}/ | 2 | 0 | 2 | 0 | 0 | ||||||||||||||||||||||
83 | Transaction send API, presence events | 2 | /_matrix/federation/v1/send/{txnID}/ | 2 | 0 | 2 | 0 | 0 | ||||||||||||||||||||||
84 | Transaction send API, device events | 2 | /_matrix/federation/v1/send/{txnID}/ | 2 | 0 | 2 | 0 | 0 | ||||||||||||||||||||||
85 | Outgoing Transactions | 1 | /_matrix/federation/v1/send/{txnID}/ | 3 | 100% | 4 | 0 | 4 | 0 | |||||||||||||||||||||
86 | Event lookup API | 1 | /_matrix/federation/v1/event/{eventID}/ | 3 | 100% | Need to ensure that only the servers that should be able to get an event can do so. (Otherwise this should be fairly easy) | 4 | 0 | 4 | 0 | ||||||||||||||||||||
87 | Missing Event API | 1 | /_matrix/federation/v1/get_missing_events/{roomID} | 3 | Event lookup API | Tricky graph queries are needed to lookup the missing events. | 0 | 4 | 0 | 4 | ||||||||||||||||||||
88 | State APIs | 1 | /_matrix/federation/v1/state(|_ids)/{roomID}/ | 2 | Event lookup API | 0 | 2 | 0 | 2 | |||||||||||||||||||||
89 | Make join API | 1 | /_matrix/federation/v1/make_join/{roomID}/{userID} | 2 | 10% | State APIs | 0.2 | 1.8 | 0.2 | 1.8 | ||||||||||||||||||||
90 | Send join API | 1 | /_matrix/federation/v1/send_join/{roomID}/{txnID} | 1 | 10% | Outgoing Transactions | 0.1 | 0.9 | 0.1 | 0.9 | ||||||||||||||||||||
91 | Make leave API | 1 | /_matrix/federation/v1/make_leave/{roomID}/{userID} | 2 | 10% | State APIs | 0.2 | 1.8 | 0.2 | 1.8 | ||||||||||||||||||||
92 | Send leave API | 1 | /_matrix/federation/v1/send_leave/{roomID}/{txnID} | 1 | 10% | Outgoing Transactions | 0.1 | 0.9 | 0.1 | 0.9 | ||||||||||||||||||||
93 | Invite API | 1 | /_matrix/federation/v1/invite/{roomID}/{eventID} | M | 3 | 100% | Handling invites from remote servers is hard to get right. | 4 | 0 | 4 | 0 | |||||||||||||||||||
94 | Backfill API | 1 | /_matrix/federation/v1/backfill/{roomID}/ | 3 | Tricky graph queries are needed to lookup the historic events. | 0 | 4 | 0 | 4 | |||||||||||||||||||||
95 | Query room alias API | 1 | /_matrix/federation/v1/query/directory | 1 | 10% | https://github.com/matrix-org/dendrite/issues/277 | 0.1 | 0.9 | 0.1 | 0.9 | ||||||||||||||||||||
96 | Query user devices API | 1 | /_matrix/federation/v1/query/user_devices | 1 | DeviceAPI | 0 | 1 | 0 | 1 | |||||||||||||||||||||
97 | Query client keys API | 1 | /_matrix/federation/v1/query/client_keys | 1 | 0 | 1 | 0 | 1 | ||||||||||||||||||||||
98 | Query profile API | 1 | /_matrix/federation/v1/query/profile | 1 | https://github.com/matrix-org/dendrite/issues/278 | 0 | 1 | 0 | 1 | |||||||||||||||||||||
99 | User devices API | 2 | /_matrix/federation/v1/user/devices | 1 | DeviceAPI | 0 | 1 | 0 | 0 | |||||||||||||||||||||
100 | E2E key lookup API | 2 | /_matrix/federation/v1/user/keys/claim | 1 | Device Keys | 0 | 1 | 0 | 0 | |||||||||||||||||||||
101 | E2E key claim API | 2 | /_matrix/federation/v1/user/keys/query | 1 | Device Keys | 0 | 1 | 0 | 0 | |||||||||||||||||||||
102 | Transaction pull API | 1 | /_matrix/federation/v1/pull/ | 2 | Outgoing Transactions | 0 | 2 | 0 | 2 | |||||||||||||||||||||
103 | Outbound Ratelimiting | 2 | * | 2 | 0 | 2 | 0 | 0 | ||||||||||||||||||||||
104 | Inbound Ratelimiting | 2 | * | 2 | 0 | 2 | 0 | 0 | ||||||||||||||||||||||
108 | Event Auth API | 1 | /_matrix/federation/v1/event_auth/{roomID}/{eventID} | 1 | Event lookup API | 0 | 1 | 0 | 1 | |||||||||||||||||||||
109 | Query Auth API | 1 | /_matrix/federation/v1/query_auth/{roomID}/{eventID} | 3 | 0 | 4 | 0 | 4 | ||||||||||||||||||||||
110 | Server version API | 1 | /_matrix/federation/v1/version | 1 | 0 | 1 | 0 | 1 | ||||||||||||||||||||||
111 | ||||||||||||||||||||||||||||||
112 | Other | |||||||||||||||||||||||||||||
113 | Item | Difficulty | Status(%) | Pre-requisites | Notes | |||||||||||||||||||||||||
114 | 2 | Push APIs (Sygnal?) | 4 | 0 | 8 | 0 | 0 | |||||||||||||||||||||||
116 | 2 | Rate-Limiting | 3 | 0 | 4 | 0 | 0 | |||||||||||||||||||||||
119 | 2 | Email notification API | 3 | Riot email notifications | 0 | 4 | 0 | 0 | ||||||||||||||||||||||
120 | 1 | Event Auth | 5 | 100% | The research into this made this hard and take a long time (guessing, will need Mark input) | 16 | 0 | 16 | 0 | |||||||||||||||||||||
121 | 1 | Event Signing | 5 | 100% | The research into this made this hard and take a long time (guessing, will need Mark input) | 16 | 0 | 16 | 0 | |||||||||||||||||||||
122 | 1 | State resolution | 5 | 100% | The research into this made this hard and take a long time (guessing, will need Mark input) | 16 | 0 | 16 | 0 | |||||||||||||||||||||
123 | 1 | Room server skeleton | 3 | 100% | 4 | 0 | 4 | 0 | ||||||||||||||||||||||
124 | 1 | Room server schema | 3 | 100% | 4 | 0 | 4 | 0 | ||||||||||||||||||||||
125 | 1 | Client API skeleton | 2 | 100% | 2 | 0 | 2 | 0 | ||||||||||||||||||||||