1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
# 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 `Element`s for stanza parsing and composition.
- jid: basic JID type, with parsing and display.
#### separate:
- [macaw](https://bunny.garden/macaw): gui client that utilises filamento
- [peanuts](https://bunny.garden/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
- [ ] xep-0245: /me
- [~] xep-0084: user avatar
- [x] xep-0172: user nickname
- [ ] xep-0280: message carbons
- [ ] xep-0191: blocking
- [ ] xep-0313: mam
- [ ] 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-0449: stickers
- [ ] xep-0490: message displayed synchronization
- [ ] xep-0333: displayed markers
- [ ] xep-0184: message delivery receipts
- [ ] xep-0100: gateway interation
- [~] xep-0059: result set management
- [x] xep-0300: use of cryptographic hash functions
- [~] xep-0131: stanza headers
- [ ] xep-0012: last activity
- [ ] xep-0166: jingle
- [ ] xep-0154: user profile
#### 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
#### 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:
- [ ] 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
- [ ] 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
|