Description
Tracking/discussion issue for the topic of implementing ipfs mount
on Windows.
This is a broad topic, all comments and criticisms are welcome here as long as they help drive us towards a solution. Nothing is set in stone yet and we'd like to implement this correctly.
Currently we have no first party support for this:
Error: Mount isn't compatible with Windows yet
For third party, I'm aware of these projects:
https://github.com/alexpmorris/dipfs
https://github.com/richardschneider/net-ipfs-mount
both utilize the IPFS API and Dokany(a Windows FUSE alternative).
dipfs
does not appear to be maintained.
In my experience it will succeed in mounting IPFS as a drive letter, and allows you to traverse IPFS paths via CLI, however it hangs in explorer (likely from it trying to access metadata), or when trying to read data through any means.
net-ipfs-mount
is currently being maintained.
This is our best contender, everything appears to work as intended unless you have a non-tiny pinset. When trying to traverse IPFS paths with a large enough pinset, passing the list of pins from the API to net-ipfs-mount can take long enough for Windows to deem /ipfs
inaccessible.
For local testing you can run ipfs pins ls
and see how long it takes to return.
I would like to start an initiative, aimed at getting Windows mounting on par with the other platforms.
That is to say, at the very least, exposing read only access to /ipfs
and /ipns
constructs.
If possible, it would be nice to extend the feature set to expose a writable MFS root as well, similar to this https://github.com/tableflip/ipfs-fuse
Most likely, this will mean implementing first party support for mount
in go-ipfs
, utilizing core APIs where possible.
Mention of https://github.com/billziss-gh/winfsp has come up as an alternative to Dokany. It's likely that winfsp
's native API will be our target, however this is not locked down yet. If you have opinions on Windows filesystem APIs, positive or negative, please post them here.
cc:
@mgoelzer, @alanshaw, @dryajov, @mrlindblom, @Kubuxu, @whyrusleeping
Edit: forgot to cc: @alexpmorris, @richardschneider