Getting hold of software, even freeware, is a significant challenge in the developing world. Bandwidth is such a precious commodity in these places that even modest downloads are beyond the budget of most people.
The map above reveals the problem. It shows the density of IPv4 addresses around the world, a useful proxy for the density of internet servers. Clearly the internet is not yet evenly distributed.
And therein lies the problem. In most parts of the world, a free operating system that is several gigabytes in size will take too long and cost too much to download. Consequently, much of the best freeware simply hasn’t spread to those who would benefit from it most.
That looks set to change, at least in part, thanks to some neat work by Thierry Monteil at the Université Montpellier II in France. This guy has devised a cheap and simple way to transmit large software packages without using the internet and at rates that eclipse all but the best internet connections.
His idea is simple: create a self-replicating bootable USB stick that holds an operating system and any software that needs to run on it. This stick is self-replicating in the sense that it can copy its contents to another USB stick with just a few clicks and no expert knowledge.
And that’s exactly what Monteil has done. He has written a script that clones the contents of one USB stick to another of sufficient size. It copies only the designated software, without copying any personal data on the first stick (except for any stored in a special /shared folder). It also preserves any data already on the second stick.
To test the idea, Monteil used the script to transfer Sage, a free alternative to mathematical software such as Mathematica, Maple, Matlab and so on. This runs on the free Linux Debian operating system so the script also transfers this too–about 2.7 GB in total. It can also be burned to a CD so that it can run on a Mac or a computer too old to boot from a USB, as many are in the developing world.
What’s interesting about this method is that each new stick can seed other sticks. So it can spread to n people in a time that is of the order of log (n). For large n, that has the potential to be significantly faster than even the best internet connections.
To test it in the field, he took the stick to a computer workshop in Bobo Dioulasso in Burkino Fasso with 60 participants. Monteil says the transfer to these 60 people could be done in 6 cloning rounds during a coffee break. So even allowing 5 minutes for each person to boot up their machine and play around with the new software, that’s a massive rate of transfer.
“The amortized bandwidth becomes 30MB/s,” says Monteil. There’s simply no comparison with 60 users downloading the same data one after the other over an unreliable dial-up modem connection.
Of course, there are potential disadvantages with this method. The first and most significant is the potential for malware to enter the chain somewhere. Because of this, Monteil recommends that it is used only for short distance communication: in a classroom, for example, where there is not enough time between cloning events for malware to be added.
And everybody must have a USB stick. That’s certainly not a given in the developing world but is changing rapidly as these devices become cheaper.
The end result is a mechanism that looks to be an extremely effective way of spreading software, albeit with one or two limitations. “While being very efficient for our purpose of spreading huge free software inside a community, it is definitely not advisable for spreading sensitive software, or for large-scale distribution,” says Monteil.
Although it’s not hard to imagine it being used in this way given its utility. For example, it would be straightforward to transfer the contents of Wikipedia in this way, dramatically increasing the number of people in the developing world who can benefit from this knowledge.
An impressive solution to an increasingly pressing problem.
Ref: arxiv.org/abs/1311.6754: Spreading Huge Free Software Without Internet Connection Via Self-Replicating USB Keys