diff --git a/blog/2021-12-23-why-i-use-aqua.md b/blog/2021-12-23-why-i-use-aqua.md index df4ece556..3e42e42fa 100644 --- a/blog/2021-12-23-why-i-use-aqua.md +++ b/blog/2021-12-23-why-i-use-aqua.md @@ -39,4 +39,4 @@ asdf is used for the similar purpose, but I use aqua. Why? * Easy to update tools with Renovate * aqua supports splitting configuration files, so it is easy to filter builds in CI by changed file paths -About the difference between aqua and asf, please see [Comparison - asdf](/docs/comparison/asdf) too. +About the difference between aqua and asf, please see [Compared with asdf](/docs/overview#compared-with-asdf) too. diff --git a/docs/comparison/_category_.json b/docs/comparison/_category_.json deleted file mode 100644 index 1b5bbde87..000000000 --- a/docs/comparison/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Comparison", - "position": 400 -} diff --git a/docs/comparison/apt-yum.md b/docs/comparison/apt-yum.md deleted file mode 100644 index 53f8ac67f..000000000 --- a/docs/comparison/apt-yum.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -sidebar_position: 200 ---- - -# apt and yum - -## Pros - -* Please see [Homebrew#pros](homebrew.md#pros) -* aqua doesn't require the root priviledge -* aqua supports Windows, macOS, and Linux - -## Cons - -* Please see [Homebrew#cons](homebrew.md#cons) diff --git a/docs/comparison/arkade.md b/docs/comparison/arkade.md deleted file mode 100644 index 30c3e4eef..000000000 --- a/docs/comparison/arkade.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -sidebar_position: 700 ---- - -# alexellis/arkade - -https://github.com/alexellis/arkade#download-cli-tools-with-arkade - -> Download CLI tools with arkade -> arkade downloads the correct version of a CLI for your OS and CPU. -> -> With automatic detection of: Windows / MacOS / Linux / Intel / ARM. - -Note that arkade is not a CLI installer but `Open Source Kubernetes Marketplace`, -so it might not be appropriate to compare arkade with aqua. -But in this context, we compare them in terms of installing CLI tools. - -## Pros and Cons - -Please see [Common Pros and Cons](common.md). diff --git a/docs/comparison/asdf.md b/docs/comparison/asdf.md deleted file mode 100644 index 9a6514fe3..000000000 --- a/docs/comparison/asdf.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -sidebar_position: 500 ---- - -# asdf - -https://asdf-vm.com/ - -## Blogs - -* [2021-12-23 Why I use aqua](https://dev.to/suzukishunsuke/why-i-use-aqua-230) -* [2021-12-09 aqua と asdf の違い](https://zenn.dev/shunsuke_suzuki/articles/compare-aqua-with-asdf) -* [2021-12-10 新しいツールへの対応を asdf と aqua で比較](https://zenn.dev/shunsuke_suzuki/articles/create-asdf-plugin-to-compare-aqua) - -## Common - -* Support installing tools in local and global -* Have plugin mechanism -* GitHub Actions - -## Difference between aqua Registry and asdf Plugin - -aqua Registry is different from asdf Plugin. - -asdf Plugin - -* Create a Repository per tool -* Install tool with Shell Script -* Manage the plugin list in https://github.com/asdf-vm/asdf-plugins - -aqua Registry - -* Manage multiple tools in a Registry -* Registry is YAML -* There is a Registry named `Standard Registry` -* Install Process is restricted and exteranl commands aren't available - -Due to the restriction, aqua can't support some tools. -But aqua Registry Configuration is simple due to this restriction. You don't have to write shell scripts. - -### Security - -asdf Plugin executes shell scripts, so there is a security concern. -asdf has a [Security Policy](https://github.com/asdf-vm/asdf-plugins#security), but it is difficult to prevent malicious code from being executed mechanically. - -aqua doesn't execute the external commands, so it is safe. - -### Maintainability, readability, and ownership - -When you support a new tool for asdf, you would create an asdf plugin. - -* https://asdf-vm.com/plugins/create.html -* https://github.com/asdf-vm/asdf-plugin-template - -You have to create a GitHub Repository based on the Template Repository and write shell scripts. -You have to maintain the plugin by yourself. - -The quality of shell scripts depends on developers and it may be difficult to read. -The shell script may have some dependencies. -Some third party plugins may not be maintained. - -On the other hand, in case of aqua you would create an issue or pull request to aqua's Standard Registry. - -Sending a pull request to aqua's Standard Registry is easier than creating an asdf plugin. -You can only write declarative YAML configuration based on existing Registry configuration. - -For example, plase see the pull request to support velero. - -https://github.com/aquaproj/aqua-registry/pull/1281 - -This pull request includes only 11 lines YAML configuration. -The configuration would be maintained in the Standard Registry. -You don't have to maintain it by yourself. -aqua doesn't depend on other than OS and CPU architecture. -aqua's Registry Configuration is easier to read than shell script. - -### Plugin Version Management - -aqua forces to pin Registry version in aqua.yaml, which ensures the reproductivity. -You can update the Registry version with Renovate easily. - -On the other hand, asdf doesn't force to pin the plugin version. - -## Continous update - -aqua provides Renovate Preset Config and you can easily update tools continuously. -The package name of aqua is same as GitHub Repository owner and name, so you can update it with Renovate's github_release Datasource. - -On the other hand, there is an issue to support Renovate Manager for asdf but this isn't supported yet. -And there is no general Renovate Config Preset for asdf. -The asdf plugin name is basically different from GitHub Repository owner and name, so it is difficult to update it with Renovate machanically. You have to write code to update it per tool. - -## Behaviour when invoked tool isn't installed - -When a tool is invoked but this isn't installed yet, -aqua installs it automatically and executes it. -We name this feature as `Lazy Install`. - -On the other hand, asdf doesn't install the tool automatically. -asdf outputs the guide and exits with non zero code. - -## aqua's additional features - -* [Checksum Verification](/docs/reference/checksum) -* [Share aqua configuration for teams and organizations with AQUA_GLOBAL_CONFIG](/docs/tutorial-extras/team-config) -* [Split the list of packages](/docs/tutorial-extras/split-config) -* CircleCI Orb - -## asdf's additional features - -### Support existing config files - -asdf supports for existing config files .nvmrc, .node-versions, .ruby-version for smooth migration. -On the other hand, aqua doesn't support them. - -### Support Optional Scripts - -https://asdf-vm.com/plugins/create.html#optional-scripts diff --git a/docs/comparison/binenv.md b/docs/comparison/binenv.md deleted file mode 100644 index 65f4b190f..000000000 --- a/docs/comparison/binenv.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -sidebar_position: 510 ---- - -# binenv - -https://github.com/devops-works/binenv - -> One binary to rule them all. Manage all those pesky binaries (kubectl, helm, terraform, ...) easily. - -## Pros - -* aqua supports more tools than binenv -* aqua provides Renovate Config Preset, so you can update tools by Renovate easily -* aqua supports Windows -* aqua provides the interactive search UI -* aqua supports Lazy Install - -## Cons - -* aqua doesn't support updating aqua itself - * binenv provides `update` command - -## Difference - -aqua forces to pin tool versions. -On the other hand, binenv supports specifying the range of versions. - -e.g. - -``` -kubectl=1.18.8 -terraform>0.12 -terragrunt~>0.23.0 -``` - -We prefer to pin tool versions. - -## Difference between aqua Registry and biennv Distribution - -### Common - -* Define how to install tools with declarative YAML configuration - * aqua: [registry.yaml](https://github.com/aquaproj/aqua-registry/blob/main/registry.yaml) - * binenv: [distributions.yaml](https://github.com/devops-works/binenv/blob/develop/distributions/distributions.yaml) - -### Difference - -:::caution -We are not familiar with binenv. -So maybe the description about them is wrong. -Your contribution is welcome. -::: - -* binenv doesn't support feature like aqua's [version_overrides](/docs/reference/registry-config/version-overrides) -* aqua-registry is maintained by CI continuously - * e.g. [aqua-registry#3854](https://github.com/aquaproj/aqua-registry/pull/3854#issuecomment-1150481845) -* aqua forces to pin Registry version in `aqua.yaml`. On ther other hand, binenv doesn't support specifying distributions file -* aqua supports `local` registry and `github_content` registry. So you can install tools hosted at private repositories diff --git a/docs/comparison/common.md b/docs/comparison/common.md deleted file mode 100644 index d0e3ea518..000000000 --- a/docs/comparison/common.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Common Pros and Cons - -## Pros - -* aqua supports changing tool versions per project -* aqua forces to pin tool version, which solves the problem due to the different of version -* It is easy to use aqua - * [aqua manages tools declaratively](/docs/reference/declarative-imperative) - * aqua's command is always `aqua i [-l]`. You don't have to specify tool names. It's user friendly -* aqua provides Renovate Preset Config -* aqua provides GitHub Actions and CircleCI Orb -* aqua supports Lazy Install -* aqua supports installing tools from the private repositories -* aqua supports Windows, macOS, and Linux -* aqua supports [Checksum Verification](/docs/reference/checksum) - -:::info -From aqua v1.12.0, aqua supports Windows. -Please see [Windows Support](/docs/reference/windows-support) too. -::: - -## Cons - -* [aqua doesn't support running any external commands to install tools](#aqua-doesnt-support-running-any-external-commands-to-install-tools) -* [aqua doesn't support some Language Runtime such as Python, Ruby, Node.js, and so on](#aqua-doesnt-support-some-language-runtime-such-as-python-ruby-nodejs-and-so-on) -* [aqua doesn't install dependencies](#aqua-doesnt-install-dependencies) - -### aqua doesn't support running any external commands to install tools - -aqua's install process is very simple. - -1. Download tool -1. Unarchive tool in $AQUA_ROOT_DIR - -aqua doesn't support running commands after unarchiving. -So aqua doesn't support installing tools which some commands are required. - -This is not necessarily a draw back. - -https://github.com/aquaproj/aqua-registry/issues/987#issuecomment-1104422712 - -> You may think it's inconvenient, but we think this design is important to keep aqua simple, secure, less dependency, and maintainable. -> -> aqua doesn't need any dependency. -> aqua doesn't run external commands. -> aqua doesn't change files outside install directory. -> -> So the trouble shooting is relatively easy. -> Otherwise, user support would be very hard. - -:::info -aqua supports building Go tools. -Please see [`go` Package](/docs/reference/registry-config/go-package), [`go_install` Package](/docs/reference/registry-config/go-install-package), and [blog post](/blog/2022/05/30/support-building-go-tools). -::: - -### aqua doesn't support some language runtime such as Python, Ruby, Node.js, and so on - -Due to the above restriction, aqua doesn't support some language runtime such as Python, Ruby, Node.js, and so on. -So if you want to install them, please use other tools such as pyenv, rbenv, nvm, asdf, and so on. - -You can use aqua and these tools together. - -### aqua doesn't install dependencies - -Some package managers such as Homebrew installs dependencies automatically. -On the other hand, aqua doesn't manage dependencies. - -This is not necessarily a draw back. -You can install dependent tools freely. -Sometimes this behavior is desirable. diff --git a/docs/comparison/github-actions.md b/docs/comparison/github-actions.md deleted file mode 100644 index 0507ecef4..000000000 --- a/docs/comparison/github-actions.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 400 ---- - -# GitHub Actions - -Many GitHub Actions installs the tool automatically before executing it. -For example, [GitHub Actions for golangci-lint](https://golangci-lint.run/usage/install#github-actions) installs golangci-lint automatically. -It's very easy to use, but there are some problems. - -* Some GitHub Actions don't force to pin the tool version, which may raise the problem -* When you pin the tool version, you have to update the tool version continuously. - Update Automation tool such as Dependabot and Renovate don't update it automatically. - In case of Renovate, you have to configure Regex Manager per tool -* GitHub Actions doesn't support installing tools for local development -* It is difficult to unify the tool version in local development and CI - -aqua solves these problems. - -* aqua forces to pin the tool version -* aqua provides [Renovate Preset](https://github.com/aquaproj/aqua-renovate-config), so you can update tools by Renovate without configuring -* aqua supports both local development and CI -* you can use the same tool version in local development and CI naturally diff --git a/docs/comparison/go-modules.md b/docs/comparison/go-modules.md deleted file mode 100644 index 3e0cd9c16..000000000 --- a/docs/comparison/go-modules.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 750 ---- - -# Go Modules - -- https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module -- https://github.com/go-modules-by-example/index/blob/master/010_tools/README.md -- https://github.com/golang/go/issues/25922 - -In Go community, managing tools as Go Modules is a widely used approach. -For detail, please see above links. - -## Pros - -* aqua supports changing tool versions per project -* aqua supports not only Go but also various tools -* aqua provides the interactive search UI -* aqua assures tool versions -* aqua supports Lazy Install - -## Cons - -* aqua can't install a tool if the tool isn't supported by Registries diff --git a/docs/comparison/homebrew.md b/docs/comparison/homebrew.md deleted file mode 100644 index aaefd66d3..000000000 --- a/docs/comparison/homebrew.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Homebrew - -## Pros - -* aqua supports changing tool versions per project -* aqua forces to pin tool version, which solves the problem due to the different of version -* aqua's command is always `aqua i [-l]`. You don't have to specify tool names. It's user friendly -* aqua is a single binary written in Go, so it is easy to install aqua in a container - -## Cons - -* aqua's install process is very simple. - - 1. Download tool - 1. Unarchive tool in $AQUA_ROOT_DIR - - aqua doesn't support running commands after unarchiving. - So aqua doesn't support installing tools which some commands are required. -* aqua doesn't support installing dependent tools automatically - -## Homebrew Bundle - -With [Homebrew Bundle](https://github.com/Homebrew/homebrew-bundle), you can manage tools with Configuration file same as aqua. -But even if Brewfile is updated, tools aren't updated until `brew bundle` explicitly. - -On the other hand, aqua supports [Lazy Install](/docs/tutorial-basics/lazy-install) so the update of aqua.yaml is reflected automatically. diff --git a/docs/comparison/index.md b/docs/comparison/index.md deleted file mode 100644 index d7a985c52..000000000 --- a/docs/comparison/index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Comparison - -:::caution -We are not familiar with compared tools. -So maybe the description about them is wrong. -Your contribution is welcome. -::: - -* [Common Pros and Cons](common.md) -* [Manual download and installation](manual.md) -* [Shell Script](shell-script.md) -* [Homebrew](homebrew.md) -* [asdf](asdf.md) -* [binenv](binenv.md) -* [apt and yum](apt-yum.md) -* [pyenv, rbenv, tfenv, and etc](pyenv-rbenv-tfenv.md) -* [GitHub Actions](github-actions.md) -* [marcosnils/bin](marcosnils-bin.md) -* [alexellis/arkade](arkade.md) -* [Nix (NixOS)](nixos.md) -* [Go Modules](go-modules.md) - -## Blogs - -* [2021-12-23 Why I use aqua](https://dev.to/suzukishunsuke/why-i-use-aqua-230) -* [2021-12-22 なぜ aqua を使うのか](https://zenn.dev/shunsuke_suzuki/articles/why-should-you-use-aqua) diff --git a/docs/comparison/manual.md b/docs/comparison/manual.md deleted file mode 100644 index f68be1c76..000000000 --- a/docs/comparison/manual.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -sidebar_position: 70 ---- - -# Manual download and install tools - -It is bothersome to download and install tools manually and it is difficult to update tools continuously. -aqua automates this process. diff --git a/docs/comparison/marcosnils-bin.md b/docs/comparison/marcosnils-bin.md deleted file mode 100644 index 34ba31c73..000000000 --- a/docs/comparison/marcosnils-bin.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -sidebar_position: 600 ---- - -# marcosnils/bin - -https://github.com/marcosnils/bin - -## Pros and Cons - -Please see [Common Pros and Cons](common.md). diff --git a/docs/comparison/nixos.md b/docs/comparison/nixos.md deleted file mode 100644 index 31a4c1a37..000000000 --- a/docs/comparison/nixos.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -sidebar_position: 700 ---- - -# Nix (NixOS) - -:::caution -Note that we aren't familiar with Nix. -::: - -https://nixos.org/ - -> Nix is a tool that takes a unique approach to package management and system configuration. - -Nix is a package manager. On the other hand, aqua isn't a package manager. -aqua doesn't manage dependencies. - -Nix builds reproducible, declarative and reliable systems. - -aqua is simple and easy to use. -This is important to introduce aqua in a team and project. - -Furthermore, you can update tools easily with Renovate. aqua is CI friendly. You can add a tool to the Standard Registry easily. - -On the other hand, Nix is too complicated to introduce it to team and project. -Compared with aqua, the learning cost is high. -If your team is small and every member has high technical skill, this may not be a problem. - -The scope and goal of aqua are different from Nix. diff --git a/docs/comparison/pyenv-rbenv-tfenv.md b/docs/comparison/pyenv-rbenv-tfenv.md deleted file mode 100644 index d4b780c32..000000000 --- a/docs/comparison/pyenv-rbenv-tfenv.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -sidebar_position: 300 ---- - -# pyenv, rbenv, tfenv, and etc - -## Pros - -These tools are specialized for the specific tool such as Python, Ruby, and Terraform. -aqua is more general. -aqua is written in Go, so aqua doesn't depend on the specific shell. - -## Cons - -aqua doesn't support building the tool when installing. So aqua doesn't support tools which the build is required. diff --git a/docs/comparison/shell-script.md b/docs/comparison/shell-script.md deleted file mode 100644 index 58c843f09..000000000 --- a/docs/comparison/shell-script.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -sidebar_position: 75 ---- - -# Shell Script - -It is bothersome to write and maintain shell scripts to installing tools. -It is bothersome to update tools continuously. -It is difficult to support multiple platform and environment. - -aqua automates this process. - -## Blogs - -[2022-01-11 CIで利用するCLIツールをaquaで管理してみよう](https://zenn.dev/zoetro/articles/eee98d772c2483) diff --git a/docs/overview.md b/docs/overview.md index 0feef1eeb..121fc0674 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -71,8 +71,6 @@ To add supported tools, please see [here](tutorial-extras/add-registry.md). ## Why aqua? -Please see [Comparison](comparison/index.md) too. - - Change tool versions per project - Unlike Package Manager such as Homebrew, aqua supports changing tool version per project - Unify tool versions to prevent problems due to version difference @@ -88,8 +86,180 @@ Please see [Comparison](comparison/index.md) too. - You don't have to write similar shell scripts to install tools many times. You only have to manage tools declaratively with YAML and run `aqua i` - [Security](security.md) - aqua supports security features such as [Checksum Verification](tutorial-extras/checksum.md), [Policy as Code](tutorial-extras/policy-as-code.md), and [Cosign and SLSA Provenance Support](reference/cosign-slsa.md) +- Lower overhead than container + - You don't have to suffer from container specific issues - [Support private packages](tutorial-extras/private-package.md) +### Strict Version Control + +The difference of tool version often causes troubles. +In the team development, if developers use different tool versions each others, you would suffer from troubles due to the version difference. +And if the tool version in your laptop is different from the tool version in CI, you would suffer from the same trouble. + +![image](https://user-images.githubusercontent.com/13323303/221387356-95d9d9fd-6c19-4015-830c-63d86a4a38e0.png) + +And if multiple projects require the different tool versions, you have to switch the tool version per project somehow. + +Package managers such as Homebrew and apt don't support switching tool versions. + +aqua forces to pin tool versions and supports switching tool versions per project. +You can upgrade a tool temporaroly and rollback the upgrade easily only by editing `aqua.yaml`. + +Of course, aqua supports Monorepo which uses different tool versions per service as well. + +#### Installing `latest` version in CI is danger + +If you install a tool in CI, the tool should be version controled to avoid troubles. +Installing `latest` version is useful but danger because the `latest` version is changed suddenly and unexpected trouble may occur. +Your CI would be broken suddenly though you don't change any code. +Many GitHub Actions install `latest` version by default. + +aqua forces to pin tool versions and doesn't allow to install `latest` version. + +### Easy to install tools for your projects + +You can list up tools and their versions for your project in `aqua.yaml`. +Developers can install tools easily only by running `aqua i [-l]`. +You don't have to write the document about which tools are required and how to install them. + +### 👋 Good bye shell script + +You may install tools by shell scripts. + +e.g. + +```sh +#!/usr/bin/env bash + +set -eu + +tempdir=$(mktemp -d) +cd "$tempdir" +curl -Lq -O https://github.com/suzuki-shunsuke/tfcmt/releases/download/v4.2.0/tfcmt_darwin_amd64.tar.gz +tar xvzf tfcmt_darwin_amd64.tar.gz +chmod a+x tfcmt +sudo mv tfcmt /usr/local/bin +rm -R "$tempdir" +``` + +Shell scripts have some issues. + +- You have to maintain scripts per tool +- You have to update the tool version somehow + - In many cases, the tool isn't updated and the old version is used for a long time +- The script isn't portable + - The above script supports only darwin/amd64 +- The script doesn't verify the checksum + - If you verify the checksum in shell script, you have to update the checksum along with the version. It's bothersome + +Using aqua, you don't have to maintain shell scripts anymore. +aqua supports updating tools by Renovate and checksum verification. aqua works on cross platform. +aqua supports updating not only versions but also checksums automatically. + +### Continuous update by Renovate + +If tools are version controlled, they should be updated continuously. +Otherwise, they would become old soon, which causes several issues. + +aqua provides [Renovate Config Preset](https://github.com/aquaproj/aqua-renovate-config) for continous update by Renovate. +Using this preset, you can easily update tools by Renovate. + +[ref. Update packages by Renovate](/docs/tutorial-extras/renovate) + +### 🛡️ Security + +You should verify the checksum of the tool before installing the tool. +Otherwise, the tool may be tampered and the malicious code may be executed. + +Unfortunately, many shell scripts, asdf plugins, and GitHub Actions don't verify the checksum. + +On the other hand, aqua supports the checksum verification. + +[ref. Security](security.md) + +### Easy to use + +If you use tools by yourself, you can use any tools you like freely even if the tool is difficult and the learning cost is high. +But when you introduce a tool to your team and organization, it is important that the tool is easy to use. + +Even if you have a high motivation to learn them, other members don't necessarily have the motivation. +They have to focus on their own tasks and don't have a time to learn new tools. +Then you wouldn't be able to introduce the tool to your team well and even if you introduce it some of other members wouldn't use it. + +Compared with alternatives such as `asdf` and `tea`, aqua is much easy to use. +Other members have to do only the following things. + +1. [Install aqua in their laptops once](/docs/reference/install) +1. Run `aqua i -l` + +aqua provides various features, but other members can use aqua without learning them. + +### Easy to support new tools + +aqua has [a central Registry (Standard Registry)](https://github.com/aquaproj/aqua-registry) and you can add new tools to the Registry. +You don't have to maintain plugins or something by yourself. You only have to create an issue or pull request. +To send a pull request you have to write Registry Configuration, but aqua provides [a tool](https://github.com/aquaproj/registry-tool) to scaffold Registry Configuration and create a pull request, so you can send a pull request easily. +Registry Configuration is a declarative YAML files, so you don't have to write shell scripts or something. +Declarative YAML files are much easier to maintain than scripts. + +[Many contributors has already contributed to Standard Registry](https://github.com/aquaproj/aqua-registry/graphs/contributors). +Your contribution is welcome! + +## Use aqua along with alternatives + +aqua is awesome, but aqua can't support some tools due to aqua's architecture. +So we recommend using aqua mainly and use alternatives to install tools aqua can't install. +For example, @suzuki-shunsuke (aqua's author) uses aqua mainly and uses Homebrew to install tools aqua can't install. + +## Comparison + +:::caution +We are not necessarily familiar with compared tools. +So maybe the description about them is wrong. +Your contribution is welcome. +::: + +### Compared with Homebrew + +- :thumbsup: Strict Version Control +- :thumbsup: Windows Support + +You can use Homebrew to install tools aqua can't install. + +### Compared with asdf + +- :thumbsup: Easy to use +- :thumbsup: [Lazy Install](https://aquaproj.github.io/docs/tutorial-basics/lazy-install/) +- :thumbsup: You don't have to install plugins in advance +- :thumbsup: Continuous update by Renovate +- :thumbsup: [Security](security.md) ([Checksum Verification](/docs/tutorial-extras/checksum/)) +- :thumbsup: aqua doesn't force to manage a tool by aqua in a project even if aqua is used to manage the tool in the other project +- :thumbsup: aqua Registry is much easier to maintain than asdf plugins +- :thumbsup: Small things + - :thumbsup: [Share aqua configuration for teams and organizations with AQUA_GLOBAL_CONFIG](/docs/tutorial-extras/team-config) + * :thumbsup: [Split the list of packages](/docs/tutorial-extras/split-config) + +#### aqua doesn't force to manage a tool by aqua in a project even if aqua is used to manage the tool in the other project + +For example, you can't use both asdf and nvm to manage Node.js in the same laptop. +If you develop a project A using asdf to manage Node.js in your laptop, you can't develop a project B using nvm in the same laptop. + +On the other hand, aqua can be used along with alternatives in the same laptop. + +Please see [Use aqua combined with other version manager such as asdf](/docs/tutorial-extras/use-aqua-with-other-tools). + +#### Use aqua along with asdf + +asdf supports language runtimes such as Node.js, Python, Ruby, and so on, though aqua can't support them. +You can use asdf for them and can use aqua for other tools. + +### Compared with GitHub Actions + +- :thumbsup: Strict Version Control +- :thumbsup: Unify how to install tools in both local development and CI +- :thumbsup: Continuous update by Renovate +- :thumbsup: [Security](security.md) ([Checksum Verification](/docs/tutorial-extras/checksum/)) + ## SNS We share news about aqua using a Twitter Account [@aquaclivm](https://twitter.com/aquaclivm). @@ -101,8 +271,3 @@ So when you tweet about aqua, please mention @aquaclivm or use the hash tag [#aq We'll really appreciate if you become a sponsor of this project! https://github.com/sponsors/aquaproj - -## See Also - -* [Comparison](/docs/comparison) -* [Quick Start](/docs/tutorial-basics/quick-start) diff --git a/docs/tutorial-extras/private-package.md b/docs/tutorial-extras/private-package.md index 1a9b6b8eb..e4e4822b5 100644 --- a/docs/tutorial-extras/private-package.md +++ b/docs/tutorial-extras/private-package.md @@ -4,11 +4,7 @@ sidebar_position: 400 # Install private packages -Of course, [Standard Registry](https://github.com/aquaproj/aqua-registry) doesn't include private packages. -`private packages` are tools hosted in private GitHub Repositories. +Of course, [Standard Registry](https://github.com/aquaproj/aqua-registry) doesn't include private packages, which are hosted in private GitHub Repositories. +But you can install private packages by creating your own `local` Registry or `github_content` Registry. -To install private packages, you have to write Registry Configuration by yourself. - -The environment variable `GITHUB_TOKEN` or `AQUA_GITHUB_TOKEN` is required. - -About how to write Registry Configuration, please see [Add Packages to Registry](add-registry.md). +About how to create a Registry, please see [Use local Registry](add-registry.md#use-local-registry) and [Create a GitHub Repository for Registry](add-registry.md#create-a-github-repository-for-registry). diff --git a/docusaurus.config.js b/docusaurus.config.js index 831c6f6be..c4ddf4ffb 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -76,12 +76,6 @@ const config = { position: 'left', label: 'Install', }, - { - type: 'doc', - docId: 'comparison/index', - position: 'left', - label: 'Comparison', - }, { type: 'doc', docId: 'slide-blog', @@ -130,10 +124,6 @@ const config = { label: 'Overview', to: '/docs/overview', }, - { - label: 'Comparison', - to: '/docs/comparison', - }, { to: '/docs/tutorial-basics/quick-start', label: 'Tutorial',