Declarative feedback loop manager
Go to file
2022-03-06 13:30:51 +01:00
feedback first draft of test command 2022-03-06 13:28:54 +01:00
nix Debouncing and filtering of events 2022-03-05 17:03:53 +01:00
.envrc use nix-shell for faster feedback loop 2022-03-06 12:48:52 +01:00
.gitignore Initial commit 2022-03-05 15:12:28 +01:00
.hlint.yaml Configurable loops 2022-03-06 12:02:43 +01:00
ci.nix Initial commit 2022-03-05 15:12:28 +01:00
default.nix Initial commit 2022-03-05 15:12:28 +01:00
feedback.yaml first draft of test command 2022-03-06 13:28:54 +01:00
README.md readme about the CI integration 2022-03-06 13:30:51 +01:00
shell.nix Initial commit 2022-03-05 15:12:28 +01:00
stack.yaml tore out the tui 2022-03-05 23:12:35 +01:00

Feedback loop

A general purpose tool to set up good feedback loops and share them with your team.

Features

Run feedback loops

Use the feedback command to set up a feedback loop for your work.

For example, if you are working on a nix build, you might use this feedback loop:

feedback -- nix-build --no-out-link

Declarative feedback loops

You can declare feedback loops in the feedback.yaml configuration file to share them with your team. For example, this gives you a ci.nix-based feedback loop:

loops:
  ci: nix-build ci.nix --no-out-link

Then you can just run this command, and not have to remember the full incantation:

feedback ci

To see the full reference of options of the configuration file, run feedback --help.

CI Integration

When sharing feedback loops with team members, it is important that no one breaks another's workflow. You can use feedback-test to test out the feedback loops in a one-shot manner, so you can check that they still work on CI. See feedback-test --help for more details.

Comparison with other tools

feedback steeloverseer watchexec entr
Indication of command starting ✔️ ✔️ C C
Indication of time ✔️ C C C
Clear screen between feedback ✔️ C C ✔️
Gitignore-aware 🚧 ✖️ ✔️
Named feedback loops ✔️ ✖️
Configurable feedback loops ✔️ ✔️
Cancelling previous runs that aren't done yet ✔️ ✔️ ✔️
Long-form flags for every option ✔️ ✔️ ✔️
CI integration ✔️ C C C
  • ✔️: Supported
  • C: Possible but you have to write some code yourself
  • 🚧 — Under development
  • ✖️: Not supported
  • ?: I don't know.

Someday/maybe ideas

  • I want to have a good idea of the current state of things:
    • Is it blocking on CPU, on memory, on network?
  • Manually activate a run
  • Manually cancel and re-activate a run
  • Low latency between change and rerun.
  • Cancelling failed feedback loops from before.
  • Ideally pipes still work in the loop, so we can do feedback "nix-build | cachix push mycache".