aboutsummaryrefslogtreecommitdiffstats

xmpp thingies

crates:

  • filamento: the client logic. handles commands and processes incoming stanzas. contains a message/user store.
  • lampada: the client structure. handles connection and reconnection, delegates command and incoming stanza processing to an implementor of Logic.
  • luz: jabber client connection and stream base types.
  • stanza: type definitions for converting to and from peanuts xml Elements for stanza parsing and composition.
  • jid: basic JID type, with parsing and display.

separate:

  • macaw: gui client that utilises filamento
  • peanuts: xml serialisation and deserialization library

specs:

  • [x] rfc 6120: core
  • [x] rfc 6121: im
  • [x] rfc 7590: tls
  • [x] xep-0368: srv records for xmpp over tls
  • [ ] xep-0474: server side downgrade protection for sasl
  • [x] xep-0199: xmpp ping
  • [x] xep-0203: delayed delivery
  • [x] xep-0030: service discovery
  • [x] xep-0115: entity capabilities
  • [x] xep-0163: pep
  • [x] xep-0084: user avatar
  • [x] xep-0172: user nickname
  • [ ] xep-0280: message carbons
  • [ ] xep-0191: blocking
  • [ ] xep-0085: chat state notifications
  • [ ] xep-0428: fallback indication
  • [ ] xep-0359: unique and stable stanza ids
  • [ ] xep-0424: message retraction
  • [ ] xep-0308: last message correction
  • [ ] xep-0461: message replies
  • [ ] xep-0490: message displayed synchronization
  • [ ] xep-0333: displayed markers
  • [ ] xep-0184: message delivery receipts
  • [ ] xep-0012: last activity
  • [~] xep-0059: result set management
  • [x] xep-0300: use of cryptographic hash functions
  • [~] xep-0131: stanza headers
  • [ ] xep-0245: /me
  • [ ] xep-0313: mam
  • [ ] xep-0166: jingle
  • [ ] xep-0449: stickers
  • [ ] xep-0154: user profile
  • [ ] xep-0100: gateway interation

user status:

  • [ ] xep-0107: user mood
  • [ ] xep-0108: user activity
  • [ ] xep-0118: user tune

connection:

  • [ ] xep-0198: stream management
  • [ ] xep-0352: client state indication

calls:

  • [ ] xep-0167: jingle rtp sessions
  • [ ] xep-0353: jingle message initiation
  • [ ] xep-0176: jingle ice-udp transport
  • [ ] xep-0320: use of dtls-srtp in jingle sessions
  • [ ] xep-0215: external service discovery (stun/turn)
  • [ ] xep-0293: jingle rtp feedback negotiation
  • [ ] xep-0294: jingle trp header extensions negotiation
  • [ ] xep-0338: jingle grouping framework
  • [ ] xep-0339: source-specific media attributes in jingle
  • [ ] privacy lists

mix:

  • [ ] xep-0369: mix

e2ee:

  • [ ] xep-0380: explicit message encryption
  • [ ] xep-0420: stanza content encryption
  • [ ] xep-0384: omemo
  • [ ] xep-0396: jingle encrypted transports omemo

file/media sharing (further research needed):

  • [ ] xep-0363: http file upload
  • [ ] xep-0329: file information sharing
  • [ ] xep-0447: stateless file sharing
  • [ ] xep-0385: stateless inline media sharing
  • [ ] xep-0066: out of band data
  • [ ] xep-0261: jingle in-band bytestreams
  • [ ] xep-0234: jingle file transfer

need more research:

  • [ ] message styling
  • [ ] xep-0071: xhtml-im
  • [ ] xep-0393: message styling
  • [ ] message routing NG

will prioritise new spec instead of:

  • [ ] muc
  • [ ] xep-0045: muc
  • [ ] xep-0249: direct muc invitations
  • [ ] xep-0410: muc self-ping
  • [ ] xep-0402: pep native bookmarks
  • [ ] vcard legacy
  • [ ] xep-0292: vcard4
  • [ ] xep-0398: user avatar compat
  • [ ] xep-0153: vcard avatars
  • [ ] xep-0054: vcard-temp
  • [ ] legacy bookmarks
  • [ ] xep-0048: legacy bookmarks
  • [ ] xep-0049: private xml storage

pubsub:

  • [ ] xep-0060: pubsub
  • [ ] xep-0222: public data via pubsub
  • [ ] xep-0223: private data via pubsub

later (nice to have):

  • [ ] xep-0077: in-band registration
  • [ ] xep-0157: contact addresses
  • [ ] xep-0455: service outage status
  • [ ] web compliance: rfc 7395, xep-0206, xep-0124, xep-0156
  • [ ] mobile compliance
  • [ ] xep-0357: push notifications
  • [ ] xep-0286: mobile considerations
  • [ ] client connection optimisations
  • [ ] xep-0386: bind 2.0
  • [ ] xep-0409: im routing-ng
  • [ ] xep-0397: instant stream resumption
  • [~] xep-0390: entity capabilities 2.0
  • [ ] improved on-boarding
  • [ ] xep-0401: easy user onboarding
  • [ ] xep-0379: pre-authenticated roster subscription
  • [ ] xep-0445: pre-authenticated in-band registration
  • [ ] portability
  • [ ] xep-0227: portable import-export
  • [ ] xep-0283: moved
  • [ ] modern auth
  • [ ] xep-0388: extensible sasl profile (sasl 2.0)
  • [ ] xep-xxxx: oauth client login
  • [ ] xep-xxxx: client access management

to write:

  • [ ] some xmpp user avatar metadata nodes published as jpeg???
  • [ ] need to specify user avatar id as hexadecimal
  • [ ] do disco results always have to be in the right order? and can you not both have a normal and a +notify?
  • [ ] advanced message body (for custom emoji, styling, etc.). can opt in to mixed content in message body. base as bold, italic, underline, strikethrough, then extensible with new tags for e.g. emoji, color, size, font, chat effects.
  • [ ] omemo cross-signing verification or something along those lines, with a main device and linked devices. safety numbers.
  • [ ] better stable ids....?
  • [ ] better stickers/emoji xep
  • [ ] mix voice channels (w/ sfu)
  • [ ] mix guilds
  • [ ] pep native spaces
  • [ ] pinned messages
  • [ ] chat settings
  • [ ] encrypted chat history share
  • [ ] disappearing messages
  • [ ] poke
  • [ ] polls
  • [ ] privacy lists/circles
  • [ ] pubsub node items filter for each person