I have been looking for (and thinking about building) a file sync system that supports something very similar to the selective download and placeholder files discussed in this thread.
To create a user experience that users are familiar, I have been considering using FUSE to present the files. The user navigates file trees and interacts as they normally do. When a file is opened, the hypothetical SyncThing-FUSE checks for the file in a local cache. If it doesn’t exist, the file is requested from peers and placed into the cache. Then, the client reads the file from the cache. Written files are placed into the cache, and IndexUpdates are published to peers.
FUSE is supported on OS X and Linux. Other platforms would require different solutions.
I’m sure there will be complications with certain programs (e.g. iTunes mentioned above) and OS features (e.g. previewing images).
I have minimal experience with SyncThing and FUSE, but from what I’ve read about both (including BEPv1), I haven’t found any show stoppers.
@AudriusButkevicius and others, what reasons can you think of that I shouldn’t continue to investigate this approach?