Architecture wise all Silktorrent sub-projects can be classified to at least one of the following 3 categories: storage, tunnels, search. The storage projects try to figure out, how to store a vast amount of Silktorrent packets, the tar-files that have their cryptographic hash as their file name, so that the usage of various computing resources is minimized. The tunnels projects try to figure out, how to copy those tar-files from one computer to another at the presence of various adversaries, including censors and assassins. The search projects try to figure out, how to find the tar-files or sets of tar-files at the presence of various adversaries, including censors, assassins, honeypots, lying Silktorrent servers/nodes.
Short Term Wish List
- Write a reference tunnel implementation for USB-sticks. (Silktorrent packages must be placed to different folders to keep the file system operating at bearable speeds. To avoid reading file names, Silktorrent packet names, from distant memory regions of the HDD/RAM/some-slow-USB, there must be some SQLite3 database that has a table with relative file paths and the file basenames. The silktorrent packets have to be verified before insertion.) Current latest milestone release allows to create/unpack and verify the Silktorrent packets, but to keep the file system usage fast, the files must be distributed to different folders, like the Doxygen project does. The naive solution that distributes the packets to different folders, is the one that is currently missing, but, for a few thousand hundred-MiB-sized files it is probably possible to get by without it.
- The USB-stick tunnel implementation will be the core of many, if not all, network based tunnels. Implement a gateway component to many network based tunnels. Metadata like "suggested-deletion-timestamp" is tunnel implementation specific and must be closely tied to authentication.
- Write a Ruby application that implements a timeline-graph command line utility. The utility is expected to use the silktorrent_fs_storage_t1 for storing the packages and an SQLite database for the index. The SQLite database is meant to be used directly by Silktorrent applications that depend on the timeline-graph.
- Write a Ruby application that swaps out the content of a folder according to the content of the timeline-graph SQLite database. The folder might be the web_root of some web server or a sub-folder of the web_root. That's the base technology for Silktorrent based updatable web sites. To implement e-mail clients and Forums, the same application must add, not swap out, and that's also one of its modes of operation.
- Implement updatable website application. The very first, simplistic, version might be based on LibreOffice documents, where the people are offered a time-graph, where they can choose, which version of the document they want to read, including the "newest".
- Improve the updatable website application by adding "document type" option. One of the options might be "Silex Document".
Long Term Wish List
- Silktorrent tunnel that is based on the IPFS.
- Write a fast, formally verified, version of the proper symmetric cropto algorithm, essentially the mmmv_shallowcrypt_t1. (It probably takes 2 months to complete that step, one month for the GPU based implementation, OpenGL ES, and the other for the plain CPU based implementation.)
- Implement Apache Cordova based smartphone software that allows people to propagate info through an ad-hoc network, including bus drivers, who drive regular routes, etc. (It probably takes 3 months to complete that step, because it assumes the use of native code and on phones the use of native code can be very problematic.)
- Plugins for ownCloud and alike?
Some later stage is about the physical drones, swapping of firmware-malware-prone-USB-sticks, studying of various private LAN technologies, etc.