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");
}

@dennisdoomen dennisdoomen 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.

Just some minor questions and suggestions.

@@ -0,0 +1,72 @@
# ADR-0010 — Fallout collects no telemetry

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.

🤔 Those are quite verbose for my taste

- **Tests next to code, separate folder**: every `Foo` project under `src/` has a sibling `Foo.Tests` project under `tests/`. Mirror the namespace.
- **No IDE-specific style files committed.** `.editorconfig` and `*.DotSettings` were removed during the takeover — relying on `dotnet format` defaults and review.
- **Telemetry opt-out is set in test runs** (`FALLOUT_TELEMETRY_OPTOUT=true`). Keep it that way.
- **No telemetry.** Fallout collects no usage data ([ADR-0010](../adr/0010-no-telemetry-collection.md)). The inherited NUKE telemetry subsystem, its opt-out env var, and the `FalloutTelemetryVersion` property were removed — don't reintroduce any of them.

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.

🤔 Is this necessary? It's not that an AI Agent is gonna reintroduce it magically.

}

[Fact]
public void StripsTelemetryVersionProperty()

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.

⛏️(nitpick) Would be nice to start follow the new naming conventions, but that's up to you

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.

4 participants