Skip to content

Remove telemetry entirely (ADR-0010)#538

Open
ChrisonSimtian wants to merge 3 commits into
Fallout-build:mainfrom
ChrisonSimtian:chore/remove-telemetry
Open

Remove telemetry entirely (ADR-0010)#538
ChrisonSimtian wants to merge 3 commits into
Fallout-build:mainfrom
ChrisonSimtian:chore/remove-telemetry

Conversation

@ChrisonSimtian

Copy link
Copy Markdown
Collaborator

Gets rid of the telemetry feature inherited from NUKE — for good. Adds ADR-0010 recording the decision that Fallout collects no telemetry, and removes the subsystem in full.

Background

Telemetry has been inert since the fork: the Application Insights endpoint was the original maintainer's (unusable), the client dependency was dropped (#79), and TrackEvent was a stub. It was kept dormant to "wire up a Fallout-owned backend later" — an intent with no owner, endpoint, or plan. This closes that off: no telemetry, no dormant scaffolding.

What's removed

  • The Telemetry subsystem + [Telemetry] build extension, and every call site (the FalloutBuild attribute, the config-generation hook, the setup / add-package / cake-convert CLI events).
  • FALLOUT_TELEMETRY_OPTOUT / NUKE_TELEMETRY_OPTOUT, FalloutTelemetryVersion / NukeTelemetryVersion (incl. the legacy lift + FALLOUT001 warning), the FalloutTelemetryDocsUrl constant, the test-run opt-out, and the telemetry docs page.
  • fallout migrate now strips NUKE's telemetry knobs instead of renaming them to dead Fallout* equivalents.

Compatibility — not a breaking change

The env var and MSBuild property only ever gated a no-op, and an unset/unknown one is silently ignored — no consumer build errors, no behaviour change (telemetry was already off). The .NET SDK's own DOTNET_CLI_TELEMETRY_OPTOUT is left in place.

Commits

  1. Remove the inherited NUKE telemetry subsystem
  2. Strip telemetry knobs on migration instead of renaming them
  3. Document the no-telemetry decision (ADR-0010)

Testing

dotnet build fallout.slnx clean. Specs green: Migrate 32, Build 147, CLI 47, Common 131 (+7 unrelated skips).

🤖 Generated with Claude Code

ChrisonSimtian and others added 3 commits July 24, 2026 14:57
The telemetry feature carried over from NUKE has been inert since the fork:
its Application Insights endpoint was the original maintainer's and can't be
reused, the client dependency was dropped (Fallout-build#79), and TrackEvent was a stub.
It was kept dormant on the intent of wiring up a Fallout-owned backend later —
an intent with no owner, endpoint, or plan. Per ADR-0010, Fallout collects no
telemetry, so the subsystem is removed rather than left as a dormant liability.

Removes the Telemetry classes and the [Telemetry] build extension, every call
site (the FalloutBuild attribute, the config-generation hook, and the setup /
add-package / cake-convert CLI events), the FALLOUT_TELEMETRY_OPTOUT /
NUKE_TELEMETRY_OPTOUT env vars, the FalloutTelemetryVersion / NukeTelemetryVersion
MSBuild property (including its legacy lift and FALLOUT001 warning), the
FalloutTelemetryDocsUrl constant, and the test-run opt-out plumbing.

Not a breaking change: the env var and property only ever gated a no-op, and an
unset/unknown one is silently ignored. The .NET SDK's own DOTNET_CLI_TELEMETRY_OPTOUT
is left in place.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The migrate tool rewrote NUKE's telemetry knobs to Fallout-branded equivalents:
NukeTelemetryVersion → FalloutTelemetryVersion and NUKE_TELEMETRY_OPTOUT →
FALLOUT_TELEMETRY_OPTOUT. With telemetry removed (ADR-0010) those targets no
longer exist, so renaming would plant dead, telemetry-branded cruft in every
migrated project.

Drop the rename rules and strip the knobs instead: RewriteCsprojsStep removes the
<(Nuke|Fallout)TelemetryVersion> element line, ScriptRewriter removes any
(NUKE|FALLOUT)_TELEMETRY_OPTOUT assignment line (bash/pwsh/cmd spellings).
Specs updated to assert the knobs are gone rather than renamed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Records the decision that Fallout collects no telemetry — reversing the prior
"kept dormant, wire up a Fallout endpoint later" stance — and its rationale,
non-breaking impact, and the alternatives (keep dormant / opt-in / local-only)
that were rejected. Adds a "No telemetry" convention, drops the now-removed
Microsoft.ApplicationInsights row from the dependency overview, updates the
from-nuke migration guide to show the telemetry knobs are stripped, and rewords
the build-events example that used telemetry as its illustration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisonSimtian ChrisonSimtian added enhancement New feature or request target/vCurrent Targets the current version labels Jul 24, 2026
@ChrisonSimtian ChrisonSimtian added breaking-change Change is breaking — requires major version bump per CLAUDE.md semver policy. and removed breaking-change Change is breaking — requires major version bump per CLAUDE.md semver policy. labels Jul 24, 2026
@ChrisonSimtian

Copy link
Copy Markdown
Collaborator Author

I think this should go into the release. I dont like people spying on me and the Apps Insights instance is likely dead.
There are imo better ways of finding out what people want/need than doing telemetrics in a CI :-)

@ChrisonSimtian ChrisonSimtian self-assigned this Jul 24, 2026

@ITaluone ITaluone left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah.. another cool selling point :D

@ChrisonSimtian
ChrisonSimtian marked this pull request as ready for review July 25, 2026 01:14
@ChrisonSimtian
ChrisonSimtian requested a review from a team as a code owner July 25, 2026 01:14
@ChrisonSimtian
ChrisonSimtian requested a review from Copilot July 25, 2026 01:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Removes the inherited (and long-inert) telemetry subsystem from Fallout end-to-end, updates migration tooling to strip legacy telemetry knobs rather than renaming them, and records the “no telemetry” policy as ADR-0010.

Changes:

  • Delete the Telemetry subsystem + build/CLI hooks, and remove all related knobs (*_TELEMETRY_OPTOUT, *TelemetryVersion, telemetry docs URL plumbing).
  • Update fallout migrate rewrites to strip telemetry env-var/property lines instead of rewriting them to Fallout equivalents.
  • Add ADR-0010 and update docs/conventions to codify “Fallout collects no telemetry”.

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/Fallout.Migrate.Specs/ScriptRewriterSpecs.cs Updates/extends specs for script rewrites; adds telemetry opt-out stripping assertion.
tests/Fallout.Migrate.Specs/RewriteCsprojsStepSpecs.cs Updates specs to expect telemetry version property removal instead of renaming.
tests/Fallout.Migrate.Specs/MigrationIntegrationSpecs.cs Integration spec now asserts migrated scripts do not contain telemetry opt-out knobs.
tests/Fallout.Build.Specs/ExecutionSpecsInitializer.cs Removes test-run initializer that set the telemetry opt-out env var.
src/Fallout.Migrate/Steps/ScriptRewriter.cs Strips telemetry opt-out lines during script migration; removes legacy rename.
src/Fallout.Migrate/Steps/RewriteCsprojsStep.cs Strips Nuke/FalloutTelemetryVersion MSBuild property during csproj migration.
src/Fallout.Common/Fallout.Common.targets Removes legacy MSBuild property bridging for telemetry version.
src/Fallout.Cli/templates/_build.csproj Removes telemetry version placeholder/property from template project.
src/Fallout.Cli/Commands/SetupCommand.cs Removes telemetry setup + template parameter injection.
src/Fallout.Cli/Commands/RunCommand.cs Stops setting FALLOUT_TELEMETRY_OPTOUT when launching dotnet.
src/Fallout.Cli/Commands/CakeConvertCommand.cs Removes telemetry event emission.
src/Fallout.Cli/Commands/AddPackageCommand.cs Removes telemetry event emission.
src/Fallout.Build/Telemetry/Telemetry.Properties.cs Deletes telemetry property collection implementation.
src/Fallout.Build/Telemetry/Telemetry.Events.cs Deletes telemetry event APIs (BuildStarted/TargetSucceeded/etc.).
src/Fallout.Build/Telemetry/Telemetry.cs Deletes disclosure/consent/opt-out/version plumbing and awareness cookie logic.
src/Fallout.Build/FalloutBuild.cs Removes [Telemetry] build extension attribute usage.
src/Fallout.Build/Execution/Extensions/TelemetryAttribute.cs Deletes build extension that emitted telemetry events.
src/Fallout.Build/CICD/InvokeBuildServerConfigurationGenerationAttribute.cs Removes telemetry emission on configuration generation.
src/Fallout.Build.Shared/Constants.cs Removes telemetry docs URL constant.
docs/migration/from-nuke.md Updates migration docs to reflect telemetry knobs are dropped/stripped.
docs/dependencies.md Removes telemetry/dead ApplicationInsights dependency documentation section.
docs/agents/conventions.md Updates repo conventions to explicitly forbid telemetry reintroduction.
docs/adr/README.md Adds ADR-0010 to ADR index.
docs/adr/0010-no-telemetry-collection.md New ADR documenting the no-telemetry decision and consequences.
docs/02-fundamentals/04-builds.md Removes telemetry reference from “cross-cutting concerns” examples.
docs/01-getting-started/07-telemetry.md Removes the telemetry documentation page.
build/Build.cs Removes test-time telemetry opt-out env var injection.
build/_build.csproj Removes FalloutTelemetryVersion property from build project.
build.sh Removes FALLOUT_TELEMETRY_OPTOUT export.
build.ps1 Removes FALLOUT_TELEMETRY_OPTOUT environment variable assignment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +38 to +55
[Fact]
public void StripsTelemetryOptOutLineEntirely()
{
// Telemetry was removed from Fallout (ADR-0010) — the opt-out is dropped, not renamed
// to a dead FALLOUT_TELEMETRY_OPTOUT. The surrounding lines are untouched.
const string input = """
export DOTNET_ROLL_FORWARD="Major"
export NUKE_TELEMETRY_OPTOUT=1
dotnet nuke "$@"
""";

var result = ScriptRewriter.Rewrite(input);

result.Content.Should().NotContain("TELEMETRY_OPTOUT");
result.Content.Should().Contain("DOTNET_ROLL_FORWARD");
result.Content.Should().Contain("dotnet fallout");
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request target/vCurrent Targets the current version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants