Background
The repo uses a `Makefile` for testing, linting, code generation, and builds. Targets are flat (`test`, `lint`, `generate`, `build`, etc.). For a project of this size — with unit tests, envtest, race, coverage, and multiple build artifacts (binary + chart + image) — a Taskfile.yml would offer a few ergonomics that Make doesn't:
- Namespaced commands: `task test:unit`, `task test:envtest`, `task test:race`, `task test:coverage` instead of a single `make test` that runs everything.
- Built-in dependency graph + caching: re-running `task generate` is a no-op when sources haven't changed (Make handles this too, but with file-stamp footguns).
- Self-documentation: `task --list` produces a clean per-task help table from the YAML `desc:` fields.
- YAML over Make's tab/whitespace quirks — fewer footguns for contributors who don't write Make every day.
Why this isn't urgent
- The current `Makefile` works. `make test` runs the right thing in CI; no developer-facing blockers.
- Switching mid-stream creates dual-source-of-truth risk during the transition (CI uses one, devs use the other).
- Task is an extra developer dependency to install (`brew install go-task` or similar) — not a one-line standard tool like `make`.
Proposed evaluation
Before committing to a switch:
- Survey what teams using cloudflare-operator's dev workflow actually run day-to-day. If `make test` and `make lint` cover 90%+ of invocations, the Taskfile gain is marginal.
- If we want namespacing without leaving Make, `make test-unit` / `make test-envtest` / `make test-race` as additional Make targets gets us most of the benefit at zero new dependency cost.
- If we adopt Taskfile, the migration plan should be:
- Land Taskfile.yml alongside the existing Makefile.
- Update CI to call Task (single source of truth going forward).
- Mark the Makefile as deprecated in the README.
- Delete the Makefile after one release cycle of dual-running.
Decision needed
Adopt Taskfile, extend the Makefile with namespaced targets, or stay as-is. Defer until someone's actually felt the friction.
Surfaced by
Routine question during issue #145's fix branch finalization.
Background
The repo uses a `Makefile` for testing, linting, code generation, and builds. Targets are flat (`test`, `lint`, `generate`, `build`, etc.). For a project of this size — with unit tests, envtest, race, coverage, and multiple build artifacts (binary + chart + image) — a Taskfile.yml would offer a few ergonomics that Make doesn't:
Why this isn't urgent
Proposed evaluation
Before committing to a switch:
Decision needed
Adopt Taskfile, extend the Makefile with namespaced targets, or stay as-is. Defer until someone's actually felt the friction.
Surfaced by
Routine question during issue #145's fix branch finalization.