{"action":"created","issue":{"url":"https://api.github.com/repos/JACoders/OpenJK/issues/716","labels_url":"https://api.github.com/repos/JACoders/OpenJK/issues/716/labels{/name}","comments_url":"https://api.github.com/repos/JACoders/OpenJK/issues/716/comments","events_url":"https://api.github.com/repos/JACoders/OpenJK/issues/716/events","html_url":"https://github.com/JACoders/OpenJK/pull/716","id":105055618,"number":716,"title":"Offer opt-out for user tracking functionality (ja_guid)","user":{"login":"dionrhys","id":844245,"avatar_url":"https://avatars.githubusercontent.com/u/844245?v=3","gravatar_id":"","url":"https://api.github.com/users/dionrhys","html_url":"https://github.com/dionrhys","followers_url":"https://api.github.com/users/dionrhys/followers","following_url":"https://api.github.com/users/dionrhys/following{/other_user}","gists_url":"https://api.github.com/users/dionrhys/gists{/gist_id}","starred_url":"https://api.github.com/users/dionrhys/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dionrhys/subscriptions","organizations_url":"https://api.github.com/users/dionrhys/orgs","repos_url":"https://api.github.com/users/dionrhys/repos","events_url":"https://api.github.com/users/dionrhys/events{/privacy}","received_events_url":"https://api.github.com/users/dionrhys/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-09-05T23:19:08Z","updated_at":"2015-09-06T19:38:45Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/JACoders/OpenJK/pulls/716","html_url":"https://github.com/JACoders/OpenJK/pull/716","diff_url":"https://github.com/JACoders/OpenJK/pull/716.diff","patch_url":"https://github.com/JACoders/OpenJK/pull/716.patch"},"body":"### What does this PR address?\r\nSince fd47854, OpenJK sends along a unique ID (`ja_guid`) as part of userinfo to servers, which identifies a player across game sessions and system restarts. It does this by generating a random 2KiB key file (`jakey`) on first run, then sending a hash of that file and the server address when connecting to a server. This is equivalent to [tracking cookies](https://en.wikipedia.org/wiki/HTTP_cookie#Tracking) on the World Wide Web.\r\n\r\nThe `ja_guid` tracking can be useful to server owners as they can log and analyse player behaviour over many sessions, even if the player changes their name while playing or before connecting. It can also provide a weak form of correlation to mod authors for logging per-player info such as K/D ratios and combat stats without having to write an accounts system into the mod. _(Please don't implement an admin system using `ja_guid` as the authentication method though)_\r\n\r\n### What does this PR do?\r\nThis pull request offers players and hosts the choice to opt-out of the default tracking enabled in OpenJK, so that they will not be tracked across game sessions unless they choose to. Players can already identify themselves using their in-game names, and the `ja_guid` method doesn't provide any confidence of authenticity regardless.\r\n\r\nThe new cvar `com_enableTracking` is used to toggle tracking functionality. As it's a cvar, players can change the tracking setting at runtime or on the command line. The code comes with tracking enabled by default, as is currently the behaviour in OpenJK. Only the client-side has tracking functionality currently, but it's a `com_` (common) cvar in case OpenJK introduces similar tracking on the server-side too in the future.\r\n\r\n#### Remarks\r\nFor some third-party package distributions, it may be desirable to have a compile-time define for setting whether tracking should be enabled/disabled by default (or not even compiled into the binary at all). I can look into that if it's needed.\r\n\r\n_`jakey` files that have already been generated will be left alone._\r\n\r\n***\r\n\r\nWhat are your thoughts? :ear:"},"comment":{"url":"https://api.github.com/repos/JACoders/OpenJK/issues/comments/138117839","html_url":"https://github.com/JACoders/OpenJK/pull/716#issuecomment-138117839","issue_url":"https://api.github.com/repos/JACoders/OpenJK/issues/716","id":138117839,"user":{"login":"ensiform","id":997399,"avatar_url":"https://avatars.githubusercontent.com/u/997399?v=3","gravatar_id":"","url":"https://api.github.com/users/ensiform","html_url":"https://github.com/ensiform","followers_url":"https://api.github.com/users/ensiform/followers","following_url":"https://api.github.com/users/ensiform/following{/other_user}","gists_url":"https://api.github.com/users/ensiform/gists{/gist_id}","starred_url":"https://api.github.com/users/ensiform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ensiform/subscriptions","organizations_url":"https://api.github.com/users/ensiform/orgs","repos_url":"https://api.github.com/users/ensiform/repos","events_url":"https://api.github.com/users/ensiform/events{/privacy}","received_events_url":"https://api.github.com/users/ensiform/received_events","type":"User","site_admin":false},"created_at":"2015-09-06T19:38:45Z","updated_at":"2015-09-06T19:38:45Z","body":"I don't agree with supporting total anonymity tbh because that just supports the hacktivist groups."}}