Skip to content
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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

ElPaisano
Copy link
Contributor

@ElPaisano ElPaisano commented Oct 3, 2023

Addresses #1673

Comment on lines +51 to +55
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).
Copy link
Member

@lidel lidel Oct 10, 2023

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:

Suggested change
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).
Copy link
Member

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 :)

Suggested change
- 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 |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| 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.
Copy link
Member

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:

Suggested change
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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.

Comment on lines +61 to +62
- 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.
Copy link
Member

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)

Suggested change
- 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implementations section upgrade: explain usage
2 participants