Closed
Description
After #1185 lands, we will have "IPFS in GO" page (same content as https://docs.ipfs.io/reference/go/api/).
I think it is a good place to point people at all the Go libraries available.
We already had prior art content in Kubo README (copy below). Moving it to docs is a good idea.
Packages
This table is generated using the module
package-table
withpackage-table --data=package-list.json
.
Listing of the main packages used in the IPFS ecosystem. There are also three specifications worth linking here:
Name | CI/Travis | Coverage | Description |
---|---|---|---|
Libp2p | |||
go-libp2p |
p2p networking library | ||
go-libp2p-pubsub |
pubsub built on libp2p | ||
go-libp2p-kad-dht |
dht-backed router | ||
go-libp2p-pubsub-router |
pubsub-backed router | ||
Multiformats | |||
go-cid |
CID implementation | ||
go-multiaddr |
multiaddr implementation | ||
go-multihash |
multihash implementation | ||
go-multibase |
mulitbase implementation | ||
Files | |||
go-unixfs |
the core 'filesystem' logic | ||
go-mfs |
a mutable filesystem editor for unixfs | ||
go-ipfs-posinfo |
helper datatypes for the filestore | ||
go-ipfs-chunker |
file chunkers | ||
Exchange | |||
go-ipfs-exchange-interface |
exchange service interface | ||
go-ipfs-exchange-offline |
(dummy) offline implementation of the exchange service | ||
go-bitswap |
bitswap protocol implementation | ||
go-blockservice |
service that plugs a blockstore and an exchange together | ||
Datastores | |||
go-datastore |
datastore interfaces, adapters, and basic implementations | ||
go-ipfs-ds-help |
datastore utility functions | ||
go-ds-flatfs |
a filesystem-based datastore | ||
go-ds-measure |
a metric-collecting database adapter | ||
go-ds-leveldb |
a leveldb based datastore | ||
go-ds-badger |
a badgerdb based datastore | ||
Namesys | |||
go-ipns |
IPNS datastructures and validation logic | ||
Repo | |||
go-fs-lock |
lockfile management functions | ||
fs-repo-migrations |
repo migrations | ||
IPLD | |||
go-block-format |
block interfaces and implementations | ||
go-ipfs-blockstore |
blockstore interfaces and implementations | ||
go-ipld-format |
IPLD interfaces | ||
go-ipld-cbor |
IPLD-CBOR implementation | ||
go-ipld-git |
IPLD-Git implementation | ||
go-merkledag |
IPLD-Merkledag implementation (and then some) | ||
Commands | |||
go-ipfs-cmds |
CLI & HTTP commands library | ||
go-ipfs-files |
CLI & HTTP commands library | ||
go-ipfs-api |
an old, stable shell for the IPFS HTTP API | ||
go-ipfs-http-client |
a new, unstable shell for the IPFS HTTP API | ||
interface-go-ipfs-core |
core go-ipfs API interface definitions | ||
Metrics & Logging | |||
go-metrics-interface |
metrics collection interfaces | ||
go-metrics-prometheus |
prometheus-backed metrics collector | ||
go-log |
logging framework | ||
Generics/Utils | |||
go-ipfs-routing |
routing (content, peer, value) helpers | ||
go-ipfs-util |
the kitchen sink | ||
go-ipfs-addr |
utility functions for parsing IPFS multiaddrs |
For brevity, we've omitted most go-libp2p, go-ipld, and go-multiformats packages. These package tables can be found in their respective project's READMEs: