Skip to content
This repository has been archived by the owner on Mar 3, 2023. It is now read-only.

Add telemetry consent setting #12281

Merged
merged 1 commit into from Aug 9, 2016
Merged

Add telemetry consent setting #12281

merged 1 commit into from Aug 9, 2016

Conversation

damieng
Copy link
Contributor

@damieng damieng commented Aug 2, 2016

New telemetry consent setting that will be used by metrics and exception-reporter to determine whether to collect anonymous usage statistics, exception reports etc.

All parts are required for this to work correctly;

@calebmeyer
Copy link

calebmeyer commented Aug 2, 2016

Does this change make it so that people who are currently opted in to metrics will see the welcome page again? If not, how will users who would like to share metrics know to change this setting?

I fear we would lose a lot of metrics from people who genuinely don't mind providing them if they aren't notified that metrics are now opt-in, and where to change the setting.

@damieng
Copy link
Contributor Author

damieng commented Aug 2, 2016

All users both new and existing will be presented with the dialog and asked to make a choice.

@damieng
Copy link
Contributor Author

damieng commented Aug 31, 2016

Final screenshot of telemetry opt-in;

image

@damieng
Copy link
Contributor Author

damieng commented Aug 31, 2016

Shipped in 1.11.0-beta0

type: 'string'
default: 'undecided'
enum: [
{value: 'limited', description: 'Allow limited anonymous usage stats, exception and crash reporting'}
Copy link

Choose a reason for hiding this comment

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

@damieng why is there no option like: unlimited ? I want to make Atom better and I mean business.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

There is no higher level of telemetry collection in Atom. The value is
called limited to make it clear in the future that consent was only given
for limited telemetry.

On Mon, Sep 5, 2016, 6:41 AM Jiri Spac notifications@github.com wrote:

In src/config-schema.coffee
#12281 (comment):

@@ -112,7 +112,16 @@ module.exports =
description: 'Allow items to be previewed without adding them to a pane permanently, such as when single clicking files in the tree view.'
type: 'boolean'

default: true

  •  telemetryConsent:
    
  •    description: 'Allow usage statistics and exception reports to be sent to the Atom team to help improve the product.'
    
  •    title: 'Send Telemetry to the Atom Team'
    
  •    type: 'string'
    
  •    default: 'undecided'
    
  •    enum: [
    
  •      {value: 'limited', description: 'Allow limited anonymous usage stats, exception and crash reporting'}
    

@damieng https://github.com/damieng why is there no option like:
unlimited ? I want to make Atom better and I mean business.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/atom/atom/pull/12281/files/369bd12faaf656b94d01affa8b3d63d4796e4107#r77523588,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAHQp65yMhVVspLxaKwhKbnUw8XF_RCxks5qnBwWgaJpZM4JaPnm
.

Copy link

Choose a reason for hiding this comment

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

okey dokey!

@joepie91
Copy link

joepie91 commented Sep 5, 2016

This doesn't seem to mention that the data is sent to Google Analytics, rather than to infrastructure that is maintained by the Atom team. Is there a particular reason for that?

I was personally quite (unpleasantly) surprised to find that Google was involved in the data collection, without that being clearly mentioned anywhere. This wasn't stated on the Welcome page either.

@wfdd
Copy link

wfdd commented Sep 5, 2016

I'd also be interested to hear how the opt-out selection is 'registered'. Is the information sent to Google? That would defeat the purpose of having opted out.

@xenithorb
Copy link

I'd also like to mention that some packages (like atom-beautify @ 1.65M users) seems to do GA independently? Shouldn't that be controlled by atom, or at least be stopped by an inclusion-gate to the package store?

@50Wliu
Copy link
Contributor

50Wliu commented Sep 5, 2016

I'd also be interested to hear how the opt-out selection is 'registered'. Is the information sent to Google?

As far as I'm aware (I don't have access to the GA data, so this comment could be wrong), if you decide to opt-out, that selection is sent to Google Analytics. This is so the telemetry data from the opt-in users can be (somewhat) extrapolated to the entire user base. Can you elaborate on what you mean by "this would defeat the purpose of having opted out"?

@xenithorb: As atom-beautify is a package, they would have to supply their own opt-out method. This opt-out screen is only for the data that Atom and its core packages collect, not for any of the community packages. (For example, just because you opted out of Windows telemetry reporting doesn't mean that any Windows apps automatically opt you out as well.)

@joepie91 Not that I know of.

Again, I'm not a GitHub employee, nor do I have access to the data in question, so please don't refer to this comment as the source of truth.

@xenithorb
Copy link

xenithorb commented Sep 5, 2016

(For example, just because you opted out of Windows telemetry reporting doesn't mean that any Windows apps automatically opt you out as well.)

This is a pretty bad metaphor for Atom, because you're comparing it directly to an OS. I don't believe you should be taking such a hands-off approach to community packages, because they integrate into your software. It's not the same as running two discrete apps on any given OS, the relationship isn't the same. If anything, it's more like any given package manager.

I understand that the project probably doesn't have the manpower to moderate community packages, but if we're going to use the OS metaphor, let's take Ubuntu, or in my case, Fedora for example, those packages are carefully curated by the maintainers of the project. And why is that? because you use the distribution's tools to install those packages, and they're tailored to work with the distribution, and they affect the reputation of the project. That's the closest analogy I can come up with, and in any one of those circumstances, I don't have to worry about Google Analytics sneaking in.

So I'll ask it differently?

  1. Should community packages be allowed to track users independently of the Atom/metrics package?
  2. If yes, then atom is responsible for allowing that in their software, because it's one thing to install something off github separately, and it's completely another to search for something in Atom's database of packages.
    • Shouldn't they implement a kill-switch for all analytics if the user doesn't want that?
    • Shouldn't package authors be discouraged from using analytics independently of Atom?

I understand that you're all web-devs and talking about privacy and analytics is boring because you've all accepted it but I don't see why such a nice piece of software - that runs locally - really needs it. (i.e. users have to download it to use it, so there's your metric)

@wfdd
Copy link

wfdd commented Sep 5, 2016

As far as I'm aware (I don't have access to the GA data, so this comment could be wrong), if you decide to opt-out, that selection is sent to Google Analytics. ... Can you elaborate on what you mean by "this would defeat the purpose of having opted out"?

If people have said they don't wanna be tracked, would they consent to their having said they don't wanna be tracked, to be tracked?

@joepie91
Copy link

joepie91 commented Sep 5, 2016

If there is no particular reason for Google Analytics not being mentioned, then I would strongly recommend adding that to the opt-in screen in clear language, so that people actually know what they are opting into.

@50Wliu: As far as I'm aware (I don't have access to the GA data, so this comment could be wrong), if you decide to opt-out, that selection is sent to Google Analytics.

That still leaks the fact that the user is using Atom, which is a bad idea. Just keep it from sending any data to Google at all, and look at the amount of clients that have reported in to determine how many tracked clients you have. That's the only data that really matters here anyway.

@xenithorb: Shouldn't they implement a kill-switch for all analytics if the user doesn't want that?

This can probably be implemented relatively easily by exposing a global configuration option that indicates whether telemetry is enabled, and forbidding extension developers from collecting analytics if that option is disabled.

@xenithorb
Copy link

This can probably be implemented relatively easily by exposing a global configuration option that indicates whether telemetry is enabled, and forbidding extension developers from collecting analytics if that option is disabled.

Yes precisely what I'm asking for

@lee-dohm
Copy link
Contributor

lee-dohm commented Sep 5, 2016

I understand that you're all web-devs and talking about privacy and analytics is boring because you've all accepted it

@xenithorb You've already been warned once about harassment in violation of Atom's Code of Conduct, severely enough that I had to delete your post. Your comment quoted above is in violation of the trolling and personal attacks sections of the code. Because of this, I'm banning you from participation in the Atom and Electron projects. If you wish to be reinstated, you may contact me at the Atom support email address and we can discuss it.

@damieng
Copy link
Contributor Author

damieng commented Sep 5, 2016

So a few points.

We don't specifically call out Google Analytics because we also use BugSnag for exceptions and have in the past used a VM server to capture Chromium crash reporting. We may need to add, remove and switch services out if the need arises.

The opt-out is a one time minimal ping to GA today. It doesn't defeat the purpose because it's one ping and that's it. No heap sizes, no package or command info, no startup times. A single "kthxbye" ping at the time you choose 'no'.

The Atom package system has no sandbox and authors can do anything. There is no way we could enforce any kind of http/https access policy to lock down how they record analytics.

While they could theoretically read the flag we use for telemetry I would advise against it. The permission granted in this dialog is for specific information to the Atom team and not a broad opt-in to anything and everything.

@damieng
Copy link
Contributor Author

damieng commented Sep 5, 2016

That still leaks the fact that the user is using Atom, which is a bad idea. Just keep it from sending any data to Google at all, and look at the amount of clients that have reported in to determine how many tracked clients you have. That's the only data that really matters here anyway.

It doesn't leak the user is using Atom, it tells us specifically that they installed it and didn't want to collect any further telemetry.

It is a very important metric as without it we can't know even how many users have installed the product (download counts are always inflated because of partially-complete downloads, multiple-clicks to a download and people who download but don't then install)

@lee-dohm
Copy link
Contributor

lee-dohm commented Sep 5, 2016

@joepie91 A configuration option has been added as part of this change, core.telemetryConsent. You make a good point though, have opened an Issue on the atom-beautify package. You may want to subscribe there for updates. I encourage anyone who discovers that an Atom package is tracking users without consent to open a similar Issue on that package's repository.

@joepie91
Copy link

joepie91 commented Sep 5, 2016

@damieng: We don't specifically call out Google Analytics because we also use BugSnag for exceptions and have in the past used a VM server to capture Chromium crash reporting.

The problem here is that you are sending data to an organization that has both the means and the reasons to use the data for purposes other than your own analytics. BugSnag is a service that sells subscriptions to developers for tracking errors - they don't have a reason to use the data for other unspecified purposes, and likely not the means either. This applies doubly so for self-hosted analytics.

Google Analytics plays a special role here because it is from Google. The same would apply for any other company that has the means and/or reasons to use data for other purposes, in particular those companies that are known for running their entire business on data collection and marketing/profiling of users.

Further, I consider it completely inappropriate to send this kind of data to a third party without explicitly asking the user for their consent in doing so. As it stands, all the text in the application other than the package description (which is easily missed) suggests that the analytics infrastructure is self-hosted. That is a problem.

@damieng: It doesn't leak the user is using Atom, it tells us specifically that they installed it and didn't want to collect any further telemetry.

That is the same thing. I said "that the user is using Atom", not "when the user is using Atom".

@damieng: It is a very important metric as without it we can't know even how many users have installed the product (download counts are always inflated because of partially-complete downloads, multiple-clicks to a download and people who download but don't then install)

Why do you need this kind of metric? What purpose does it serve? How do users benefit from this? It sounds like a needless vanity metric to me, with potentially serious privacy tradeoffs by not respecting the user's choice to opt out of tracking. If you are trying to track usage trends over time, then you don't need this metric either - it's very likely that the proportion of users that has opted into tracking is sufficiently representative to track trends, even if not exact user counts.

@lee-dohm: When one opts out of telemetry, nothing is sent anywhere. The decision is stored locally, not on Google Analytics or anywhere else. We chose this approach specifically for the concerns you stated.

This seems to contradict what @damieng is saying. Could you clarify? If the opt-out really is kept locally and not reported to Google Analytics, then that is fine with me, and the only issue remaining is that it's not clear who are processing the data (which might actually have legal implications as well, now that I think of it).

@lee-dohm: A configuration option has been added as part of this change, core.telemetryConsent. You make a good point though, have opened an Issue on the atom-beautify package. You may want to subscribe there for updates. I encourage anyone who discovers that an Atom package is tracking users without consent to open a similar Issue on that package's repository.

Thanks. I do still think that the Atom package registry needs a better policy on this, though - ideally, extensions that track the user without consent just shouldn't be allowed (at least, when they do so in an Atom version that supports the core.telemetryConsent option - of course, backwards compatibility is still a concern). This would also be much easier to detect and enforce for registry maintainers, than it would be for users.

@damieng
Copy link
Contributor Author

damieng commented Sep 5, 2016

Why do you need this kind of metric? What purpose does it serve? How do users benefit from this?

Knowing how many users are using your software is an essential part of considering what resources to commit to it. This is especially important when your software is a free-open source application and you are a business with paid employees working on it. A larger active user base can justify a larger team to work on it which will result in a better product. That's how users benefit.

Lee's comment about the nothing-sent metric is actually incorrect. I believe he was on vacation when I wrapped up the telemetry work so may not have been aware.

Users who absolutely don't want to share even a single ping can still go in and disable the metric package as before but with the benefit now that if you do it before clicking yes or no on the telemetry consent screen then nothing at all should ever be sent.

With regards to what packages can do I personally agree that we should come up with some policies for authors around this as well as some disclaimers in the install section and I'll take these thoughts back to the team to discuss.

@joepie91
Copy link

joepie91 commented Sep 5, 2016

Knowing how many users are using your software is an essential part of considering what resources to commit to it. This is especially important when your software is a free-open source application and you are a business with paid employees working on it. A larger active user base can justify a larger team to work on it which will result in a better product. That's how users benefit.

This absolutely does not require reporting every single user to a (third-party) analytics service. Things like community activity and amount of opened issues provide sufficient insight into this. It's also not a "user benefit" - it's an arbitrary requirement that you set as maintainers, that does not need to exist for the users to gain this benefit.

Users who absolutely don't want to share even a single ping can still go in and disable the metric package as before but with the benefit now that if you do it before clicking yes or no on the telemetry consent screen then nothing at all should ever be sent.

How would they even know? This is completely counterintuitive (the user just indicated they don't want to be tracked!) and unnecessarily complex. Somebody who is using Atom for the first time will likely not even be aware that parts of Atom core are distributed as packages that can be disabled.

It would be much more reasonable to just not send this 'single ping' by default at all, and work out a different way of determining popularity of the application, some of which I've already mentioned above. Software development has worked just fine for decades without this phoning home about the exact usercount. I don't see why it's now suddenly a hard requirement - there are so many other ways to obtain this kind of information.

With regards to what packages can do I personally agree that we should come up with some policies for authors around this as well as some disclaimers in the install section and I'll take these thoughts back to the team to discuss.

Thanks :)

@lee-dohm
Copy link
Contributor

lee-dohm commented Sep 5, 2016

This seems to contradict what @damieng is saying. Could you clarify?

@joepie91 I was mistaken, my apologies. I was working off of an earlier discussion. @damieng was the person who developed the feature.

@damieng
Copy link
Contributor Author

damieng commented Sep 5, 2016

Software development relied on gut feelings and best guesses for decades. Now we can add some data to our toolkit and like many companies can use that in the decision making process. It may not be how you would personally do it but it's what we have chosen.

That single ping has a significant importance as well as providing overall install numbers. "Do a significant portion not want to share telemetry data?" I suspect most users will not mind you may suspect they do. Soon we can put suspicions aside and know for sure. Without that ping all we'd know is X installations of version Y reported telemetry. Is that a significant portion of our user base? Are we up or down? Is that because of an installation issue or because of opt-out?

As to whether disabling the metrics package is particularly discoverable - it has actually been the only way to disable telemetry for some time so I would users who care enough have already disabled it. Nothing in this change will undo the choice they have already made.

@joepie91
Copy link

joepie91 commented Sep 5, 2016

Software development relied on gut feelings and best guesses for decades. Now we can add some data to our toolkit and like many companies can use that in the decision making process. It may not be how you would personally do it but it's what we have chosen.

And I am criticizing that choice. This is disrespectful towards your users, and saying "that's what we've chosen" is not a good way to remedy that issue. As I've said, there are many ways to obtain the kind of information you actually need.

That single ping has a significant importance as well as providing overall install numbers. "Do a significant portion not want to share telemetry data?" I suspect most users will not mind you may suspect they do. Soon we can put suspicions aside and know for sure. Without that ping all we'd know is X installations of version Y reported telemetry. Is that a significant portion of our user base? Are we up or down? Is that because of an installation issue or because of opt-out?

This, again, fails to answer the most important question: why does any of this matter?

You seem to be collecting metrics because you can, not because you have a clear purpose for them that users can benefit from. This is an extremely disturbing trend, and I am not happy at all to see this appear in stand-alone applications as well. It is absolutely none of your business as a developer to know what I am doing with the software or whether I am even using it, unless I have explicitly consented to sharing that information. This "single ping" violates that.

As a user, choosing not to share that information has the consequence that their performance issues will not be logged, that their errors are not known to the core developers, and so on. That is completely fine, and a choice you make as a user, with the consequences of that choice. I cannot see a single valid usecase where you, as the core development team, need to know that I am using Atom but have chosen to disable its tracking.

The reality is that you don't need to know how many people have disabled tracking. You don't need to know whether it's a significant part of your userbase. The only thing that matters is the metrics that you do get from consenting users, and the experiences and problems of those users.

As to whether disabling the metrics package is particularly discoverable - it has actually been the only way to disable telemetry for some time so I would users who care enough have already disabled it. Nothing in this change will undo the choice they have already made.

That is irrelevant to what I am talking about. I am talking about the consent screen being misleading, in that a new user picks that they do not want analytics collected about them, yet that very choice itself is sent to an analytics collector. "It's always been undiscoverable" is also not a valid reason to leave it undiscoverable. It doesn't address my concern at all.

@wfdd
Copy link

wfdd commented Sep 5, 2016

This is hardly better than what we had before. Users who'd like to keep their data private aren't presented with the option; or worse, they're presented with an option that could have them inadvertently leak their PII. If (new) users don't pick up on the fine print - which they won't 'cause they just wanna finish the setup and get to using the app - they aren't gonna look for ways to cleanly disable telemetry. This is textbook deceptive design, be it unintentional.

@damieng
Copy link
Contributor Author

damieng commented Sep 6, 2016

@wfdd All users will be presented with the option. If you already had the metrics package disabled we don't send anything at all not even the opt-out ping.

What piece of PII do you think is being leaked? If you compare the contents of the opt-out ping to a https request to download Atom itself there is practically no difference - basically what OS and what version of Atom. At our end it just means we can work with the data more easily rather than spending time and effort combining server logs that would be better spent working on Atom.

@joepie91 The No option says "We will only register you have opted out."

@joepie91
Copy link

joepie91 commented Sep 6, 2016

If you compare the contents of the opt-out ping to a https request to download Atom itself there is practically no difference - basically what OS and what version of Atom.

There are more ways to obtain Atom than by downloading it from the site. It's also a conscious action that can be carried out in whatever way the downloader desires, including using privacy tools.

The No option says "We will only register you have opted out."

The problems with that:

  1. It's grayed out, and people are very unlikely to read beyond the buttons.
  2. It's unclear what "register" means. Register where? Locally? Remotely?
  3. There are no instructions on how to prevent that registration, and even if there were, they would be unnecessarily difficult as compared to just clicking "no".

The entire UI is deceptive. Consequences are squirreled away in faded text, the buttons only speak of "helping Atom" rather than of the actual decision people are making. The "no" button makes an appeal to emotion, to try and make people feel bad about picking "no". The "yes" button is strongly highlighted.

These are all the typical dark patterns, and they really have no place in this kind of dialog.

@tejasmanohar
Copy link

I agree w/ @joepie91 that if there's going to be an option to disable tracking, it should be all-inclusive, clear, and final, but the current approach fails to meet all of those.

@wfdd
Copy link

wfdd commented Sep 6, 2016

What piece of PII do you think is being leaked?

The request metadata, which, crucially, include my IP. Put another way, I do want to help the Atom team collect usage information; I do not want to aid the intermediary. Therefore, when prompted to share my data, I will select the emotion-laden 'no' option. But despite of that, my IP will have now been transmitted to Google.

This is all assumes I've knowledge that you use Google Analytics, which is only by accident.

@damieng
Copy link
Contributor Author

damieng commented Sep 6, 2016

We set the AIP flag on all requests to Google Analytics. When Google receive the analytics request they immediately set the last octet in the IP address to zero before it is ever written to disk.

@calebmeyer
Copy link

Just a comment from the other side of the fence. I'm not on the atom team. I also don't understand the feelings that are motivating this discussion.

Certainly, I don't want the atom team knowing the exact file names (or worse file contents) of the proprietary software I work on at work. That never has (and I presume never will) be sent.

However, I feel like there is some expectation that any software which is free (as in beer) and open source must behave a certain way. I think that's wrong. These developers get paid specifically because they can show their management that people are using the software. They literally can do their job better when you give them more information to work with. If you have some problem sending that information, that's fine. They're making it easier than ever to opt out of sending your startup time and crashes. There is even an option, if you truly don't want any data at all sent, to do that. I would argue that not making that option face-up is the right move.

If they're nudging you towards helping out, I say that's a laudable move, not a dark pattern. I don't have the data to back it up, but I suspect a lot of people genuinely do want to help out in any way possible. See for example the comment above about "unlimited" as an option.

@wfdd
Copy link

wfdd commented Sep 6, 2016

We set the AIP flag on all requests to Google Analytics. When Google receive the analytics request they immediately set the last octet in the IP address to zero before it is ever written to disk.

That's good to hear, though I shouldn't have to find out about it twenty or thirty comments into an issue here on GitHub - and that is exactly the point I am making.

However, I feel like there is some expectation that any software which is free (as in beer) and open source must behave a certain way.

I find guilt-tripping users into sharing their usage data, and not disclosing exactly what [1] information is transmitted and to whom questionable. For my part, I don't think there's absolutely gotta be an opt-out; what I do expect is frankness. I just don't want me or other people to be taken by surprise. Would disambiguating what it means for the selection to be 'registered' be such a bad thing, for instance?


[1] +1 for adding a link to the 'metrics' package, but what about 'exception-reporting'?

@joepie91
Copy link

joepie91 commented Sep 6, 2016

@damieng: We set the AIP flag on all requests to Google Analytics. When Google receive the analytics request they immediately set the last octet in the IP address to zero before it is ever written to disk.

This still assumes that Google behaves as claimed, and is not sufficient reason to ignore a user's preference concerning tracking. The data should just not be sent to Google or anywhere else in the first place if the user has not explicitly consented to this.

@calebmeyer: However, I feel like there is some expectation that any software which is free (as in beer) and open source must behave a certain way.

It has nothing to do with it being open-source software. It has to do with the application being misleading and disrespectful in its handling of user privacy.

These developers get paid specifically because they can show their management that people are using the software. They literally can do their job better when you give them more information to work with.

I have already addressed this issue, with several examples of how that kind of information can be obtained without violating user privacy (none of which have really been responded to at all). This is a non-argument.

There is even an option, if you truly don't want any data at all sent, to do that. I would argue that not making that option face-up is the right move.

Why? It's misleading at best. How is this "the right move"? What do users stand to gain from it?

@sneak
Copy link

sneak commented Nov 26, 2019

The opt-out is a one time minimal ping to GA today. It doesn't defeat the purpose because it's one ping and that's it. No heap sizes, no package or command info, no startup times. A single "kthxbye" ping at the time you choose 'no'.

No, this is a bad take. It's absolutely not okay because it's only once. It's still transmitting the user's IP address (which is a street address in the right hands, such as Google), a timestamp, and the fact that the user just launched Atom to thousands of people.

It's compounded by the fact that you have explicit withdrawal of consent to such tracking, and yet you're still spying. This is really, really bad.

When the user opts out of tracking, you don't get to make any more web requests using their computer. Doing so makes the opt-out button fraudulent. As others have pointed out, the text below it does not even plainly indicate that it's going to be transmitting this information to thousands of other people, instead opting for the weasel word "register".

You're so close, with the consent dialog. You're like 99% of the way there. Now all you have to do is, you know, make the opt-out button actually stop tracking.

@joepie91
Copy link

Actually, revisiting this: this is probably a GDPR violation, as it stands.

@dannycolin
Copy link

Actually, revisiting this: this is probably a GDPR violation, as it stands.

I guess as long as they don't get sued they don't care. Business as usual...

@v1nc
Copy link

v1nc commented Nov 28, 2019

The opt-out is a one time minimal ping to GA today. It doesn't defeat the purpose because it's one ping and that's it. No heap sizes, no package or command info, no startup times. A single "kthxbye" ping at the time you choose 'no'.

Is this a joke? You are literally describing spyware and you are fine with it.

If this is important for you, just ask the user before pinging google?
Whats the problem with that?
FOSS is about trust, and the trust is gone at atom.

We set the AIP flag on all requests to Google Analytics. When Google receive the analytics request they immediately set the last octet in the IP address to zero before it is ever written to disk

This must also be some kind of filthy joke.
Are you joking about your users?
Hope you also set dnt header ;)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet