Skip to content

Embedded JS-IPFS in Brave (experiment) #716

@lidel

Description

@lidel

This issue tracks remaining work around embedded js-ipfs running in ipfs-companion in Brave with access to chrome.sockets APIs. For more context, see:

High Level Goals

  • Leveling up js-ipfs to match go-ipfs in features relevant to in web browser uses
  • Brave users can use IPFS with Companion alone, without installing go-ipfs or ipfs-desktop
  • IPFS nodes in Brave can discover each other on the same network and exchange data in p2p fashion

Kanban Board

How to opt-in

Stable release of IPFS Companion can be enabled via Brave Settings (chrome://settings/extensions):

2019-09-20--14-43-17

By default, it works like regular ipfs-companion and External node is used by default, assuming user has go-ipfs or IPFS Desktop installed and running.

Brave users can opt-in and try Embedded + chrome.sockets (see /docs/node-types for more details)

2019-09-20--14-44-37

2019-09-20--14-45-06

TODO

🎨 UX

  • UI for changing Gateway port
    • Right now its just raw JSON with js-ipfs config
  • Redirect to embedded Gateway
  • New embedded node type exists (embedded:chromesockets)
  • Companion UI is aware of embedded Gateway (Support chrome.sockets.* APIs #664 (comment))
  • Play nice with go-ipfs and js-ipfs daemons (Support chrome.sockets.* APIs #664 (comment))
    • user can switch between embedded (default in Brave) and external IPFS nodes
    • use custom ports by default
  • Post-install welcome screen enables user to start IPFS with one click
    • Add option to start embedded js-ipfs
    • See if we able to make it useful on Android as well
  • Brave detects URLs from embedded gateway and displays them as ipfs:// and ipns://

🔌 chrome.sockets

  • feature-detection for chrome.sockets (Support chrome.sockets.* APIs #664)
    • the same package should run on Google Chrome and Brave, chrome.sockets should enable additional powers at runtime
  • Brave overrides Manifest on install from Chrome Web Store to add sockets section

🌐 Embedded HTTP Gateway

🕸️ Local Discovery and UDP/TCP Transports

⚡ Performance

Metadata

Metadata

Assignees

Labels

P1High: Likely tackled by core team if no one steps uparea/braveIssues related to Brave Browserarea/chromiumIssues related to Chromium-based browsers

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions