TASEmulators / TASEmulators/BizHawk

Telemetry

Open
#2,235 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Meta Open to design proposals only Question/Support Request: Feature/Enhancement
Dominant language
C#
Stars
2.8k
Forks
468
PR merge metrics
No merged PRs in 30d

Description

Reminded about this by natt and feos joking about crash reports in IRC. I'd briefly discussed it with adelikat a while back and came across [1], which looks promising technically but might not be suitable functionally.

Here are all the unanswered questions of telemetry in EmuHawk:

  • Should crash reports be collected, or hardware/OS specs, or app usage, or everything?
    • The first is generally useful. The other two may be helpful with diagnosing certain problems (#1820), and with choosing to change/drop features, respectively. --yoshi
  • How should users opt-in?
    • We don't currently do much (visibly) on first run. I don't think a telemetry opt-in dialog would be much of a burden, and they've become ubiquitous. The profiles config is now our onboarding flow. We could rename and expand it to let users opt into telemetry / third-party services. --yoshi
    • I've had a brief look at Discord, and I don't like the way it's loaded at runtime. That gave me the idea of having a separate executable without telemetry (easier with .NET 5+). --yoshi
    • See how CPP did RetroAchivevements integration. --yoshi
  • Where will data be sent?
    • tasvideos.org seems the obvious choice. Using [1] would have Microsoft do all the work, including collection. --yoshi
  • Are we in practice able to anonymise telemetry data e.g. file paths?
    • leaving this here: Stacktraces are localised in at least one configuration (net48 on Win10), so collecting the "language" datapoint may be unavoidable. IMO we should be collecting system language(s) anyway. natt at some point mentioned disabling localised stacktraces. --yoshi
    • <PathMap/> doesn't really help with this as it only applies at build-time (and only for Release builds, though if you're building from source in Debug I'm guessing you won't mind being deanonymised if it helps fix bugs).
  • How much of the dataset will be public?
  • Should users be able to de-anonymise themselves?
    • (by providing a token associated with their TASVideos account, for example)
  • Will EmuHawk 2.x (i.e. the first version w/ telemetry) be able to call home in 5 years' time? Should it try?

links

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No implementation file or test is named. Start by reading the linked Application Insights article and the RetroAchievements.cs integration referenced in the issue, then resolve the open questions around collection scope, opt-in, destination, anonymisation, and retention; done requires an agreed telemetry design before implementation can be scoped.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
desktop-dev, observability
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.