-
Notifications
You must be signed in to change notification settings - Fork 417
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implementations catalog upgrade: explain usage #1728
base: main
Are you sure you want to change the base?
Conversation
If you'd like to use IPFS over standard HTTP, you have several options: | ||
|
||
- If you simply want to retrieve data, use the [Lassie client HTTP API](https://github.com/filecoin-project/lassie/#http-api). | ||
- You can control an IPFS Kubo node using HTTP via the [Kubo RPC API](../reference/kubo/rpc.md), with the same range of functionality available via the [Kubo CLI](kubo/cli.md). There are multiple [RPC API clients in multiple languages](../reference/kubo-rpc-cli.md) to choose from. | ||
- For an implementation and runtime agnostic HTTP interface, use an [IPFS gateway](../reference/http/gateway.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This gives false impression that "Lassie API" is something special. It is not.
We should not confuse the reader by mentioning it, the only thing that docs should mention is Gateway interface defined by https://specs.ipfs.tech/http-gateways/, and legacy Kubo RPC:
If you'd like to use IPFS over standard HTTP, you have several options: | |
- If you simply want to retrieve data, use the [Lassie client HTTP API](https://github.com/filecoin-project/lassie/#http-api). | |
- You can control an IPFS Kubo node using HTTP via the [Kubo RPC API](../reference/kubo/rpc.md), with the same range of functionality available via the [Kubo CLI](kubo/cli.md). There are multiple [RPC API clients in multiple languages](../reference/kubo-rpc-cli.md) to choose from. | |
- For an implementation and runtime agnostic HTTP interface, use an [IPFS gateway](../reference/http/gateway.md). | |
If you'd like to use IPFS over standard HTTP, you have several options: | |
- If you simply want to retrieve data, use the generic [IPFS gateway](../reference/http/gateway.md) | |
- You can control an IPFS Kubo node using HTTP via the [Kubo RPC API](../reference/kubo/rpc.md), with the same range of functionality available via the [Kubo CLI](kubo/cli.md). There are multiple [RPC API clients in multiple languages](../reference/kubo-rpc-cli.md) to choose from. |
##### Embedded applications | ||
|
||
- If you're looking to develop embedded applications in Java, use [Nabu](https://github.com/peergos/nabu). | ||
- For embedded applications in Rust, use [ipfs-lite](https://github.com/hsanjuan/ipfs-lite). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ipfs-lite is written in Go, not Rust :)
- For embedded applications in Rust, use [ipfs-lite](https://github.com/hsanjuan/ipfs-lite). | |
- For lightweight embedded applications in GO, use [ipfs-lite](https://github.com/hsanjuan/ipfs-lite). |
|
||
| Name | URL | Language(s) | What it's trying to do | | ||
|------------------|------------------------------------------------------------------|------------------------|--------------------------------------------------------------------------------------------------------------------------| | ||
| bifrost-gateway | <https://github.com/ipfs/bifrost-gateway> | go | Lightweight IPFS HTTP Gateway daemon backed by a remote data store. | | ||
| boost | <https://github.com/filecoin-project/boost> | go | Daemon to get IPFS data in and out of a Filecoin storage provider. | | ||
| boxo | <https://github.com/ipfs/boxo> | go | A component library for building IPFS applications and implementations in Go. | | ||
| Elastic provider | <https://github.com/ipfs-elastic-provider/ipfs-elastic-provider> | javascript, typescript | Scalable cloud-native implementation. | | ||
| Estuary | <https://github.com/application-research/estuary/> | go | Daemon oriented service to pin and onboard IPFS data into Filecoin. | | ||
| helia | <https://github.com/ipfs/helia> | javascript | A lean, modular, and modern implementation of IPFS for the prolific JS and browser environments | | ||
| ipfs cluster | <https://github.com/ipfs/ipfs-cluster> | go | Orchestration for multiple Kubo nodes via CRDT / Raft consensus | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| ipfs cluster | <https://github.com/ipfs/ipfs-cluster> | go | Orchestration for multiple Kubo nodes via CRDT / Raft consensus | | |
| ipfs cluster | <https://ipfscluster.io> | go | Orchestration for multiple Kubo nodes via CRDT / Raft consensus | |
|
||
##### Orchestrating nodes | ||
|
||
For complex applications that require data orchestration across a swarm of IPFS daemons, use [ipfs-cluster](https://github.com/ipfs-cluster/ipfs-cluster), which allocates, replicates and tracks a global pinset distributed among multiple peers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cluster has a very nice website:
For complex applications that require data orchestration across a swarm of IPFS daemons, use [ipfs-cluster](https://github.com/ipfs-cluster/ipfs-cluster), which allocates, replicates and tracks a global pinset distributed among multiple peers. | |
For complex applications that require data orchestration across a swarm of IPFS daemons, use [ipfs-cluster](https://ipfscluster.io), which allocates, replicates and tracks a global pinset distributed among multiple peers. |
description: "There isn't just one canonical IPFS implementation. Learn about the various IPFS implementations available for different use cases." | ||
--- | ||
|
||
# IPFS implementations | ||
|
||
IPFS is an open-source project that encourages the development of multiple implementations of the protocol, each of which seeks to optimize for various use cases. Below is non-exhaustive list of IPFS implementations, grouped by development and maintenance status ([Popular or Actively Maintained](#popular-or-actively-maintained), [Lite or Experimental](#lite-or-experimental) and [Inactive](#inactive)) and ordered alphabetically. To propose additions or edits, [edit this page in GitHub](https://github.com/ipfs/ipfs-docs/edit/main/docs/concepts/ipfs-implementations.md) or [open an issue](https://github.com/ipfs/ipfs-docs/issues/new?assignees=&labels=need%2Ftriage&template=open_an_issue.md&title=IPFS%20Implementations). | ||
The purpose of this page is to catalog the many IPFS <VueCustomTooltip label="Software, written in any programming language, with functionality to process and transmit content-addressed data. Some implementations are optimized for specific use cases or devices, or use different subsystems to handle content-addressed data. There are multiple specififactions in IPFS for handling content-addressed data, and not all implementations implement them." underlined multiline is-medium>implementations</VueCustomTooltip> and tools, as well as provide general guidance on choosing and implementation or tool to work with. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The purpose of this page is to catalog the many IPFS <VueCustomTooltip label="Software, written in any programming language, with functionality to process and transmit content-addressed data. Some implementations are optimized for specific use cases or devices, or use different subsystems to handle content-addressed data. There are multiple specififactions in IPFS for handling content-addressed data, and not all implementations implement them." underlined multiline is-medium>implementations</VueCustomTooltip> and tools, as well as provide general guidance on choosing and implementation or tool to work with. | |
The purpose of this page is to catalog the many IPFS <VueCustomTooltip label="Software, written in any programming language, with functionality to process and transmit content-addressed data. Some implementations are optimized for specific use cases or devices, or use different subsystems to handle content-addressed data. There are multiple specifications in IPFS for handling content-addressed data, and not all implementations implement them." underlined multiline is-medium>implementations</VueCustomTooltip> and tools, as well as provide general guidance on choosing and implementation or tool to work with. |
- To quickly retrieve data with minimal complexity and overhead, use the [Lassie client Golang library](https://github.com/filecoin-project/lassie/#golang-library) in your applications. | ||
- For more complicated applications requiring the full range of IPFS functionality, use Kubo or Boxo. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we want to point people at boxo, then kubo, then the rest.
(Lassie is limited to "leach" mode, it should not be suggested as the first option)
- To quickly retrieve data with minimal complexity and overhead, use the [Lassie client Golang library](https://github.com/filecoin-project/lassie/#golang-library) in your applications. | |
- For more complicated applications requiring the full range of IPFS functionality, use Kubo or Boxo. | |
- To create custom IPFS node tailored to your individual needs, try [Boxo SDK](https://github.com/ipfs/boxo). | |
- For applications requiring the full range of IPFS functionality, such as providing data to other peers, use [Kubo](https://github.com/ipfs/kubo). | |
- To quickly retrieve data with minimal complexity and overhead, use the [Lassie client Golang library](https://github.com/filecoin-project/lassie/#golang-library) in your applications. |
Addresses #1673