Question
How do existing NUKE users — those with build scripts containing `using Nuke.Common; class Build : NukeBuild` — migrate to Fallout?
Constraint
We don't own the `Nuke.*` package IDs on nuget.org. Matt does. So we cannot publish typeforwarding shims under `Nuke.Common` on nuget.org. We could ship them on GitHub Packages but users would need to opt into our feed.
Options
A. Roslyn codefix in Fallout.Common
Ship an analyzer that detects `using Nuke.*` and offers a one-click rewrite. Lowest user effort post-install. Doesn't help users who haven't installed Fallout yet (chicken-and-egg).
B. Standalone migration CLI tool
`dotnet tool install -g Fallout.Migrate` → run in repo → rewrites `using` directives, replaces PackageReferences, suggests bootstrap script updates. Heavier lift to build but works end-to-end.
C. Manual migration guide
Step-by-step doc, optionally with sed/PowerShell scripts users can copy. Zero tooling work, highest user effort.
D. Type-forwarding shim packages
Ship `Fallout.Compat.Nuke.Common` package that re-exports `Fallout.Common` types under the `Nuke.Common` namespace via `[TypeForwardedTo]`. Users PackageReference this single bridge and old `using` directives keep working. Trade-off: keeps the NUKE namespace alive forever.
E. Hybrid (recommended)
- A (codefix) for the simple cases
- C (manual guide) for documentation
- B (CLI tool) deferred until demand justifies it
- D explicitly avoided — we want the namespace transition clean
Done when
Question
How do existing NUKE users — those with build scripts containing `using Nuke.Common; class Build : NukeBuild` — migrate to Fallout?
Constraint
We don't own the `Nuke.*` package IDs on nuget.org. Matt does. So we cannot publish typeforwarding shims under `Nuke.Common` on nuget.org. We could ship them on GitHub Packages but users would need to opt into our feed.
Options
A. Roslyn codefix in Fallout.Common
Ship an analyzer that detects `using Nuke.*` and offers a one-click rewrite. Lowest user effort post-install. Doesn't help users who haven't installed Fallout yet (chicken-and-egg).
B. Standalone migration CLI tool
`dotnet tool install -g Fallout.Migrate` → run in repo → rewrites `using` directives, replaces PackageReferences, suggests bootstrap script updates. Heavier lift to build but works end-to-end.
C. Manual migration guide
Step-by-step doc, optionally with sed/PowerShell scripts users can copy. Zero tooling work, highest user effort.
D. Type-forwarding shim packages
Ship `Fallout.Compat.Nuke.Common` package that re-exports `Fallout.Common` types under the `Nuke.Common` namespace via `[TypeForwardedTo]`. Users PackageReference this single bridge and old `using` directives keep working. Trade-off: keeps the NUKE namespace alive forever.
E. Hybrid (recommended)
Done when