Skip to content

docs(readme): say plainly whether OpenCompany phones home - #2154

Draft
graycyrus wants to merge 1 commit into
tinyhumansai:mainfrom
graycyrus:docs/readme-analytics-disclosure
Draft

docs(readme): say plainly whether OpenCompany phones home#2154
graycyrus wants to merge 1 commit into
tinyhumansai:mainfrom
graycyrus:docs/readme-analytics-disclosure

Conversation

@graycyrus

Copy link
Copy Markdown
Collaborator

Summary

README.md does not mention analytics anywhere today — the only occurrence of the word is an unrelated marketing-agency company template. docs/spec/runtime/analytics.md is thorough, but someone evaluating a GPL-3.0, self-hostable project should not have to read docs/spec/runtime/ to learn whether it phones home.

Adds one short section, "What it reports about itself", between Make it yours and Documentation. No code change; it describes behaviour already true on main.

What it claims, and where each claim was checked

Claim Verified against
A self-hosted or desktop install sends nothing, and the guarantee is stronger than a default because the transport is behind a cargo feature the shipped default build does not compile in Cargo.toml:456 (default = ["oauth", "platform-jwt", "documents", "tinymemory"]) and Cargo.toml:621 (analytics = ["dep:reqwest"]); Dockerfile:7 (ARG FEATURES=""); src-tauri/Cargo.toml names analytics nowhere; src/analytics/mixpanel.rs:31,39,51 gate the client on #[cfg(feature = "analytics")]
Hosted tenants report product usage, because the platform builds with the feature and injects a token TENANT_FEATURES in .github/workflows/deploy-staging.yml:110 ends …,analytics,crash-reporting; OPENCOMPANY_ANALYTICS_TOKEN in src/analytics/config.rs:16
Shape and outcome only — company count, storage backend, turn outcome, token and cost counts the three-event table in docs/spec/runtime/analytics.md
No company content, enforced by construction docs/spec/runtime/analytics.md:81-101, and PropValue in src/analytics/types.rs:48-57 — `Word(&'static str)
OPENCOMPANY_ANALYTICS=off turns it off and outranks everything ENABLE_ENV in src/analytics/config.rs:13 and the Silence reasons below it

The section deliberately does not give a number for the conditions that must hold, because docs/spec/runtime/analytics.md currently says "the four conditions in full" at line 16 while the numbered list under Configuration has five. Not fixed here to keep this PR to the README; worth a follow-up.

It also adds one sentence pointing at docs/spec/runtime/crash-reporting.md, so the section is not read as covering a channel it does not describe — crash reporting is off until an operator configures a DSN, and goes to the operator's own Sentry project rather than one this project runs.

Relationship to #1950

Independent of it. #1950 is the analytics instrumentation work and is currently far behind main; this describes behaviour that is already true on main today, so it is branched from main and stands on its own.

Commands run locally

  • bash scripts/ci/assert-md-line-cap.sh — ✓ every file 500 lines or fewer (README.md is now 231)
  • Confirmed both linked paths exist: docs/spec/runtime/analytics.md, docs/spec/runtime/crash-reporting.md

No Rust changed, so no cargo gate applies to this diff.

`README.md` did not mention analytics anywhere — the only occurrence of the
word was an unrelated company template. Someone evaluating a GPL-3.0,
self-hostable project should not have to read `docs/spec/runtime/` to answer
"does this send anything about me anywhere".

Adds a short section stating the four things that matter: a self-hosted or
desktop install sends nothing and cannot, because the transport is behind a
cargo feature the default build does not compile (`analytics = ["dep:reqwest"]`
is absent from `default` in `Cargo.toml`, `Dockerfile` ships `ARG FEATURES=""`,
and `src-tauri/Cargo.toml` names it nowhere); hosted tenants report shape and
outcome under an opaque id because the platform builds with the feature and
injects a token; no company content can ride along, because `PropValue` has no
`String` variant by construction; and `OPENCOMPANY_ANALYTICS=off` turns it off.
Points at the spec for the full list, and notes that crash reporting is a
separate, operator-configured channel to the operator's own Sentry project so
the section is not read as covering it.

Describes behaviour already on `main`; no code change.
@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Comment @coderabbitai help to get the list of available commands.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant