The reason there are so many apps trying to solve offline decentralized communications is that there’s no standard protocol or path for it. Everybody tries to sell their app as the real solver.
Also, OS-dependant (iOS/Android only apps) won’t give any progress to the state-of-the-art.
LoRa is great, but the bandwidth is terrible, so you'd be limited to Twitter sized messages when using this comms channel.
The other critical battle is on another field: makes most people understand the opportunity and necessity of transforming the ISP's little router-server into one's own FLOSS home server with a set of services to reduce dependence on the giants, collecting one's own emails there, personal online backups of one's data/systems, to be paired with an offline one manually connected to the "central point" homeserver every evening or week, having one's own photos, contacts, ... on one's own hardware without needing GAFAM and so on.
We have for example, Umbrel, Start9, Univention, ... which more or less offer an "easy" solution; we have a certain popularity of commercial NAS units, unfortunately not exactly FLOSS and often in violation of the GPL, but we still don't have a general understanding of what can be done and how important it is to do it, starting from one's own domain name, to be citizens of the web just as one is with a postal address in the physical world.
Reticulum is not worth getting into, the utilities and general infrastructure just isn’t there yet.
The project was basically a one-man-show for a long time, and has a lot of odd, esoteric decisions that will drive you mad if you’re actually trying to build something with it (eg, configuration files with sparse documentation that are yaml-but-not-really). I don’t mean to belittle the loads of time the original maintainer put into this project, it’s just not really designed to be usable in the general case by other developers.
I spent some time porting the reference Python implementation to no_std rust, but basically had to roll all the basic debugging utilities myself.
My initial stab was a rust port targeting esp32 Heltec V4 (since it has some niceties like tokio) with Reticulum communication over serial, BLE, WiFi and LoRA. The serial interface was sort of working, but frankly debugging using rnsd/nomadnet was infuriating (there’s no tools just to easily see messages over the wire!).
I’ve moved onto a build system that can also target the SEEED Wio Tracker using no_std, but it’s been… messier. AI tooling doesn’t quite have the context length for big migrations like that yet.
and there’s some cool stuff happening on nomadnet as well l
oh yeah and there’s a voice chat protocol that works over lora, too
I feel like trying to do that at the protocol level might be the wrong level of abstraction. Different fabrics have very different properties. Seems like the app is the more appropriate level for seamlessly communicating via different fabrics.
Like if I try to send a video to someone but they're currently only visible to me via lora the software probably shouldn't try to push a huge blob of data over that particular medium. But I probably do want the option of sending and receiving large blobs in general, just restricted to high bandwidth connections.