Skip to content

Commit

Permalink
edits
Browse files Browse the repository at this point in the history
  • Loading branch information
ElPaisano committed Sep 28, 2023
1 parent db2f6ef commit 06b8cc6
Show file tree
Hide file tree
Showing 3 changed files with 643 additions and 17,591 deletions.
2 changes: 1 addition & 1 deletion docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,6 @@ module.exports = {
'/concepts/merkle-dag'
]
},
'/concepts/ipfs-implementations',
'/concepts/comparisons',
'/concepts/usage-ideas-examples',
['/concepts/measuring', 'Measuring the network'],
Expand Down Expand Up @@ -307,6 +306,7 @@ module.exports = {
],
'/reference/': [
'/reference/diagnostic-tools',
'/reference/ipfs-implementations',
'/reference/http/gateway',
'/reference/js/api',
'/reference/go/api',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,73 +19,85 @@ Looking for an easy, user-friendly way to get started with IPFS? Try any of the
- [Brave Browser](../how-to/companion-node-types.md#native), native support for IPFS in a browser with a Kubo node built directly into the browser itself.
:::

The implementation or tool that you use to interact with and use IPFS depends on your partiuclar use case.

Check failure on line 22 in docs/reference/ipfs-implementations.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/reference/ipfs-implementations.md#L22

[ipfs-docs-style.PLNSpelling] Did you really mean 'partiuclar'?
Raw output
{"message": "[ipfs-docs-style.PLNSpelling] Did you really mean 'partiuclar'?", "location": {"path": "docs/reference/ipfs-implementations.md", "range": {"start": {"line": 22, "column": 87}}}, "severity": "ERROR"}

- [Use IPFS with your browser](#use-ipfs-with-your-browser)
- [Use IPFS without code](#use-ipfs-without-code)
- [Interact via the CLI](#interact-via-the-cli)
- [Develop applications](#develop-applications)

### Use IPFS with your browser

Interact with the network using any Brave, Chrome, Edge, Firefox, Opera, and any other Chromium-based web browser using the [IPFS Companion browser extension](./install/ipfs-companion.md).

### Interact with IPFS without code
### Use IPFS without code

The IPFS Desktop implementation is a desktop-based application that bundles an IPFS node, file manager, peer manager, and content explorer together. No need to touch the terminal or use code. Just [install Desktop](../install/ipfs-desktop.md) and quickly access the network.
- If you'd like desktop-native GUI application, IPFS Desktop bundles an IPFS node, file manager, peer manager, and content explorer together. No need to touch the terminal or use code. Just [install Desktop](../install/ipfs-desktop.md) and quickly access the network.
- To store data on IPFS persistently, without dealing with any applications or installations, you can also use a [pinning service](../concepts/persistence.md#pinning-services). You can follow [this quickstart guide](../quickstart/publish.md) to learn more.

### Interact via the CLI

You can interact with the IPFS network via the terminal:

- To quickly retreive data with minimal complexity and overhead, use the [Lassie client](https://github.com/filecoin-project/lassie/), which provides a [simple command-line interface](https://github.com/filecoin-project/lassie/#command-line-interface), in addition to other features.

Check failure on line 42 in docs/reference/ipfs-implementations.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/reference/ipfs-implementations.md#L42

[ipfs-docs-style.PLNSpelling] Did you really mean 'retreive'?
Raw output
{"message": "[ipfs-docs-style.PLNSpelling] Did you really mean 'retreive'?", "location": {"path": "docs/reference/ipfs-implementations.md", "range": {"start": {"line": 42, "column": 14}}}, "severity": "ERROR"}

- For a wider range of features, use [IPFS Kubo as a command-line tool](../reference/kubo/cli.md).
- For a wider range of features, use [IPFS Kubo as a command-line tool](kubo/cli.md).

### Develop applications

#### Language agnostic

If you'd like to use IPFS over standard HTTP, you havve several options:
You can develop IPFS applications with native support in languages such as [Go](#go) or [JavaScript](#javascript), or by [using HTTP](#http). There are also tools available to support [specialized use cases such as data orchestration and mobile applications](#specialized-use-cases).

- If you simply want to retrieve data, use the [Lassie client HTTP API](https://github.com/filecoin-project/lassie/#http-api).
#### HTTP

- 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](../reference/kubo/cli.md). There are multiple [RPC API clients in multiple languages](../reference/kubo-rpc-cli.md) to choose from.
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](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](kubo-rpc-cli.md) to choose from.
- For an implementation and runtime agnostic HTTP interface, use an [IPFS gateway](./reference/http/gateway.md).

#### Language specific

##### Go
#### Go

Looking for to add IPFS functionality to your Go application? Try these implementations:

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

Check failure on line 62 in docs/reference/ipfs-implementations.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/reference/ipfs-implementations.md#L62

[ipfs-docs-style.PLNSpelling] Did you really mean 'Boxo'?
Raw output
{"message": "[ipfs-docs-style.PLNSpelling] Did you really mean 'Boxo'?", "location": {"path": "docs/reference/ipfs-implementations.md", "range": {"start": {"line": 62, "column": 97}}}, "severity": "ERROR"}

**Use Kubo if you want**:
##### When to use Kubo

- To run a full-featured IPFS node that can interact with the wider IPFS network
- Build applications in Go
Use Kubo if you want:

**Use Boxo if you**:
- To run a full-featured IPFS node that can interact with the wider IPFS network.
- Build applications in Go.

- Are building a modular application that interacts with the IPFS network
- Want more choice in which features you include in your application
- Are building an IPFS implementation
- Want to reuse some components of IPFS such as the Kademlia DHT, Bitswap, data encoding, etc., without the full featureset of Kubo
- Want to experiment with IPFS
##### When to use Boxo

Check failure on line 71 in docs/reference/ipfs-implementations.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/reference/ipfs-implementations.md#L71

[ipfs-docs-style.PLNSpelling] Did you really mean 'Boxo'?
Raw output
{"message": "[ipfs-docs-style.PLNSpelling] Did you really mean 'Boxo'?", "location": {"path": "docs/reference/ipfs-implementations.md", "range": {"start": {"line": 71, "column": 19}}}, "severity": "ERROR"}

##### JavaScript
Use Boxo if you:

Check failure on line 73 in docs/reference/ipfs-implementations.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/reference/ipfs-implementations.md#L73

[ipfs-docs-style.PLNSpelling] Did you really mean 'Boxo'?
Raw output
{"message": "[ipfs-docs-style.PLNSpelling] Did you really mean 'Boxo'?", "location": {"path": "docs/reference/ipfs-implementations.md", "range": {"start": {"line": 73, "column": 5}}}, "severity": "ERROR"}

To create IPFS applications in JavaScript, use the [IPFS Helia implementation in JavaScript](https://github.com/ipfs/helia).
- Are building a modular application that interacts with the IPFS network.
- Want more choice in which features you include in your application.
- Are building an IPFS implementation.
- Want to reuse some components of IPFS such as the Kademlia DHT, Bitswap, data encoding, etc., without the full featureset of Kubo.

Check failure on line 78 in docs/reference/ipfs-implementations.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/reference/ipfs-implementations.md#L78

[ipfs-docs-style.PLNSpelling] Did you really mean 'featureset'?
Raw output
{"message": "[ipfs-docs-style.PLNSpelling] Did you really mean 'featureset'?", "location": {"path": "docs/reference/ipfs-implementations.md", "range": {"start": {"line": 78, "column": 114}}}, "severity": "ERROR"}
- Want to experiment with IPFS.

##### Rust
#### JavaScript

##### C
To create IPFS applications in JavaScript, use the [IPFS Helia implementation in JavaScript](https://github.com/ipfs/helia).

#### Specialized use cases

##### Embedded applications / Java
##### 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.

##### Embedded applications

If you're looking to develop embedded applications and/or applications in Java, use [Nabu](https://github.com/peergos/nabu).
- If you're looking to develop embedded applications in Java, use [Nabu](https://github.com/peergos/nabu).

Check failure on line 93 in docs/reference/ipfs-implementations.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/reference/ipfs-implementations.md#L93

[ipfs-docs-style.PLNSpelling] Did you really mean 'Nabu'?
Raw output
{"message": "[ipfs-docs-style.PLNSpelling] Did you really mean 'Nabu'?", "location": {"path": "docs/reference/ipfs-implementations.md", "range": {"start": {"line": 93, "column": 68}}}, "severity": "ERROR"}
- For embedded applications in Rust, use [ipfs-lite](https://github.com/hsanjuan/ipfs-lite).

##### Mobile applications

- For an iOS and Android app with IPFS read and share flows, try [Durin](https://github.com/ipfs-shipyard/Durin).

Check failure on line 98 in docs/reference/ipfs-implementations.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/reference/ipfs-implementations.md#L98

[ipfs-docs-style.PLNSpelling] Did you really mean 'Durin'?
Raw output
{"message": "[ipfs-docs-style.PLNSpelling] Did you really mean 'Durin'?", "location": {"path": "docs/reference/ipfs-implementations.md", "range": {"start": {"line": 98, "column": 67}}}, "severity": "ERROR"}
- If you need packages for Android, iOS and React-native that allow you to run and use an IPFS node on a mobile device, use [gomobile-ipfs](https://github.com/ipfs-shipyard/gomobile-ipfs).

## Implementations and tools catalog

IPFS implementations are listed below, and are grouped into the following categories:
Expand All @@ -101,10 +113,8 @@ IPFS implementations are listed below, and are grouped into the following catego
| 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. |
| 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 |
| iroh | <https://github.com/n0-computer/iroh> | rust | Extreme-efficiency oriented IPFS implementation. |
| Kubo | <https://github.com/ipfs/kubo> | go | Generalist daemon oriented IPFS implementation with an extensive HTTP RPC API. |
| Lassie | <https://github.com/filecoin-project/lassie/>  | go | A minimal universal retrieval client library for IPFS and Filecoin. |
| Lotus | <https://github.com/filecoin-project/lotus> | go | Filecoin node handling consensus, storage providing, making storage deals, importing data, ... |
Expand All @@ -130,6 +140,7 @@ IPFS implementations are listed below, and are grouped into the following catego
| Agregore | <https://github.com/AgregoreWeb/agregore-ipfs-daemon> | go, javascript | Mobile friendly Kubo daemon. |
| barge | <https://github.com/application-research/barge> | go | CLI tool with a git like workflow to upload deltas to estuary. |
| c-ipfs | <https://git.agorise.net/agorise/c-ipfs> | C | IPFS implementation in C. |
| 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. |
| ipfs tiny | <https://gitlab.com/librespacefoundation/ipfs-tiny> | c++ | Tiny embeddable, os-independent IPFS implementation. |
| ipget | <https://github.com/ipfs/ipget> | go | Minimal wget inspired tool to download files from IPFS nodes over bitswap. |
Expand Down
Loading

0 comments on commit 06b8cc6

Please sign in to comment.