Telodendria To-Do List Key: [ ] Not Started [x] Done [~] In Progress [!] Won't Fix Phase 1: Getting off the ground [x] Name this project [x] Set up a CVS repository [x] Make CVS repository public [x] Write a build script [x] Write a coding style guide [x] Add a license [x] Add support and issue reporting guide [x] Add table of contents to website Phase 2: Building a foundation [x] Implement an array [x] Implement a logging facility [x] Implement a hash map [x] Allow custom hash functions for each hash map [x] Combine library code files [x] Implement configuration file parsing using hash map [x] Base64 encoding/decoding with padded/unpadded support [x] Write a release script [x] UTF-8 encoder [x] Implement a JSON library using the hash map and array [x] Basic encoding from HashMap/Array/strings, etc. [x] Basic decoding to HashMap/Array/strings, etc. [x] Proper string encoding [x] Proper string decoding [x] Canonical JSON [x] Keys are sorted lexiconographically [x] Floats are not allowed (ignore any float values) [x] Encode as UTF-8 instead of using \u escapes [x] Decode encoded strings to UTF-8 [x] Write a function that gets the current Unix timestamp in milliseconds [x] Parse the Telodendria config file [x] Add license header to all files [!] Add documentation for all public APIs (See below) [x] Implement a simple HTTP server [x] Implement param parser [x] URL encoder/decoder [~] Design server architecture [x] Route requests [x] Handle requests [~] Data abstraction layer [ ] Database upgrades/migration path [ ] Caching and cache control [x] Make memory info access O(1) [x] Error generation [x] Properly implement the command line options as stated in telodendria(8) [x] Remove "chroot" option, just chroot into the data dir, and make the log file live there as well. [x] Allow logging to the syslog [x] Fix memory leaks [ ] Fix bug where the socket stays open after quit. [ ] Possibly related to not closing the connections with fclose()? (see HttpServer.c, grep for fclose) [ ] Figure out how to write unit tests for array/hashmap/etc [ ] Add recipe to td script to upload patches to the Matrix room Phase 3: Welcome to Matrix [~] client-Server API [x] Error responses [x] CORS headers [x] /_matrix/client/versions [x] Well-known URIs [x] Make base-url optional in config [x] Make identity-server optional in config [ ] Client authentication [ ] Capabilities negotiation [ ] Server-Server API [ ] Application Service API [ ] Identity Service API [ ] Push Gateway API [ ] Room Versions Phase 4: [ ] Create an OpenBSD package and get it submitted to ports [ ] Add relayd examples to contrib/ [ ] Create a command line tool to manage Telodendria [ ] User management [ ] Room management [ ] Migrate from Synapse or Dendrite, whichever is more mainstream by the time we get here Documentation [x] Update rationale section [x] Update project description (no longer a CGI binary) [x] Clean up dark mode colors (tables, background, code snippets) [x] Add logo (possibly center title?) [x] Update code style to not include indent or line rules, but use indent(1) instead [x] fix typo "Subitting Patches" in Table of Contents [x] Make a note in Getting the Code that the password for the anoncvs account is just anoncvs [x] Add contributors list [x] Add list of make.sh recipes and what they do [x] Improve Google Lighthouse score on website [!] Image elements do not have explicit width and height [x] Background and foreground colors do not have sufficient contrast ratio (msg-error div) [x] Lists do not contain only
  • elements [!] Add other message divs for notes and warnings [~] Convert documentation to man pages [x] Clean up dark mode in man page CSS (links) [x] Synopsis table should not be styled [x] Make available on MANPATH in tools/env.sh [x] Convert list of man pages into a table on home page [~] Internal API docs [x] Array [x] Base64 [ ] CanonicalJson [ ] Config [ ] API (Config.3) [ ] File format (Config.5) [ ] Constants [x] HashMap [ ] Http [ ] HttpServer [ ] Json [ ] Log [ ] Matrix [ ] NonPosix [x] Queue [ ] Routes [ ] TelodendriaConfig [ ] Util [ ] Memory [ ] Db [x] Add onboarding documentation [x] Building from source [!] Writing config file (see Config.5)