summaryrefslogtreecommitdiff
path: root/README.md
blob: 7d84e766a82e095adae9166eb2d038c510bd50f0 (plain)
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


# LimoX

The Linux on mobile XMPP (LimoX) client. It should be fast, compliant and
usable on mobile linux devices like smartphones or tablets.

Also mind the [project page][2] and my [packaging repository][3] for Arch Linux
with support for LimoX.


## Building and dependencies

Install these build dependencies:

- meson
- ninja
- gcc

Install these runtime dependencies:

- libstrophe
- gtk4

Just run these commands to build and run:

	meson build
	ninja -C build
	./build/limox

Run `rm -r build` to clean the build folder. You can get a help page by running
`./build/limox -h`.


## Roadmap

- [x] build a GTK 4 GUI
- [x] finish minimal viable product (MVP) to send and receive text messages
	- [x] static GUI widgets
	- [x] dynamic GUI widgets (like text messages)
	- [x] roster request
	- [x] receiving one-to-one text messages
	- [x] sending one-to-one text messages
- [ ] switch from GTK4 to SDL2
- [ ] refactoring
	- [x] fix reconnection bug
	- [ ] proper memory management
	- [ ] fix random crashes (if still existing)
	- [ ] handle roster updates
	- [ ] implement 'disconnecting' state
	- [ ] audit functions combined with every possible state
	- [ ] consistent error handling (including semantic error codes)
	- [ ] logging / debug flags and output
	- [ ] signal handling
	- [ ] improve event loop performance (if still an issue)
	- [ ] write docstrings
	- [ ] check if code is splint-clean
- [ ] persistence with sqlite3
- [ ] XMPP core [compliance suite 2022][1] / client
	- [ ] RFC 6120: XMPP Core
	- [ ] RFC 7590: TLS for XMPP
	- [ ] XEP-0030: Service Discovery
	- [ ] XEP-0115: Entity Capabilities
- [ ] XMPP IM [compliance suite 2022][1] / client
	- [ ] RFC 6121: XMPP Instant Messaging
	- [ ] XEP-0245: The /me Command
	- [ ] XEP-0054: vcard-temp
	- [ ] XEP-0280: Message Carbons
	- [ ] XEP-0045: Multi-User Chat
	- [ ] XEP-0249: Direct MUC Invitations
	- [ ] XEP-0363: HTTP File Upload
- [ ] XMPP mobile [compliance suite 2022][1] / client
	- [ ] XEP-0198: Stream Management
	- [ ] XEP-0352: Client State Indication
- [ ] XEP-0077: In-Band Registration (just password change)
- [ ] XEP-0313: Message Archive Management
- [ ] Evaluate multi-platform support (up to Linux, Windows, Android, Mac, iOS)
	- implement gui.h with cross-platform SDL2?
	- implement gui.h with native widget toolkits?
- [ ] implement further XEPs
	- [ ] XEP-0286: Mobile Considerations on LTE Networks
	- [ ] XEP-0333: Chat Markers
	- [ ] XEP-0085: Chat State Notifications
	- [ ] XEP-0191: Blocking Command
	- [ ] XEP-0308: Last Message Correction
	- [ ] XEP-0393: Message Styling
	- [ ] XEP-0444: Message Reactions
	- [ ] XEP-0392: Consistent Color Generation
	- [ ] XEP-0184: Message Delivery Receipts
	- [ ] XEP-0380: Explicit Message Encryption
	- [ ] XEP-0384: OMEMO Encryption


[1]: https://xmpp.org/extensions/xep-0459.html
[2]: https://xengineering.eu/git/limox
[3]: https://xengineering.eu/git/pkgbuilds