Description
We want to let users try out js-ipfs with the IPFS Desktop app, see: #601
The main priority of IPFS Desktop is to provide a clear onboarding process for casual users, so v1 will ship with go-ipfs as the default implementation, but for those in the know, we can offer up a drop/down / select element in the IPFS Desktop settings page in the Web UI, see: ipfs/ipfs-webui#883
IPFS Desktop is a thin wrapper around IPFS Web UI, so the UI work for showing the new setting would be in a PR against IPFS Web UI. The plumbing to make the change happen lives in IPFS Desktop. @hacdias please can you comment on how best to implement that?
IPFS Companion has a selector that let's you choose between using js-ipfs-api and an embedded js-ipfs node.
We want to offer a similar feature here in Desktop, but in this case, both go-ipfs and js-ipfs would be run as an external daemon process, which is less restrictive than running in a browser, so we can offer them up as equally valid alternatives. We don't need as much copy warning about the trade-offs, and can focus on just linking to more information about both of them.
js-ipfs is 2.6Mb minified. As this is an installed desktop app, we could initially keep things simple and bundle it directly. If folks have signifcant concerns about the app size, then we could consider doing the extra work of pulling down js-ipfs on demand. Thinking ahead, @hacdias has already done some thinking about a more general purpose "ipfs backend selector" that we can revisit, after we have a basic go/js toggle in place.