Working project name, not final.

Trey Del Bonis 9d70e23b09 test: reworked test entrypoint for new flexitest version 1 månad sedan
client f04449ede6 db: reorganized massively, splitting our components like MQ and making names more consistent 2 månader sedan
codec 1da1a7145e util: moved most modules into new codec crate and reorganized 2 månader sedan
common 2794ed859e meta: add new ecksport deps in crate tomls, code still broken 3 månader sedan
contrib 856f5f3682 sqldb, contrib: generate sqldb crate with `--lib` flag 8 månader sedan
core 21cce0effd client, core, db, homeserver: remove "origin" concept from MQ system 2 månader sedan
datamodel bd6e2c2d5f datamodel: added module 2 månader sedan
db f04449ede6 db: reorganized massively, splitting our components like MQ and making names more consistent 2 månader sedan
docs 9686fab82d docs: added planes.md 2 månader sedan
homeserver f04449ede6 db: reorganized massively, splitting our components like MQ and making names more consistent 2 månader sedan
ident 1da1a7145e util: moved most modules into new codec crate and reorganized 2 månader sedan
proto 1da1a7145e util: moved most modules into new codec crate and reorganized 2 månader sedan
rpc f04449ede6 db: reorganized massively, splitting our components like MQ and making names more consistent 2 månader sedan
test 9d70e23b09 test: reworked test entrypoint for new flexitest version 1 månad sedan
tools 1da1a7145e util: moved most modules into new codec crate and reorganized 2 månader sedan
user f04449ede6 db: reorganized massively, splitting our components like MQ and making names more consistent 2 månader sedan
util 1da1a7145e util: moved most modules into new codec crate and reorganized 2 månader sedan
.gitignore 8237d39ff4 test: mostly finished test harness 7 månader sedan
Cargo.lock f04449ede6 db: reorganized massively, splitting our components like MQ and making names more consistent 2 månader sedan
Cargo.toml f04449ede6 db: reorganized massively, splitting our components like MQ and making names more consistent 2 månader sedan
README.md acd6ec6c08 meta: updated README again 6 månader sedan

README.md

aspect

A better messaging and chat protocol. Building it the right way.

rough design doc

Rough roadmap

These are handwavy milestones that I expect to change.

Phase 1

  • Prototype device identity system
  • Basic MLS group setup/teardown
  • Support adding/removing devices
  • ZMQ or AMQP channel message streams

Phase 2

  • Protocol cleanup
  • Properly authenticate user device identity graph
  • Proper device attestation for homeservers
  • Experiment with roaming identities?
  • Replace transport auth with better system
  • Homeserver push events to change group membership (use OpenMLS support for this)
  • More sophisticated message structure and local channel state
  • Prototype spaces?
  • More homeserver administrative actions

Phase 3

  • More thorough spaces impl
  • Invites
  • Persistent channel data store (for custom emotes, stickers, etc.)

Known issues

Keeping this list here so that I remember what I'm doing.

  • No transport encryption, homeserver user creds are in plaintext.
  • User authentication is shaky, should add some kind of session authentication to avoid resending creds and stuff.
  • No connection pooling or automatic reconnect to homeservers.
  • Password hashing round count is way too high for debug builds, takes 5+ seconds.
  • Lots of ORM queries have // TODOs on them because we query more columns than we need to, that could be reduced.
  • Lots of queries could be made into JOINs but I don't know how to express that to SeaORM correctly.
  • Lots of Codec serialization is "self-documenting" in the bad way (the source code is the only documentation), switch to using Stencil when it's mature enough.