diff --git a/README.md b/README.md index 901d0d0af..4f5d82a42 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,28 @@ # kubo +> the oldest IPFS implementation, previously known as "go-ipfs" + ![kubo](https://user-images.githubusercontent.com/157609/167471494-dee3a355-b551-4fbf-98e0-2eb76e867b48.png) [![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square&cacheSeconds=3600)](https://protocol.ai) -[![GoDoc](https://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square&cacheSeconds=3600)](https://godoc.org/github.com/ipfs/go-ipfs) -[![CircleCI](https://img.shields.io/circleci/build/github/ipfs/go-ipfs?style=flat-square&cacheSeconds=3600)](https://circleci.com/gh/ipfs/go-ipfs) +[![GoDoc](https://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square&cacheSeconds=3600)](https://godoc.org/github.com/ipfs/kubo) +[![CircleCI](https://img.shields.io/circleci/build/github/ipfs/kubo?style=flat-square&cacheSeconds=3600)](https://circleci.com/gh/ipfs/kubo) -## What is "IPFS Banana"? +## What is Kubo? -This repo provides "jack of all trades, master of none" implementation of IPFS. +Kubo is the oldest IPFS implementation, previously known as go-ipfs. +Think of it as a "jack of all trades, master of none" implementation of IPFS. It should be enough to get you started, if you find it lacking, see [other implementations](https://ipfs.io/#install). - ## What is IPFS? IPFS is a global, versioned, peer-to-peer filesystem. It combines good ideas from previous systems such as Git, BitTorrent, Kademlia, SFS, and the Web. It is like a single BitTorrent swarm, exchanging git objects. IPFS provides an interface as simple as the HTTP web, but with permanence built-in. You can also mount the world at /ipfs. For more info see: https://docs.ipfs.io/introduction/overview/ - Before opening an issue, consider using one of the following locations to ensure you are opening your thread in the right place: - - kubo (previously named go-ipfs) _implementation_ bugs in [this repo](https://github.com/ipfs/go-ipfs/issues). + - kubo (previously named go-ipfs) _implementation_ bugs in [this repo](https://github.com/ipfs/kubo/issues). - Documentation issues in [ipfs/docs issues](https://github.com/ipfs/ipfs-docs/issues). - IPFS _design_ in [ipfs/specs issues](https://github.com/ipfs/specs/issues). - Exploration of new ideas in [ipfs/notes issues](https://github.com/ipfs/notes/issues). @@ -32,19 +33,13 @@ Before opening an issue, consider using one of the following locations to ensure ## Next milestones -[Milestones on GitHub](https://github.com/ipfs/go-ipfs/milestones) +[Milestones on GitHub](https://github.com/ipfs/kubo/milestones) - ## Table of Contents - [kubo](#kubo) - - [What is "IPFS Banana"?](#what-is-ipfs-banana) + - [What is Kubo?](#what-is-kubo) - [What is IPFS?](#what-is-ipfs) - [Next milestones](#next-milestones) - [Table of Contents](#table-of-contents) @@ -101,18 +96,18 @@ The canonical download instructions for IPFS are over at: https://docs.ipfs.io/g ### System Requirements -IPFS can run on most Linux, macOS, and Windows systems. We recommend running it on a machine with at least 2 GB of RAM and 2 CPU cores (go-ipfs is highly parallel). On systems with less memory, it may not be completely stable. +IPFS can run on most Linux, macOS, and Windows systems. We recommend running it on a machine with at least 2 GB of RAM and 2 CPU cores (kubo is highly parallel). On systems with less memory, it may not be completely stable. If your system is resource-constrained, we recommend: -1. Installing OpenSSL and rebuilding go-ipfs manually with `make build GOTAGS=openssl`. See the [download and compile](#download-and-compile-ipfs) section for more information on compiling go-ipfs. +1. Installing OpenSSL and rebuilding kubo manually with `make build GOTAGS=openssl`. See the [download and compile](#download-and-compile-ipfs) section for more information on compiling kubo. 2. Initializing your daemon with `ipfs init --profile=lowpower` ### Docker [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/ipfs/go-ipfs?color=blue&label=go-ipfs%20docker%20image&logo=docker&sort=semver&style=flat-square&cacheSeconds=3600)](https://hub.docker.com/r/ipfs/go-ipfs/) -More info on how to run go-ipfs inside docker can be found [here](https://docs.ipfs.io/how-to/run-ipfs-inside-docker/). +More info on how to run kubo inside docker can be found [here](https://docs.ipfs.io/how-to/run-ipfs-inside-docker/). ### Native Linux package managers @@ -133,7 +128,7 @@ More info on how to run go-ipfs inside docker can be found [here](https://docs.i #### Nix -With the purely functional package manager [Nix](https://nixos.org/nix/) you can install go-ipfs like this: +With the purely functional package manager [Nix](https://nixos.org/nix/) you can install kubo (go-ipfs) like this: ``` $ nix-env -i ipfs @@ -143,7 +138,7 @@ You can also install the Package by using its attribute name, which is also `ipf #### Solus -In solus, go-ipfs is available in the main repository as +In solus, kubo (go-ipfs) is available in the main repository as [go-ipfs](https://dev.getsol.us/source/go-ipfs/repository/master/). ``` @@ -183,7 +178,7 @@ The snap sets `IPFS_PATH` to `SNAP_USER_COMMON`, which is usually `~/snap/ipfs/c $ sudo mount --bind ~/.ipfs ~/snap/ipfs/common ``` -If you want something more sophisticated to escape the snap confinement, we recommend using a different method to install `go-ipfs` so that it is not subject to snap confinement. +If you want something more sophisticated to escape the snap confinement, we recommend using a different method to install kubo so that it is not subject to snap confinement. #### macOS package managers @@ -193,7 +188,7 @@ If you want something more sophisticated to escape the snap confinement, we reco #### MacPorts -The package [ipfs](https://ports.macports.org/port/ipfs) currently points to go-ipfs and is being maintained. +The package [ipfs](https://ports.macports.org/port/ipfs) currently points to kubo (go-ipfs) and is being maintained. ``` $ sudo port install ipfs @@ -232,7 +227,8 @@ PS> choco install ipfs #### Scoop -Scoop provides `go-ipfs` in its 'extras' bucket. +Scoop provides kubo as `go-ipfs` in its 'extras' bucket. + ```Powershell PS> scoop bucket add extras PS> scoop install go-ipfs @@ -240,22 +236,22 @@ PS> scoop install go-ipfs ### Install prebuilt binaries -[![dist.ipfs.io Downloads](https://img.shields.io/github/v/release/ipfs/go-ipfs?label=dist.ipfs.io&logo=ipfs&style=flat-square&cacheSeconds=3600)](https://ipfs.io/ipns/dist.ipfs.io#go-ipfs) +[![dist.ipfs.io Downloads](https://img.shields.io/github/v/release/ipfs/kubo?label=dist.ipfs.io&logo=ipfs&style=flat-square&cacheSeconds=3600)](https://dweb.link/ipns/dist.ipfs.io#kubo) From there: -- Click the blue "Download go-ipfs" on the right side of the page. +- Click the blue "Download kubo" on the right side of the page. - Open/extract the archive. -- Move `ipfs` to your path (`install.sh` can do it for you). +- Move kubo (`ipfs`) to your path (`install.sh` can do it for you). -You can also download go-ipfs from this project's GitHub releases page if you are unable to access [dist.ipfs.io](https://ipfs.io/ipns/dist.ipfs.io#go-ipfs): - -[GitHub releases](https://github.com/ipfs/go-ipfs/releases) +If you are unable to access [dist.ipfs.io](https://dist.ipfs.io#kubo), you can also download kubo (go-ipfs) from: +- this project's GitHub [releases](https://github.com/ipfs/kubo/releases/latest) page +- `/ipns/dist.ipfs.io` at [dweb.link](https://dweb.link/ipns/dist.ipfs.io#kubo) gateway ### Build from Source -![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/ipfs/go-ipfs?label=Requires%20Go&logo=go&style=flat-square&cacheSeconds=3600) +![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/ipfs/kubo?label=Requires%20Go&logo=go&style=flat-square&cacheSeconds=3600) -go-ipfs's build system requires Go and some standard POSIX build tools: +kubo's build system requires Go and some standard POSIX build tools: * GNU make * Git @@ -265,7 +261,7 @@ To build without GCC, build with `CGO_ENABLED=0` (e.g., `make build CGO_ENABLED= #### Install Go -![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/ipfs/go-ipfs?label=Requires%20Go&logo=go&style=flat-square&cacheSeconds=3600) +![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/ipfs/kubo?label=Requires%20Go&logo=go&style=flat-square&cacheSeconds=3600) If you need to update: [Download latest version of Go](https://golang.org/dl/). @@ -281,7 +277,7 @@ export PATH=$PATH:$GOPATH/bin #### Download and Compile IPFS ``` -$ git clone https://github.com/ipfs/go-ipfs.git +$ git clone https://github.com/ipfs/kubo.git $ cd go-ipfs $ make install @@ -318,10 +314,10 @@ Note: OpenSSL requires CGO support and, by default, CGO is disabled when cross-c dependencies as well. - _WARNING_: Older versions of OSX FUSE (for Mac OS X) can cause kernel panics when mounting!- We strongly recommend you use the [latest version of OSX FUSE](http://osxfuse.github.io/). - (See https://github.com/ipfs/go-ipfs/issues/177) + (See https://github.com/ipfs/kubo/issues/177) - Read [docs/fuse.md](docs/fuse.md) for more details on setting up FUSE (so that you can mount the filesystem). - Shell command completions can be generated with one of the `ipfs commands completion` subcommands. Read [docs/command-completion.md](docs/command-completion.md) to learn more. -- See the [misc folder](https://github.com/ipfs/go-ipfs/tree/master/misc) for how to connect IPFS to systemd or whatever init system your distro uses. +- See the [misc folder](https://github.com/ipfs/kubo/tree/master/misc) for how to connect IPFS to systemd or whatever init system your distro uses. ### Updating @@ -335,7 +331,7 @@ codebase. To install `ipfs update`, [download it here](https://ipfs.io/ipns/dist -List the available versions of "go-ipfs" implementation: +List the available versions of kubo (go-ipfs) implementation: ``` $ ipfs cat /ipns/dist.ipfs.io/go-ipfs/versions @@ -387,7 +383,7 @@ If you have previously installed IPFS before and you are running into problems g Please direct general questions and help requests to our [forum](https://discuss.ipfs.io) or our IRC channel (freenode #ipfs). -If you believe you've found a bug, check the [issues list](https://github.com/ipfs/go-ipfs/issues) and, if you don't see your problem there, either come talk to us on IRC (freenode #ipfs) or file an issue of your own! +If you believe you've found a bug, check the [issues list](https://github.com/ipfs/kubo/issues) and, if you don't see your problem there, either come talk to us on [Matrix chat](https://docs.ipfs.io/community/chat/), or file an issue of your own! ## Packages @@ -460,14 +456,14 @@ For brevity, we've omitted most go-libp2p, go-ipld, and go-multiformats packages Some places to get you started on the codebase: -- Main file: [./cmd/ipfs/main.go](https://github.com/ipfs/go-ipfs/blob/master/cmd/ipfs/main.go) -- CLI Commands: [./core/commands/](https://github.com/ipfs/go-ipfs/tree/master/core/commands) +- Main file: [./cmd/ipfs/main.go](https://github.com/ipfs/kubo/blob/master/cmd/ipfs/main.go) +- CLI Commands: [./core/commands/](https://github.com/ipfs/kubo/tree/master/core/commands) - Bitswap (the data trading engine): [go-bitswap](https://github.com/ipfs/go-bitswap) - libp2p - libp2p: https://github.com/libp2p/go-libp2p - DHT: https://github.com/libp2p/go-libp2p-kad-dht - PubSub: https://github.com/libp2p/go-libp2p-pubsub -- [IPFS : The `Add` command demystified](https://github.com/ipfs/go-ipfs/tree/master/docs/add-code-flow.md) +- [IPFS : The `Add` command demystified](https://github.com/ipfs/kubo/tree/master/docs/add-code-flow.md) ### Map of Implemented Subsystems **WIP**: This is a high-level architecture diagram of the various sub-systems of this specific implementation. To be updated with how they interact. Anyone who has suggestions is welcome to comment [here](https://docs.google.com/drawings/d/1OVpBT2q-NtSJqlPX3buvjYhOnWfdzb85YEsM_njesME/edit) on how we can improve this! @@ -509,5 +505,5 @@ Please reach out to us in one [chat](https://docs.ipfs.io/community/chat/) rooms This project is dual-licensed under Apache 2.0 and MIT terms: -- Apache License, Version 2.0, ([LICENSE-APACHE](https://github.com/ipfs/go-ipfs/blob/master/LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) -- MIT license ([LICENSE-MIT](https://github.com/ipfs/go-ipfs/blob/master/LICENSE-MIT) or http://opensource.org/licenses/MIT) +- Apache License, Version 2.0, ([LICENSE-APACHE](https://github.com/ipfs/kubo/blob/master/LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) +- MIT license ([LICENSE-MIT](https://github.com/ipfs/kubo/blob/master/LICENSE-MIT) or http://opensource.org/licenses/MIT)