5 ms·
> I have half a dozen laptops, two phones, few tables at home alone; ... I'm dreaming of a messaging system with end-points that consume a Plan9 style file-sys
by all2 7y ago
> I have half a dozen laptops, two phones, few tables at home alone; ...
I'm dreaming of a messaging system with end-points that consume a Plan9 style file-system. Each device mounts the file-system, et voila you can send and receive messages from any device that has the FS mounted.
Generally I want to hack the Android kernel so that it uses the Plan9 style FS so that I can not worry about the how-where-why of syncing docs-photos-music-etc between sundry devices.
I say "Plan9 style FS" because the Plan9 FS requires some host server, some single end-point for file storage. I'm dreaming of a FS that negotiates storage (perhaps using an LRU policy) between a network of devices (ie, my phone, my laptop, maybe a DO droplet or something on AWS).
Sharing could be encrypted blocks (to obscure discrete binaries), perhaps using the bit torrent protocol?
I know there are software packages that do what I'm talking about, but it isn't easy. I can't just scan a QR code (and then do the two-factor authentication) and have access to my files.
- solarkraft 7y agoYou probably already know about Syncthing, which is a block-based peer-to-peer file synchronization solution. There are some talks in the project to add a way to only download files when actually accessed and there's no real-time communication, but I imagine it would not be insanely hard to add. It already somewhat offers the adding-process you describe.
- all2 7y agoI had syncthing running on my phone and my laptop. I've had lots of issues with the sync actually working; ie it will hang on certain kinds of Jupyter notebook files, or it will ignore my images directory completely. I'm sure I've had other issues... Anyway, I gave up trying to get it to work because sending myself emails or using GDrive has less friction. I've been fascinated by usability for a long time. It seems that many high-brow projects (see plan9 and others) aren't very interested in usability by the general population. Not you and me, but Joe(lene)-Schmoe who doesn't have a clue about the innards of their phone. They just want their stuff here (on there phone) and there (on their computer). I want that too. I guess I want to make neat and useful tech approachable to many. I even have an idea to monetize the above FS: a single page application that automatically spins up VMs that provide encrypted nodes for your personal network. A byproduct of that is a web access point to your stuff that doesn't (shouldn't) go down. This is important because, if you're like me, all your nodes are wireless and run on battery and therefore could leave the network at any time.
- nickik 7y agoThis is basically what Keybase does. You provision your Keybase and you have access to a shared file system that is e2e encrypted. They don't do the messaging threw the file system, but I would argue that's an implementation detail.
- oconnor663 7y agoAt some point Chris Coyne implemented a terminal chat UI on top of KBFS and `tail -f`. I can't remember if he published it anywhere though. One of the reasons you don't want a real chat app to be implemented like this is that KBFS has to be pretty conservative about conflict resolution. If you and I both edit `foo.txt` at the same time, then we're going to wind up with something like `foo.txt` and `foo.txt_CONFLICTING_COPY_2020_02_14`. (Basically the same as what Dropbox does.) But of course, that's not what we want to happen if you and I send a message to each other at the same time. There, we want the server to just tell us which one came first, and that's fine. There's no real conflict. (For larger gaps, where my phone has observed your message before I send mine, Keybase will indeed sign over that observed history, and the server won't be able to reorder the messages.)
- all2 7y agoWhat if we push the abstraction? Folders in the FS represent recipients and files are the messages? Then if you and I send a message we don't have to worry about who edited some file last, rather, we inspect the time stamps of the file IOT render the messages in the correct order. We could even do arbitrary nesting/threading a la reddit if we wanted (treating writable files as folder descriptors as well, like Scrivener). If I send you a message for the first time, your FS (nodes connected together) gets a request/ invitation to mount a new FS/folder containing files where each is a message. Want to add someone? Invite to mount the collective FS. Instantly the new member can see the chat history and begin writing new files/messages to the FS.
- nickik 7y agoThat all seems possible, but this honestly just seems like tons of effort for very little benefits compared to a rest api and a nice little data-store.