Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

Latest commit

 

History

History
318 lines (240 loc) · 8.33 KB

ROADMAP.md

File metadata and controls

318 lines (240 loc) · 8.33 KB

IPFS JavaScript Implementation roadmap

Milestone 1 - js-ipfs on the browser

Summary: This milestone's focus is to ship a version of js-ipfs that can be embed in browser applications, creating an IPFS node inside a browser web application.

Tasks:

  • files API
    • js-ipfs-unixfs
    • fixed size chunker
    • unixfs layout
    • jsipfs files add
    • jsipfs files get
  • jsipfs swarm
    • listen on WebSockets + TCP
    • spdy support
    • identify protocol
    • multistream
    • connect
    • interop with go-ipfs
  • block API
  • object API
    • js-ipfs-merkle-dag
  • repo API
  • bitswap
  • js-libp2p
    • js-libp2p-swarm
    • js-libp2p-tcp
    • js-libp2p-websockets
    • js-libp2p-spdy
    • js-multiaddr
    • js-multistream
    • js-peer-id
    • js-peer-info
    • js-webcrypto

Notes:

  • This release won't
    • support WebRTC, the communication between browser and machine nodes will happen through WebSockets+SPDY
    • support DHT (Kademlia Routing and Record Store)

UPDATE:

Milestone 2 - Quality and correctness of the JavaScript Implementation

Summary: The focus of this milestone is quality of the JavaScript implementation so that users of the library can build their applications with confidence.

Tasks:

Dependencies:

Notes:

  • We will be defining the API in interface-ipfs-core, however some pieces like DHT, mfs and pinning will not be available in js-ipfs.
Expected date of completion: late August

Milestone 3 - Enter IPLD - Enable js-ipfs to handle both merkledag protobufs and ipld cbor objects

Summary: Integration of IPLD (js-ipld and js-ipld-ipfs) into js-ipfs.

Tasks:

NA

Dependencies:

  • IPLD migration path
  • go-ipfs with IPLD already integrated (it would be best)

Requirements by other projects:

NA

Notes:

NA

Expected date of completion: mid September

Milestone 4 - Documentation and Developer Experience

Summary: During this period, we will focus on bringing great developer experience to js-ipfs, this includes: great examples, documentation, tutorials, blog posts and more, enabling more developers to hack with js-ipfs or contribute to the project.

Tasks:

  • Amazing examples
    • Create the same examples available on https://ipfs.io/docs/examples/ using js-ipfs (through CLI and programatically)
    • Example: Create an IPFS node
    • Examples: Add files to IPFS
    • Tutorial: Build an 'pastebin' with js-ipfs
    • Tutorial: How to use js-ipfs in the browser
    • Tutorial: Make a video player with js-ipfs #128
    • Tutorial: Load a Webpage/WebApplication using js-ipfs
    • Add all of the examples to https://ipfs.io/docs/examples/
  • Revisit and complete the IPFS spec

Dependencies:

NA

Requirements by other projects:

NA

Notes:

NA

Expected date of completion: TBA

Milestone 5 - 1st implementation Peer Routing + Content Routing (the go-ipfs DHT)

Summary: Enable content discovery in js-ipfs

Tasks:

  • js-ipfs-dht

Dependencies:

NA

Requirements by other projects:

NA

Notes:

NA

Expected date of completion: TBA

Milestone 6 - The last miles for complete feature parity with go-ipfs

Summary: 100% feature parity and interop with go-ipfs

Tasks:

  • mfs
  • ipns
  • HAMT on unixfs-engine
  • ls
  • pinning
  • ping

Dependencies:

NA

Requirements by other projects:

NA

Notes:

Expected date of completion: TBA

Milestone 7 - Shoot for the moon 🌑

Summary: Grandiose ideas to make the js-ipfs project really awesome. It might take some time to get to them, but writting them down is always good.

Tasks:

  • InterPlanetary Lab - A test lab for the IPFS project, spawning nodes in different geographic locations with different network and machine conditions to really stress test IPFS (heavily inspired by PlanetLab)

Dependencies:

NA

Requirements by other projects:

NA

Notes:

NA

Expected date of completion: TBA

Project Status

Per component view

Name Spec Disc
Importers ipfs/specs#57 #41
repo https://github.com/ipfs/specs/tree/master/repo #51
network layer https://github.com/ipfs/specs/tree/master/libp2p https://github.com/diasdavid/js-libp2p/issues
bitswap #51 #51
pin #59
files #60
daemon #57
object #58
block #50
bootstrap #46
init #42

Per feature view

  • core
    • version
    • daemon
    • id
    • block
      • get
      • put
      • stat
    • object - Basic manipulation of the DAG
      • data
      • get
      • links
      • new
      • patch
      • put
      • stat
    • refs - Listing of references. (alking around the graph)
      • local
    • repo
      • init
      • stat
      • gc
    • pin
      • add
      • ls
      • rm
    • log
      • level
      • tail
  • extensions
    • name (IPNS)
      • publish
      • resolve
    • dns
      • resolve
    • tar
      • add
      • cat
    • tour
      • list
      • next
      • restart
    • files
      • add
      • cat
      • get
    • stat - Statistics about everything
      • bw
    • mount
    • bootstrap
      • add
      • list
      • rm
    • bitswap
      • stat
      • unwant
      • wantlist
  • tooling
    • commands
    • update
    • init - sugar on top of ipfs repo init
    • config
      • edit
      • replace
      • show
  • network (bubbles up from libp2p)
    • ping
    • dht
      • findpeer
      • findprovs
      • get
      • put
      • query
    • swarm
      • addrs
      • connect
      • disconnect
      • filters
      • peers
    • records (IPRS)
      • put
      • get