For creating decentralized mesh networks, it might help to look at what the freifunk project has done. Freifunk is a community project that builds open mesh networks (mostly in Germany) using cheap (€15-20 range) off the shelf routers. The routers usually provide two wifi networks, an open access point as well as a mesh interface that will mesh with all other access points in range.
The used firmware (called "Gluon") is based on OpenWRT and all open source:
I actually had my first email and news accounts subscribed over the UUCP protocol. The main advantage of UUCP is that it will queue all data destined for a remote system and asynchronously transfer everything when a system is reachable. It is also possible to relay data using multiple hops that are not online at the same time. It was used mostly with dial up systems that were only online during data transfers.
So with UUCP it might be possible to implement a sort of drive-by update where a mobile node (maybe installed in a car) can connect to a local server, exchange incoming/outgoing messages and relay them to the node in the next village when the driver moves on.
The used firmware (called "Gluon") is based on OpenWRT and all open source:
http://gluon.readthedocs.org/en/v2014.3/ https://github.com/freifunk-gluon/gluon
http://freifunk.net/en/
Apart from that, for communicating with systems that have no or only temporary internet access, the pretty ancient UUCP protocol comes to mind:
http://en.wikipedia.org/wiki/UUCP
I actually had my first email and news accounts subscribed over the UUCP protocol. The main advantage of UUCP is that it will queue all data destined for a remote system and asynchronously transfer everything when a system is reachable. It is also possible to relay data using multiple hops that are not online at the same time. It was used mostly with dial up systems that were only online during data transfers.
So with UUCP it might be possible to implement a sort of drive-by update where a mobile node (maybe installed in a car) can connect to a local server, exchange incoming/outgoing messages and relay them to the node in the next village when the driver moves on.