ipfs-shipyard / ipfs-shipyard/py-ipfs

Proposal: Seperate packages for each system

Open
#4 12 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
476
Forks
90
PR merge metrics
No merged PRs in 30d

Description

I suggest that we separate the `ipfs` package into packages for each IPFS subsystem:
\* `ipfs-api` - Used to connect to Py-IPFS by applications. This is where most users should touch. From https://github.com/ipfs/python-ipfs-api
\* `ipfs-naming` or `ipfs-ipns` - Provides access to the IPNS pulbic key infrastructure and naming system. Handles HRNs and mutable pointers
\* `ipfs-merkledag` - Provides access to Merkledag for resolving paths
\* `ipfs-block` - Provides access to the block exchange system for transferring data.
\* `ipfs-routing` - Provides access to the routing system, probably mostly DHT and `mdns`
\* `ipfs-network` - Provides access to the lowest level IPFS network transport functions, like NAT traversal/hole punching, encryption/signing, and multi/broadcasting

Client applications would initialize the stack from the bottom up: choose a transport and encryption with `ipfs-network`, connect to the DHT with `ipfs-routing`, then use `ipfs-naming` (`ipfs-ipns`) to find the location of desired content and `ipfs-merkledag` and `ipfs-block` to recall that data.
On the other hand, if an instance of IPFS is already running on the system (which is preferred), they could simply use `ipfs-api` to interact with it.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.