| 
				
					
						
							 | 
			||
|---|---|---|
| .helix | ||
| jabber | ||
| jid | ||
| luz | ||
| stanza | ||
| .gitignore | ||
| Cargo.toml | ||
| README.md | ||
| TODO.md | ||
		
			
				
				README.md
			
		
		
			
			
		
	
	jabber client library
- luz: the client. sends and receives messages. contains a message/user store.
 
TODO:
- how to know if stanza has been sent
 - error states for all negotiation parts
 - better errors
 - rename structs
 - remove commented code
 - asynchronous connect (with take_mut?)
 - split into separate crates: stanza, jabber, and luz
 - use nom for better jid parsing
 
specs:
- rfc 6120: core
 - rfc 6121: im
 - rfc 7590: tls
 - xep-0368: srv records for xmpp over tls
 - server side downgrade protection for sasl
 - xep-0199: xmpp ping
 - xep-0030: service discovery
 - xep-0115: entity capabilities
 - xep-0163: pep
 - xep-0245: /me
 - xep-0084: user avatar
 - xep-0172: user nickname
 - xep-0280: message carbons
 - xep-0191: blocking
 - xep-0222: public data via pubsub
 - xep-0223: private data via pubsub
 - 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
 - xep-0184: message delivery receipts
 - xep-0060: pubsub
 - 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
 - xep-0402: pep native bookmarks
 
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)
 
 - chat read markers
- xep-0490: message displayed synchronization
 - xep-0333: displayed markers
 
 - 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
 
 - 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
 
 
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