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

Getting jsipfs out the door #35

Merged
merged 17 commits into from
Dec 10, 2015
Merged

Getting jsipfs out the door #35

merged 17 commits into from
Dec 10, 2015

Conversation

daviddias
Copy link
Member

WIP

Context and Plan - https://github.com/ipfs/js-ipfs/tree/jsipfs#getting-jsipfs-ready

Architecture

┌───┐    ┌───────────────┐    ┌──────────────┐
│CLI│───▶│   HTTP API    ├───▶│IPFS Node Impl│
└───┘    └───────────────┘    └──────────────┘
                 △                    △
                 └──────────┬─────────┘
                            │
                         ┌─────┐
                         │Tests│
                         └─────┘
  • CLI
    • ronin
  • HTTP API
    • Hapijs
  • Tests
    • Mocha + Karma

Action Items

  • Writable nodes in the network (@lgierth)
  • API Specs https://github.com/ipfs/api
  • Feature parity
    • basic commands
      • ipfs init
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs add
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs cat
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs get
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs ls
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs refs
        • ipfs refs local
          • impl
          • cli
          • http
          • tests
          • browser
    • data structure commands
      • ipfs block
        • ipfs block get
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs block put
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs block stat
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs object
        • ipfs object data
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs object get
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs object links
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs object new
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs object patch
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs object put
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs object stat
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs file
        • ipfs file ls
          • impl
          • cli
          • http
          • tests
          • browser
    • advanced commands
      • ipfs daemon
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs mount
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs resolve
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs name
        • ipfs name publish
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs name resolve
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs dns
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs pin
        • ipfs pin add
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs pin ls
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs pin rm
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs repo
        • ipfs repo gc
          • impl
          • cli
          • http
          • tests
          • browser
    • network commands
      • ipfs id
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs bootstrap
        • ipfs bootstrap add
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs bootstrap list
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs bootstrap rm
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs swarm
        • ipfs swarm addrs
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs swarm addrs local
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs swarm connect
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs swarm disconnect
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs swarm filters
          • ipfs swarm filters add
            • impl
            • cli
            • http
            • tests
            • browser
          • ipfs swarm filters rm
            • impl
            • cli
            • http
            • tests
            • browser
        • ipfs swarm peers
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs dht
        • ipfs dht findpeer
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs dht findprovs
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs dht get
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs dht put
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs dht query
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs ping
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs diag
        • ipfs diag net
        • ipfs diag sys
    • tool commands
      • ipfs commands
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs config
        • ipfs config edit
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs config replace
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs config show
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs update
        • impl
        • cli
        • http
        • tests
        • browser
      • ipfs version
        • impl
        • cli
        • http
        • tests
        • browser
    • other
      • ipfs bitswap
        • ipfs bitswap stat
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs bitswap unwant
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs bitswap wantlist
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs log
        • ipfs log level
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs log tail
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs stats
        • ipfs stats bw
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs tar
        • ipfs tar add
          • impl
          • cli
          • http
          • tests
          • browser
        • ipfs tar cat
          • impl
          • cli
          • http
          • tests
          • browser
      • ipfs tour
        • ipfs tour list
        • ipfs tour next
        • ipfs tour restart

Contributions are welcome!

@daviddias daviddias mentioned this pull request Nov 6, 2015
11 tasks
This was referenced Nov 9, 2015
@masylum
Copy link
Contributor

masylum commented Nov 17, 2015

While I understand the migration path, this looks like this should belong to a js-ipfs-cli repository rather than the js-ipfs one. I would split both concepts since one will be the node-only CLI (even in src/index.js you have process stuff hardcoded) and the other will be the library which has to be browser-compatible.

Example: I should be able to soon implement ipfs.repo() that works both on the browser and node and then implement ipfs repo for the cli.

@dignifiedquire
Copy link
Member

Fully agree with @masylum js-ipfs should be a simple library (browser + node), and js-ipfs-cli would be the cli tool (only node).

@daviddias
Copy link
Member Author

When I started doing this effort, setting up my mind to have 'feature parity' with go-ipfs was the easiest way to grasp and start the endeavour (at least for me, at that time), then talking with Juan, I realised an even simpler, powerful way would be to expose the HTTP API and use go-ipfs sharness tests against the Node.js js-ipfs HTTP API, this would guarantee that both implementations are indeed really close.

This shifts the focus away from implementing the CLI to the HTTP API, so things are separated, as you suggested :)

@jbenet
Copy link
Member

jbenet commented Nov 19, 2015

Btw I'm not opposed to writing the cli in js, but I think right now it will
be a waste of time given the go one can do it all and target any api (with
--api $addr or a .ipfs/api file)

(Eventually may want one too but I imagine we can keep things simpler for
now by using the go one. We could pull it out of go-ipfs if it would help
reading it and contributions)

Btw am contemplating pulling out go-ipfs/core into its own repo.
(Go-ipfs-core). With go-ipfs being the "distribution". Imagine js-ipfs-core
could be a thing too
On Tue, Nov 17, 2015 at 02:23 David Dias notifications@github.com wrote:

When I started doing this effort, setting up my mind to have 'feature
parity' with go-ipfs was the easiest way to grasp and start the endeavour
(at least for me, at that time), then talking with Juan, I realised an even
simpler, powerful way would be to expose the HTTP API and use go-ipfs
sharness tests against the Node.js js-ipfs HTTP API, this would guarantee
that both implementations are indeed really close.

This shifts the focus away from implementing the CLI to the HTTP API, so
things are separated, as you suggested :)


Reply to this email directly or view it on GitHub
#35 (comment).

@daviddias daviddias mentioned this pull request Nov 23, 2015
42 tasks
@dignifiedquire
Copy link
Member

Some explanations for people who are not @diasdavid ;)

  • impl - Implementation
  • cli - Available as a cli command through ronin
  • test- node based tests (passing ✅)
  • browser - browser based tests (passing ✅)

@daviddias
Copy link
Member Author

@lgierth can I get a writable IPFS node (one or more) in the network, to be the node this will delegate to?

@daviddias daviddias mentioned this pull request Nov 30, 2015
14 tasks
@jbenet
Copy link
Member

jbenet commented Dec 1, 2015

@diasdavid writable nodes in the network that we run as part of the gateway will only be writable for temporary content for now. other things (like ipfs name publish, wont work yet)

@daviddias
Copy link
Member Author

@diasdavid writable nodes in the network that we run as part of the gateway will only be writable for temporary content for now. other things (like ipfs name publish, wont work yet)

It would be very cool if we could spawn some on demand nodes inside Docker Containers, through an API request, with like 2gb of Storage, so that everyone could do IPNS as well :):)

@jbenet
Copy link
Member

jbenet commented Dec 2, 2015

@diasdavid yeah would be nice!!

on ipns-- we should be able to do IPNS even without ipfs nodes. i'll make a webapp that does it.

we'll need to be able to have other nodes re-share your records, this is a fundamentally tricky bit before data file storage is widely available.

@daviddias
Copy link
Member Author

I'm going to merge this one, now that we have a Roadmap, we can create smaller branches and enable more collaboration :)

daviddias added a commit that referenced this pull request Dec 10, 2015
Getting jsipfs out the door
@daviddias daviddias merged commit 88cc315 into master Dec 10, 2015
@daviddias daviddias deleted the jsipfs branch December 10, 2015 22:48
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants