Skip to content

Commit 26336a7

Browse files
committed
docs: also compare standard to other tools
1 parent 0baf33a commit 26336a7

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

COMPARE.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Comparing Standard to X
2+
3+
_Where appropriate, we compare with `divnix/paisano`, instead_.
4+
5+
## Comparison with tools in the Nix ecosystem
6+
7+
### flake-utils
8+
9+
`numtide/flake-utils` is a small & lightweight utility with a focus on generating flake file _outputs_ in accordance with the packaging use case built-in into the Nix CLI tooling.
10+
11+
Paisano, in turn, is an importer with a focus on _code organization_; it still plugs well into a `flake.nix` file, but also preserves its index function by keeping it clean.
12+
While you _can_ use it to match the schema that Nix CLI expects, it also enables more flexibility as it is not specially optimized for the Nix _package manager use case_.
13+
14+
### flake-parts
15+
16+
`hercules-ci/flake-parts` is a component aggregator with a focus on a flake schema that is built-in into the Nix CLI tooling that makes use of the NixOS module system for composability and aggregation.
17+
18+
Paisano, in turn, is an importer with a focus on _code organization_; it still plugs well into a `flake.nix` file, but also preserves its index function by keeping it clean.
19+
While you _can_ use it to match the schema that Nix CLI expects, it also enables more flexibility as it is not specially optimized for the Nix _package manager use case_.
20+
21+
To a lesser extent, Paisano is also a component aggregator for your flake outputs.
22+
However, in that role, it gives you back the freedom to use the output schema that best fits your problem domain.
23+
24+
Convergence towards the Flakes output schema is provided via the harvester family of functions (`winnow`, `harvest` & `pick`).
25+
Depending on the domain schema, it can be a _lossy_ convergence due the lesser expressivity of the flake output schema.
26+
27+
Flake Parts aggregates bespoke use-case specific interfaces implemented in the module system DSL.
28+
Paisano, in turn, focuses on code organization along high level code boundaries connected by generic interfaces.
29+
30+
The core tenet of Flake Parts is bespoke module system DSL interfaces for each use case.
31+
32+
The core tenet of Paisano remains Nix' original functional style.
33+
34+
### Devshell
35+
36+
Standard wraps `numtide/devshell` to improve the developer experience in the early parts of the SDLC via reproducible development shells.
37+
38+
## Comparison with other tools & frameworks
39+
40+
### My language build tool
41+
42+
Nix wraps language level tooling into a sandbox and cross-language build graph to ensure reproducibility.
43+
Most languages are already covered.
44+
45+
### Bazel
46+
47+
Bazel is similar to Nix in that it creates cross-language build graphs.
48+
However, it doesn't not guarantee reproducibility.
49+
Currently it has more advanced build caching strategies: a gap that the Nix community is very eager to close soon.
50+
51+
### My CI/CD
52+
53+
Any CI can leverage Paisano's Registry to discover work.
54+
Implementations can either be native to the CI or provided via CI-specific wrappers, a strategy chosen for example by our reference implementation for GitHub Actions.

docs/COMPARE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../COMPARE.md

docs/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
[Introduction](README.md)
44
[Design & Architecture](./ARCHITECTURE.md)
55
[Sales Pitch](./PITCH.md)
6+
[Comparisions](./COMPARE.md)
67
[Roadmap](./ROADMAP.md)
78

89
# Tutorials

0 commit comments

Comments
 (0)