aboutsummaryrefslogblamecommitdiffstats
path: root/README.md
blob: 0d02d459f5fd36ae2f143ce7949df4163b4d489b (plain) (tree)
1
2
3
4
5
6
7
8
9

                       

                                                                              

        
                                         
                                            
                   

                           
                                           





                                                         
                  


                                               
                         
                                

                                   
                   

                           
                             

                               








                                            


                                                   
                                         











                                                          

















                                                 
                            

                                                                                                            







                                        
                                      







                                     




                                       























                                                            
# jabber client library

- luz: the client. sends and receives messages. contains a message/user store.

## TODO:

- [x] how to know if stanza has been sent
- [ ] error states for all negotiation parts
- [x] better errors
- [x] rename structs
- [x] remove commented code
- [ ] asynchronous connect (with take_mut?)
- [x] split into separate crates: stanza, jabber, and luz
- [ ] use nom for better jid parsing

### specs:

- [x] rfc 6120: core
- [x] rfc 6121: im
- [x] rfc 7590: tls
- [x] xep-0368: srv records for xmpp over tls
- [ ] 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
- [ ] xep-0245: /me
- [ ] xep-0084: user avatar
- [x] xep-0172: user nickname
- [ ] xep-0280: message carbons
- [ ] xep-0191: blocking
- [ ] xep-0313: mam
- [ ] xep-0198: stream management
- [ ] xep-0085: chat state notifications
- [ ] xep-0428: fallback indication
- [ ] xep-0359: unique and stable stanza ids
- [ ] xep-0424: message retraction
- [ ] xep-0352: client state indication
- [ ] xep-0166: jingle
- [ ] xep-0292: vcard4
- [ ] chat read markers
  - [ ] xep-0490: message displayed synchronization
  - [ ] xep-0333: displayed markers
- [ ] xep-0184: message delivery receipts
- [ ] xep-0100: gateway interation

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

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-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:
- [ ] xep-0154: user profile
- [ ] message editing
  - [ ] xep-0308: last message correction (should not be used for older than last message according to spec)
- [ ] message styling
  - [ ] xep-0393: message styling

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