https://ipfs.io
https://github.com/ipfs
Why not make Nimble Commander the first filemanager that supports IPFS?
I don't expect Nimble Commander to have a functionality to add files to the IPFS (or pin files to local storage), but it would surely be possible. The first step should imho focus on getting content from the IPFS (and actually browsing that content, if it has a directory structure). This might be an interesting (if not totally awesome) functionality for a new NC VFS.
For starters, NC would need an integrated IPFS node, so it would also work for users who haven't yet installed IPFS. (Which they should do nonetheless: easy with Homebrew.)
The functionality would be similar to connecting to an external server: Menu "Go" > Connect To…
There you'd have two options: (1) IPFS, and (2) IPNS.
(1) IPFS would let you connect to a standard IPFS object, a window would pop up, and you would have to enter the IPFS hash (copy/paste). If that object is just a single file, NC would download the file to e.g. your homefolder, to ~/Downloads, or (preferably) to a special IPFS download folder the user can designate in NC preferences. If that object is a directory, you can then choose to either download the whole directory with NC, or mount the object recursively in a VFS, to be able to browse the IPFS object, and just copy certain files you want. (EDIT: an IPFS object, incl. a directory, might probably be downloaded anyway to be browsable, so that should go into a NC temp folder, and if the user chooses to copy single files or the whole directory, NC would simply copy the files locally to the other user-designated folder.)
(2) IPNS is a fixed hash pointing to an IPFS hash (file or directory); if the file or directory contents change, the originator can update the IPNS pointer to link to the new IPFS file(s), while the IPNS hash itself doesn't change. Therefore, connecting to an IPNS hash with NC would always download/mount the current version. Then the user should also be able to store IPNS presets in the remote server favorites of Nimble Commander, and also be able to give a title, under "Manage Connections", e.g.
Code: Select all
Title: My Colleague's shared IPNS directory
IPNS Hash: <IPNS_HASH>