Skip to content

[P5] Decide bridge strategy for existing NUKE consumers #35

Description

@ChrisonSimtian

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

  • Decision documented here
  • Implementation issue(s) opened for the chosen approach
  • Migration timeline drafted (when does `Nuke.*` support sunset?)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions