From b89685e7740c2812a48bfef4c47011c077374c70 Mon Sep 17 00:00:00 2001 From: Leif Andersen Date: Thu, 18 Jul 2024 11:24:22 -0400 Subject: [PATCH] Add a table comparing alternatives. --- src/css/main.css | 9 +++++++++ src/faq.md | 51 ++++++++++++++++-------------------------------- 2 files changed, 26 insertions(+), 34 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index acd180a..e941782 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -258,3 +258,12 @@ p > a > img { .v-spacing--xl { padding-bottom: var(--space-xl); } + +.compare-table table { + border: 2px solid gray; +} + +.compare-table th { + padding-left: var(--space-sm); + padding-right: var(--space-sm); +} \ No newline at end of file diff --git a/src/faq.md b/src/faq.md index 8284582..6e7c832 100644 --- a/src/faq.md +++ b/src/faq.md @@ -180,53 +180,36 @@ Broadly: warpforge has an emphasis on: - No strong opinions about what language you use to template computation instructions. - (... and at the end of the day, some elusive, magical UX. Something that hasn't been hit yet, in any other project, evidentally — because nothing's taken the world by storm yet — and a successful project in this space *should*, because of how useful it would be.) -We don't believe any other projects have hit all of these at once. +We don't believe any other projects have hit all of these at once. See this table comparing Warpforge to projects: -#### ... Nix? + -❌ ✅ ✅ 😕 😕 😕 ❌ ❌ +| |Warpforge|Nix
Guix|Apt
Dnf
Pacman|Bazel|Runc
Docker
Podman|AppImage +|:-----------------------------|:-------:|:---------:|:------------------:|:---:|:----------------------:|:------: +|Content Addressable | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ +|Hermeticism | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ +|API Driven Composability | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ +|Decentralized Catalog | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ +|Locally Scoped Workspace | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ +|Seperate Packaging/Computation| ✅ | ✅ | ❌ | ✅ | ❌ | ❌ +|Unopinionated | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ +|Magically Nice UX | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ -#### ... Guix? +
-❌ ✅ ✅ 😕 😕 😕 ❌ ❌ - -#### ... Debian or other linux distros? - -❌ ❌ ❌ ❌ ❌ ❌ ❌ ✅ - -(Forgive us for lumping all of these together. But in general, historically, most linux distros haven't been focused on build environments, so... yeah, there's a lot of red x's here.) - -#### ... Bazel? - -❌ ✅ ❌ ❌ ❌ ✅ ❓ ❌ - -#### ... Runc (or other container systems)? - -We use them inside, actually. +Note that Warpforge actually uses containers internally. Warpforge is pretty much gluing content-addressable data input and output systems onto containers. (Literally, we template OCI spec files, at the end of the day, and then (usually) invoke `runc`. It's a good layering!) -Otherwise: - -❌ ❓ ✅ ❓ ❌ ❌ ✅ ✅ - -#### ...AppImage? - -AppImage is more about packaging than about building, so it's not really fitting in the checkmarks pattern above. But it can be compared to some parts of the [ecosystem](/ecosystem/), especially [Zapps](https://zapps.app). +Also note that AppImage is more about packaging than about building, so it's not really fitting in the checkmarks pattern above. But it can be compared to some parts of the [ecosystem](/ecosystem/), especially [Zapps](https://zapps.app). AppImage usually uses SquashFS mounts to bundle all the application's libraries. This makes things reasonably path-agnostic, which is good, and the same goal as the Warpsys ecosystem conventions. [Zapps](https://zapps.app) works without needing mounts. This is nice because it's less of an ask from the host system; and also because you have the ability to dedup libraries even with simple techniques like symlink farms (whereas AppImage's squashfs mounts would block such possibilities). -#### ... some {other thing}? - -Alright, look. - -Computing has been done before. Almost every problem has various possible solutions. Some choices in the details of how to do things matter; some don't; sometimes its hard to tell which is which until you've done it. We're here, doing this, because we think some combination of coordinates of the solution space hasn't been explored yet. - -If you think this isn't worth doing, because some $projectX has already done it, you're probably the sort of person who says "docker is just lxc", while entirely missing the point of why docker took the world by storm. To which we must say: have a nice day :) - +Finally, remember that computing has been done before. Almost every problem has various possible solutions. Some choices in the details of how to do things matter; some don't; sometimes its hard to tell which is which until you've done it. We're here, doing this, because we think some combination of coordinates of the solution space hasn't been explored yet. +If you think this isn't worth doing, because some other project has already done it, we think you're probably the sort of person who says "docker is just lxc", while entirely missing the point of why docker took the world by storm. We are building a system that, while not foundationaly new, is more usable then any existing system we are aware of. ## Does it support dynamic build graphs?