ipfs / ipfs-desktop

An unobtrusive and user-friendly desktop application for IPFS on Windows, Mac and Linux.
https://docs.ipfs.tech/install/ipfs-desktop/
MIT License
5.96k stars 861 forks source link

Mount MFS #618

Open hacdias opened 6 years ago

hacdias commented 6 years ago

Should IPFS Desktop allow the user to mount MFS to the file system or should this feature be incorporated into js-ipfs and go-ipfs?

@alanshaw has taken a step ahead and created a module to let us mount MFS.

I noticed there was another issue referencing something like this from 2015 (#154). I'll close that one and copy its content here to keep our discussion.

@almereyda (jon r) on Dec 23, 2015

As ipfs/go-ipfs:docs/fuse.md@master mentions, we can use the daemons --mount option to hook IPFS into the filesystem. As a station user, I want to be able to use the FUSE options as exposed via the config at http://127.0.0.1:5001/ipfs/QmR9MzChjp1MdFWik7NjEjqKQMzVmBkdK3dz14A6B5Cupm/#/config

Which scenario like this is supported by it? Maybe a checkbox below the "Start Node" button, which is only shown with manually stopping the deamon, may do?

/cc @ipfs-shipyard/ipfs-gui-team

lidel commented 6 years ago

Not sure about low level implementation, but IPFS Desktop is a natural fit for UI responsible for enabling/disabling this.

It is worth highlighting that @alanshaw started work towards that goal:

hacdias commented 6 years ago

@lidel yeah, I was thinking about using that package to enable/disable the mounting.

lidel commented 6 years ago

See also: https://github.com/piedar/js-ipfs-mount

hacdias commented 6 years ago

Uhhh, that's cool. I'll try and see if it works on Windows with Dokany

lidel commented 5 years ago

Hey, @djdv IIRC last time we talked about this you mentioned mounting MFS will be a part of go-ipfs, is that still the case? Do you have any ideas on how we could integrate it with ipfs-desktop? Would it be a plugin, config key, cli parameter or something else?

djdv commented 5 years ago

@lidel

mounting MFS will be a part of go-ipfs

At this time, yes!

Do you have any ideas on how we could integrate it with ipfs-desktop?

Since we're just exposing it as a writable filesystem, you should be able to interact with it in a standard way. I haven't nailed everything down yet, but in theory you should be able to parse the config to find the mountpoint, and add some wrapping around it.

You can see the status of the mount implimentation here: https://github.com/ipfs/go-ipfs/issues/5003 https://www.youtube.com/playlist?list=PLrZxGPqQuwHC_cZF2assuM0Vl3D5s5OSN

hacdias commented 5 years ago

@djdv just read the whole issue and I have to say that what I read is just amazing and the progress you've made is incredible. I can't wait to be able to easily mount MFS on Windows.

Just as a side note: I was wondering if it would be possible to have an IPFS implementation independent mount that would work with any IPFS implementation - via HTTP API or connecting directly maybe. The drawback I see here is that the connection might be a bit slower. Not sure. Needs thought.

hacdias commented 5 years ago

@djdv what's the state of MFS mount?

djdv commented 5 years ago

@hacdias Current status is being tracked here: https://github.com/ipfs/package-managers/issues/74

At the moment I'm making an effort to develop versions of the concepts demoed before, in a way that can be merged into go-ipfs gradually. I'd like to have some kind of read support under an experimental flag ASAP.

I wrote a big summary here but the tl;dr is that above ^

bam80 commented 3 years ago

Current status is being tracked here: ipfs-inactive/package-managers#74

That repo has been archived:

I apologize to the community, to which I made promises I could not keep.

So what's next? Were these efforts continued, and where to track the status now?

pirate commented 3 years ago

I know it's just a drop in the bucket, but I'd be willing to chip in $150 into any kind of gittip/bounty/donation system towards this feature. A mutable FUSE mount for IPFS one of the biggest things I'm waiting for that would allow us to easily integrate IPFS everywhere in our internet archiving stack over at ArchiveBox.io.

lidel commented 3 years ago

IIUC FUSE turned out to be pretty problematic part of go-ipfs, each platform/filesystem (linux, windows, macos) having own issues, making the entire thing too brittle for production use, and fixing myriad of fuse problems was stealing dev time and burning our devs in the process. It is unlikely to be fixed any time soon upstream.

That being said, if someone is brave enough to tackle this across all three platforms, PRs welcome. MFS mounting for desktop use does not need to be super performant nor a part of go-ipfs: ipfs-desktop is an electron app, so if someone can make it work in JS (perhaps by reusing prior art from Alan's demo), I'd be happy to help with review.

Personally, I'd like to see someone experiment with exposing MFS over WebDAV instead, which is HTTP-based and seems to be supported on Linux, macOS and Windows out of the box (in form of "mounting external drives").

pirate commented 3 years ago

I have no particular love for FUSE either, NFS/SMB/WebDAV, any mountable mutable filesystem works for me. As long as it's mountable as a Docker volume or within docker somehow at the end of the day.