Go claims telemetry objectors arguing in bad faith and violating Code of Conduct
circumstances.run
circumstances.run
By asking nicely. Not by siphoning data out of my system.
Where is this world going ? Do i really have to treat every program as spyware and restrict its internet access ? And anyway, why would a compiler need internet access ?
The problem is always how to randomly sample people and AFAIK there is no good way except randomly sample people (a.k.a telemetry). You can argue that developers shouldn't care that much about their software are being used and whether they are performing as expected, but asking nicely really is not a solution.
APPENDED: PLEASE NOTE I'm saying asking nicely is not a solution to get correct data from statistical standpoint. You can argure the data accuracy is not important in this context.
LLVM, GCC, rust, zig, D, etc don't have telementry and they seem to be doing fine. What makes go special? They aren't trying to be more efficient than rust. It isn't more widely used than GCC. I would argue they don't need this telemetry at all.
But that doesn't mean it's not useful, for Go but also gcc, or Zig, or D, or any other language.
A long list of use cases is given here: https://research.swtch.com/telemetry-uses
Apparently as soon as a company becomes big enough, the line between convenience and ethical becomes very blurry.
I never said anything about what should be done. I'm just saying it is useful, as the previous commenter said it's not.
Where I'd expect difference is precisely over the question of whether it's worth the cost & trust issues. That makes me wonder whether there might be some middle-ground here where some third-party like the Linux Foundation could run a telemetry service which is highly public in both its design and collected data, and whether that would be enough that many people would be comfortable with this kind of service without Google's business reputation entering into the equation.
Useful does not equal ethical or legal. A lot of things would be useful to me.
Here's what I think would be a closer analogy to what's actually being proposed: the water company installs a smart meter allowing them to read usage data more frequently. They randomly sample 2% of customers' data and prepare a histogram showing the top daily usage hours and total usage over a monthly period.
Probably the data is too wild to make any use of, but then all the folks who have a clue using the playground as a kind of proof-of-concept play area... would be great for analysis.
Anyways, I'm not sure how well it would work, regardless of if it should be a thing at all. The majority of stuff I do, and the folks at work, we all have build pipelines that control internet access, use cache systems, etc... so I'm not sure it even matters.
The main thing I think this would do is help them flesh out the non-mainstream configurations. For example, I've used Go on AIX but I'd be surprised if bug reports on that platform didn't hit basically every maintainer by surprise since statistically nobody tests on it regularly or even has access to do so. I'd think most of the value of systems like this would be finding out that the change they tested exhaustively on everything Google normally uses is also going to break 100% of some niche community.
Some people are posting here as if this is already decided -- AFAICT, that's not the case. It's not even a formal proposal yet, and the stated intent was to start a conversation around something concrete. (For context, this is standard for how the Go project approaches large topics, including for example I think there were something like ~8 very detailed generics design drafts from the core Go team over ~10 years).
It sounds like the Go team is going to take some time to look into some of the alternative approaches suggested in the feedback collected so far.
In any event, this is obviously a topic people are very passionate about, especially opt-in vs. opt-out, but I guess I would suggest not giving up hope quite yet.
[0] https://discourse.llvm.org/t/rfc-lldb-telemetry-metrics/6458...
https://www.oracle.com/java/technologies/javase/terms-java-u...
https://learn.microsoft.com/en-us/dotnet/core/tools/telemetr...
Also the idea of GCC is more used than Go and GCC does not have telemetry so GO doesn't need it is completly unrelated.
Most dev working on core tools want telemetry to improve those tools, it's invaluable data to make the right decisions.
Which Java distribution? Maybe the Oracle JDK/JRE? I highly doubt the Oracle JDK/JRE has serious usage numbers because of it's (quite commercial) license.
I wonder if there's some trend where corporate backed, large "open source/source available" projects being more open to telemetry compared to more "open community" projects.
For non-corporate projects, the general thought process might be it's fine to leave efficiency gains and improvements on the table if it means violating some foundational principles. While in a business setting, those efficiency gains could be very tempting since it can translate to more money, market share or promotions and that way of thinking gets applied to the open source projects as well.
I mentioned that because an argument could be made that they're the most popular, or they're trying to be the most efficient language and that's why they might "need" this telemetry data.
> Most dev working on core tools want telemetry
Yet somehow, almost all open source, popular, efficient tools don't have telemetry. Like the ones I listed + python + Linux + coreutils + bash.
Of course they want this. But there are mountains of successful projects that work very well without it, and every one serves as evidence that this Isn't as important as they let on. We shouldn't subject our personal computers to google tracking because they want more tracking data.
In case anyone wants to mention that it's Google's language and they can do what they want with it, this is a perfect example of why people aren't happy with Google's control of the language
it's owned by an ad company
It's just that, if the argument in my last paragraph did become widely accepted, it would lead to a pretty brutal society. (And, of course, it is becoming pretty widely accepted where software is concerned.)
Here's a long list of questions Russ Cox was interested in - notice how many of them would really want something like “what is your CI configuration?”, and consider that while they could sample GitHub Actions configuration that doesn't tell them anything about the much more varied set of projects who don't use that service:
Most of these things are in the category of bug prioritization. Why don't you... you know... talk to users?
If you want some statistics (oh sorry, histograms), maybe pull down the gigabytes and gigabytes of Go code residing on public repositories and places like GitHub and analyze all that. That'll tell you a ton about how people structure their projects, what architectures they target, etc.
eg, some options:
a) No telemetry. All users of the Go language get equal treatment/consideration by the developers ("best guess").
b) With telemetry. The users who opt out are thereby excluded from consideration ("punished").
It seems like over time, option b) would lead to problems for the Go language as the developers base their decisions on incomplete information, whilst believing that information is somehow more complete than option a).
Questions about bias in reported data are legitimate and a genuine topic of concern, but this:
> This may be by design, as it punishes those who dare to value their privacy.
Is just veering off in the conspiratorial.
The problem is an obvious one but doesn't seem to be considered. :(
> Is just veering off in the conspiratorial.
Punishing people who value their privacy seems like it'd be strategically useful to Google, an ad company with demonstrated intelligent but sometimes ethically challenged people. ;)
Generics were also controversial and it took multiple iterations and years to get them done.
I wouldn’t call it “suddenly”.
Also, why do they need the data “suddenly”? What do you suggest?
Reading through the use-cases at https://research.swtch.com/telemetry-uses one thing to consider is that these are the kinds of things people care about as a project matures — once you have a large number of people depending on your project, you have to worry more about unintended consequences as you evolve and since the user community has grown larger and the project more stable it's also harder to know whether the people you hear from regularly are representative. When a project is small or mostly used by enthusiasts you can be more confident that your understanding of what people are doing is relatively accurate but that just isn't true over time. For example, how many millions of Java developers never contact Oracle or the OpenJDK developers throughout their entire careers?
Well, to bad. Because if you don't, you've built a piece of malware, by definition. You need to ask, live with bias, and draw your conclusions accordingly.
Who cares?! It's about respect for individuals and respect for their privacy. Any kind of telemetry should be opt-in no matter how you spin the PR.
Allow me to help you. You ask first. If the answer is no, you don't do it. If you cannot master this skill, or refuse to, you are embarking on becoming one of the most problematic demographics on Earth.
There is no excuse for not asking, and honoring the answer. Sending data is not free, and I guarantee your telemetry is not that important, neither is your vaunted sampling. All you want is to know who your Users are, and the fact is, that is fundamentally gated behind them wanting to even bother telling you.
Just like answering polls makes more of a difference than voting.
The solution, at least for me, is to remove that software from my life. Personally I vowed a long time ago to never work for a company whose business is to track people. It's no big deal for me, but I understand at least some may have hard decisions to make.
If monitoring of the application isn't possible (And by possible I mean reliably statistically so opt-out not opt in) then that will drive the shift to centralized/web based applications even faster.
Ironically, those who are most wary of telemetry tend to be the same people who also appreciate being able to run local software over web based.
I write some paid local-only software, and I have no trouble not tracking users or usage. For example, here's the entire privacy policy for one of them:
> App does not collect any data.
> App works completely on-device. Messages do not leave your iPhone and are not shared with other apps.
> The essence of this privacy policy will not change.
--
For another software, the privacy policy includes details such as:
> App never uses the Internet, except to check for updates.
> Automatic update checks can be turned off in the application's preferences. Requests to check for and to download updates happen only through the domain domain.example. The updates server does not store or forward potentially identifying information, such as request IP addresses or user agent strings.
> License keys, obtained upon purchasing App, do not contain personal information, such as names or email addresses of license holders. License keys are validated locally; App does not use the Internet to validate license keys.
If I'm deciding between a desktop and a web client for my software, monitoring is a concern. If I suspect I'll either a) not get enough opt-ins for montoring or b) end up in a publicity shitstorm if I use opt-out, then I'll just opt to run the software on my server instead.
The amount of monitoring and tracking that is done on server side software is obivoulsy going to be a LOT more than what "anonymous usage data" would be for the client version. And that's a bit ironic (that it might have the opposite effect).
Obviously scenario isn't about this software specifically. A compiler isn't going to be "web based" tomorrow. It was more a comment about the software landscape and the privacy debate in general.
The lack of basic ethics on this topic is a great example of what people mean when they assert that software engineering isn't real engineering. Software should represent the interests of its prospective users, period. Inserting anti-features that directly go against the interest of the user to benefit the author is a violation of trust, and is blatantly unethical.
But sure, keep convincing yourself that if users don't like you violating them a bit, it's just naturally pragmatic to abuse them even worse. Either way whatever you create can't be considered trustworthy.
As for the original topic, the real problem is that it would be a rug pull - classic Google. If this were a new language built with surveillance in the compiler, nobody would use it. But if the maintainers decide to add in hostile features after the language has gained wide adoption, it will take a lot of churn to sort out, fork, sandbox, etc.
The discussion would be a wholly different one if the data could be used for anything to e.g. sell, target ads or even deduce how/whether an individual has even used the application.
There's a big difference from functionality not existing to do this, and functionality existing that can change at any time. rsc's attitude about this comes with an air of "I want to alter the deal. Pray I don't alter it further"
That would be asshat-y but as long as no PII is transmitted, it would stop short of being a legal issue at least.
This is the thing though I think: people don't like to give up control (in this case, about what their software does). It's not about privacy, it's about control.
It doesn't. It compiles without internet access. If it has internet access it can also send telemetry data. If the compiler refused to work in all cases where it couldn't send telemetry data, I'd see the point...
https://wiki.debian.org/PrivacyIssues https://www.qubes-os.org/
You can disable the Go proxy and go for a more direct source fetch with an env variable, but in the same way you can also disable the telemetry.
Languages like Go have enormous test code bases with unit tests to ensure that every corner of the language is compiled and executes correctly. We don't need gobs of telemetry to phone home about how people are using a compiler.
The tests are the map, the actual use of the language is the terrain. The map is assembled largely by blindly guessing what the terrain is likely to look like.
That isn't very scientific.
The result is a situation where users will scream at the language authors if they break something, but they'll refuse to share any information about what they're actually doing with the language, which is perverse.
There are numerous compilers for C++, one of the hariest languages around, that were developed with no telemetry and work just fine and cover the entire language spec. Some of these compilers like G++ and Clang++ manage to target many different architectures with very few issues.
The obsession with telemetry is a mix of laziness and I strongly suspect user-hostile surveillance motives.
We're just going to have to lock down OSes. Giving any application carte blanche network access is like when apps had open access to all of system RAM and the whole filesystem back in the MS-DOS / Windows 3.x days.
Maybe unauthorized (by the user) telemetry should be like invalid memory access and trigger something akin to SIGSEGV. That'll send a message.
My feeling about Google is that they do not respect privacy, no matter the product. Invasion of privacy and tracking their customers are behaviors deeply ingrained in Google DNA.
Doing so for all other products has been incredibly profitable, so why not Go? It’s not like Go the language has a history of respecting the PL community (the resolution of Google stepping on the Go name was Google throwing their weight around and told the Go! author to pound sand), so why should anyone expect they respect their users?
THIS !!!
I suspect like many people, I feel that if they had said "We're going to introduce this ... but don't worry, it will be opt-in", then they would have avoided 99.99999999999999% of the negativity.
Instead, by making it opt-out, they are basically doing a classic Google shit move.
And that's before we start getting into questions about GDPR and opt-out.
If you're using an application from Google or Microsoft or any big tech company for that matter: yes.
> And anyway, why would a compiler need internet access ?
The go build tool will fetch dependencies for you. If you don't use dependencies or use a local network proxy instead of the Google one you can safely disable WAN access, but otherwise you'll end up with a broken tool.
someproject% go get ./... # or 'go mod download'
Next disable network access for the go command, or for the whole system.Then compile:
someproject% go buildThis leads to the compiler having access to the internet and possibly exercising its access. In a perfect world of separated concerns the compiler binary wouldn't have any networking code at all, necessitating a go-get before calling go-build.
I understand why the Golang team decided to go with this approach, but it does have side effects that people coming from different tooling (say, C) wouldn't expect.
Nix got there via reproducibility, but it's exactly what's needed to mitigate compilers with surveillance features or other backdoors.
The insinuation that all comments opposing the telemetry are hidden is bullshit, as a simple check will confirm: https://github.com/golang/go/discussions/58409
There were definitely comments that got quite heated and probably fell outside good discourse practices, largely because people are very passionate about privacy and also tend to get very upset when they feel betrayed.
CoCs are always protecting the inner circle and their opinions. In the early days of open source, flame wars were considered a legitimate way for voicing opinions. Now, in corporate controlled "open" source, the dominance hierarchy must be protected.
Quite true. Especially in the worksplace where RFC/design meetings are only done to validate what has already been decided.
> CoCs are always protecting the inner circle and their opinions
CoC are 99% not doing that. Of course people can abuse it but I don't see it in practice most of the time. It's just that the abuse/drama gets more attention.
> In the early days of open source, flame wars were considered a legitimate way for voicing opinions
Flame wars have always been discouraged. As soon as one starts, mods usually step in and shut it down.
> Now, in corporate controlled "open" source, the dominance hierarchy must be protected.
Yes, very few corporate-backed open source projects are truly open to collaboration, especially when it changes the feature set. If you want to submit bug reports, help users or a PR for a tiny bug, that's all good.
In their defense, the employees of those companies do the most work so they get to decide. But they do benefit enormously from having the code open (something they very often forget).
Similarly, codes of conduct are set by many groups as a way to be welcoming, letting prospective participants know that they’re not going to get flamed or hit on for trying to participate. Yes, some corporations might use moderation for ulterior reasons but that happens anyway – it’s like arguing that we shouldn’t have cars because people will use them to commit crime.
Chairman Mao instituted the Hundred Flowers Campaign purportedly as a way to solicit community participation in building China's new communist society. The CCP assured everybody, hey, we're totally open to criticism, feel free to be open and honest, we could use your ideas for how to improve.
The reality was made clear in the Anti-Rightist Campaign, in which critics of Mao's plan or regime were put on a list of those to be arrested as "rightists" and imprisoned or killed.
We're supposed to be adults, not 13 year olds. I'm not perfect either and a jerk at times – most people are – and that's okay, but I'm not making excuses for it. Have some standards.
Most of the hidden comments were hugely disrespectful and provided no argument or anything of value. If you start comparing opt-out telemetry to rape then you're simply a jerk (yes, really: https://i.imgur.com/eLVs9ev.png) I don't care about "yeah but people have strong feelings". I'm tired of excuses for jerkery; I find this enabling of it even more egregious than the jerkery itself. I have strong feelings about a lot of things, but I also manage to keep them in check most of the time on account of being an adult with some standards. Nowhere is this as easy as in online discussions, because you can literally step away from the computer at any time and come back to it an hour or day later.
Obviously, Google's data hunger is worlds less harmful than sexual assault, but I think the difference in how consent is treated is actually relevant for the discussion.
When it comes to sex, it has taken many decades (or even centuries) of hard work, but at this point society is finally starting to get the message across: you don't have consent if it's not given explicitly. Society is still in the process of getting everyone on the same page here (sadly) but progress is being made.
While compiler data collection isn't as important, the idea that consent means "you haven't tried saying no enough" is completely absurd. This means is no good comparison for consent because every comparison where a normal person deals with consent will make the suggestion opt-out seem horrible. Most actions happening to a person without consent are or should be illegal, with perhaps lawful arrests and the judicial system being the exception.
If we, as a society, really do value explicit consent, we shouldn't mix and match what is and isn't consent based on what serves us. Consent is important in software too, even if some companies or developers don't see it that way.
Google devs especially should know this. People I know have felt a real sense of violation when they found out how intensely Google tracks its users. I've seen people get creeped and grossed out by their phones because they were asked to review a restaurant they were near, realising that Google knew exactly where they were and how long, and that the tracking had gone on for much longer before that. I, myself, felt a little violated when I found out how much data Microsoft's dotnet tool has been sending out after getting "consent" during an automated install and first use, despite knowing the data can't track me down as a person.
The impact may be incomparable, but developers seem to severely underestimate the emotional impact their blatant disregard for other people's privacy can really have just because they don't feel the same way. Perhaps another way the comparison is more apt than it would seem at first glance.
You can write long philosophical stories about it and none of that matters anyway. The accusation is pretty clear, and it should be pretty obvious to everyone that going off on a rant about "this is as dirty as rape!" is unconstructive and inappropriate.
Furthermore there are countless things that happen to everyone every day without their explicit consent and it's far less valued than you think it is. It would be unworkable if we did. Did I consent to air pollution? Noise pollution? Billboards next to the road? The laws of my society? Having a passport of the country where I happened to have been born? You replying to my comment? People emailing me? In practice consent is often either implied and assumed, or doesn't operate at the individual level (e.g. it operates via voting).
Consent is implied (or assumed) in most day to day events. However, privacy law in the EU has brought the topic of consent into the internet and onto computers, whether you want it or not. That's because digital privacy and all manner of things it accompanies has been regulated because the industry has failed to implement the necessary safeguard by itself.
You may feel like such telemetry doesn't need explicit consent, like you or me commenting on posts here, and that's a valid opinion to have. Others viscerally disagree.
I personally think digital consent is a field of computer ethics that has been ignored for way too long. I'm very happy with the GDPR and only wish government would start enforcing privacy laws more often. You're free to disagree with me and I can understand your position if you do.
For those that do consider software tracking something that requires consent, there is a real emotional impact to seeing your privacy be violated by software and devices you otherwise trust. Ignoring that because you disagree with the underlying notion can only lead to misunderstanding and exaggerated flame wars. It'll also generate distrust and friction within your community.
To all of the points you have listed where consent is usually implied or assumed, there are groups that disagree. Air and noise pollution are regulated for a good reason; laws around those are often vague because these topics are extremely situational. I do actually think most billboards should be banned from public spaces for both ethical and safety reasons. There are large groups that consider the laws in the places they've been born in to be unjust and are angry that they're subjected under them, and demand (usually through a misinterpreted or made up legal basis) that they and their peers never agreed to any of those rules. There are even laws in place about who is allowed to email you, because you did not express a desire to receive ads from random companies, though enforcement is usually completely absent.
For what it's worth, I 100% believe that the author behind this proposal is well-intentioned. The proposed methodology has been carefully constructed to respect privacy as much as possible. I also completely understand the wish for opt-out as most people simply won't choose to act on requests for opting in. However, a project like Go isn't run by a single person, and the company that does run it cannot be trusted when it comes to privacy concerns.
Regulated, yes, but that doesn't mean "I consented to [...]". Even a single person driving a car pollutes the air and noise, and none of the people who involuntarily come in contact with that car consented to that, much less explicitly consented to it. This applies to almost all motorized forms of transportation to at least some degree.
But that doesn't mean these are unreasonable things to do, or that explicit consent needs to be given. The basic rule for public life is "do what you will, unless you unreasonably inconvenience others". Although there is wide disagreement on what exactly "unreasonably inconvenience others", almost everyone across the ideological spectrum mostly agrees on that basic principle. Generally speaking, if you don't unreasonably inconvenience others then it's accepted that consent doesn't need to be given. "Unreasonable" is key here, because many things can (and do) inconvenience others, but that doesn't mean it's unreasonable because we all got to live our lives.
> You may feel like such telemetry doesn't need explicit consent
I never actually said that; I mostly wanted to comment on "I think consent is far more complex than what you're saying".
I don't actually know what I think of this. Mostly I'd like to move towards a future where "consent" is de-emphasized because if something is considered bad by the overwhelming majority of the population no one should be doing that at all in the first place.
Once the invasive tracking stops (i.e. becomes regulated) there probably isn't much need to worry about fairly innocent telemetry as this mostly seems to be a matter of trust ("I don't know what you will do with this data").
I don't really know what that would concretely look like in practice (e.g. what the exact laws should look like, how to enforce it, etc.)
What about those who use a source-based distro and have to use software written only in Go?
Assuming this proposal is implemented as stated – which I don't expect it will – then I'd expect some distros to disable it by default. Go already provided the tools to set these kind of things globally in a recent release (1.20 or 1.19 IIRC) with a global go.env file.
Well, mine were, and I don't think I was rude, pithy, or repetitive. So your calling it bullshit is, frankly, bullshit.
Hiding "I don't want this" comments also conveniently completely hides their vote counts, absolutely suppressing people's opinions.
A lot of people just go ahead with the "telemetry=bad" message + critique of telemetry in general without even taking a look at the actual proposal[0] (which has some important points regarding collection frequency, data shared, and architecture). Not saying there should be no critique, but blanket statements that often criticize aspects that are irrelevant here don't help.
They're really trying to approach this in a way that, to me, is as reasonable and transparent as effectively possible (yes, I'm on the side of "opt-in telemetry doesn't work because of the majority of people who don't care either way; won't turn off if prompted, won't turn on either", so being opt-in is in fact unreasonable to me).
The Go toolchain already in a sense "calls home" by default to the Go module proxy hosted by Google.
Anyway, it's open source, they're the maintainers, it's up to them, while if you want, you can fork it. Telemetry is immensely useful to understand what features or technical improvements are worth prioritizing to benefit the actual average user the most, and not just the vocal minority. Telemetry being opt-in breaks this by once again prioritizing the vocal minority that turns it on.
I think if the Go authors do move forward with this proposal in any form, a fork is guaranteed. I've heard multiple sources express interest in doing so already.
That is in fact not the case. This is just one possible explanation for users not turning it on, one that I don't believe is even close to a meaningful amount in the grand scale of things.
As I wrote in the first message, a huge amount of people don't care either way. They won't turn it off if they're prompted, but they also wouldn't bother turning it on. They just don't care. I'm one of these people.
Do you have any data to support that claim?
Anecdotally, almost all programmers I've spoken to have expressed some kind of complaint about how much data all our devices collect these days. Many of them even saying that they're afraid to speak their mind on the Internet because they know someone might connect their words to their true identity.
A large number of non-programmers have mentioned to me how freaked out they are by their Android phones showing them ads for things they've just mentioned in proximity of their phones for the first time.
Considering the massive surveillance we're under, I think that "most people care, and don't want telemetry if given the choice" is much more precise than "most people don't care".
Uploading crash log to devs to help them fix bugs
Or stats about project sizes
So they are aware how their users use their soft and can optimize
The other part is the question of exactly what consent means in this context. If I sneak into your house, I'm spying. If I record what you do when visiting my house, that's arguably still spying. If I say I'm giving you a free meal but at the bottom of the menu there's a warning that I use statistics about which meals are the most popular unless you ask me not to, that doesn't feel like it's in the same category as the previous two even if there's a pretty strong argument that it's best to ask you the first time you show up.
I'd define "spying" as any data collection that users are not informed of.
Go tool is an open-source development tool - people expect open-source development tools to serve the users, not the developers (to the detriment of the user). That's the whole point of the whole open-source (and free-software) movement. [A significant number of] users do not want their tools to send any data from their machines that they themselves haven't allowed it to.
To create an open-source development tool that sends data by default is a deception tactic - it works because most people trust open-source tools, and because most people won't know the data is being sent by that particular tool.
The deception part is what bugs me the most. I may or may not be against telemetry in general, but I am definitely against deception of the users. And providing a few lines in the release notes counts as "informing the users" as much as changing a few lines in the TOS counts as "informing the users" - in my opinion, doesn't.
Isn’t it the same as using a term like “spy” with significant outside connotations rather than more common technical terms like “telemetry” or “anonymous usage data collection”?
Similarly, “deception” implies malice or subterfuge. One typically doesn’t associate that with extensive public comment so using that term seems like it’s contributing more heat than light.
"Spying" is not an analogy, it's a verb that describes the act of collection information that you aren't authorized to collect. In case of opt-out telemetry without user consent, it's a perfectly fitting word.
One could also argue that "telemetry" is under-descriptive, since it does not account for the fact that it's turned on by default.
> Similarly, “deception” implies malice or subterfuge.
Deception is the act of giving people false information for the sake of achieving a goal, the ethics of the underlying motive is irrelevant.
I don't think it's appropriate to use “spying” because there's no evidence of hostility here and considerable evidence to the contrary in the form of the public discussion and the proposal starting with various mechanisms limiting what is collected, how frequently it's reported, and preventing covert manipulation of the telemetry system.
The rest of the technicalities are irrelevant, because none of them have anything to do with consent. There is no class of data whatsoever that is okay to collect without users' consent.
Yes, privacy is an ideological problem.
The fact that the HN crowd now believes it's okay to collect data without others' consent makes me wonder how cooked the frog really is nowdays.
If I do see you in shop, then Im collecting informations about you, yet you didnt consent to me anything.
Everything is up to what data is sent.
Crash log? Fine
All File names on my pc?
Bad
This isn't a good analogy. By going in public I'm implicitly consenting to being seen, because it is impossible for me to go in public without being seen - being seen is a necessary condition for the action of me going out in public.
There's no such necessity when it comes to running a development tool on my own machine in my own home.
Sorry, but I think you just made it up.
OSS makes stuff somewhat transparent and auditable, thats it.
Also users do benefit indirectly by telemetry because they get better tools.
Anyway what would be the other benefit of dev? That he has to spend his unpaid free time on fixing yet another crash report?
Whats wrong with anonymouse tel. collection.
Which makes users expect it to not have nasty stuff like spyware (ahem, "opt-out telemetry") bundled with it.
> Whats wrong with anonymouse tel. collection.
Nothing, we're not talking about anonymous telemetry collection per-se, we're talking about telemetry being opt-out.
That is presuming people aren't turning it on because they don't like it, while the reason they aren't turning it on could be they are lazy and don't want to do any extra work.
If you had a HTML sanitizer that most people weren't turning on, you might just turn it on by default to improve safety (like Rails did at one point). Just because people weren't turning something on themselves doesn't make turning it on by default "hostile".
The solution in these scenarios is to simply ask the user, with no default, whether they want telemetry to be enabled or disabled. To do so in a modal or required dialogue in fresh install and the update in question.
If the telemetry is worth changing defaults to you then IMO it should be worth a bit of friction to introduce it more ethnically.
Is that painful? Yes. Would it turn some people away from Go through this kind of friction? Sure. IMO those kinds of costs and pain points should be necessary considerations of adding telemetry.
Worth at least a minor version change, and therefore not too crazy that it would cause some annoyance.
And this is the way the Debian installer asks for participation in the Debian Popularity Contest. Which is the ethical (and legal) way.
Why would you assume that?
I think most people care and wouldn't turn it on if asked to.
They wouldn't turn it on if asked, but they also wouldn't turn it off if you told them about it.
I'm not very convinced by that line of reasoning.
By that logic, most people don't care whether or not their government is a dictatorship. Which is (I hope) obviously not true.
> Why would you assume that?
I didn't assume it, I said "could be".
> I think most people care and wouldn't turn it on if asked to.
If people don't like it, they can turn it off. Are you assuming most won't if asked to?
If telemetry is opt-out, there's a good chance most people won't be aware that it's even there - that's deceptive. At the very least, there should be a big scary banner saying "your data is being sent to our servers" on every single command - that's the only way you can assure that everyone who uses the tool will be informed.
> Are you assuming most won't if asked to?
The big argument to opt-out telemetry is that "opt-in doesn't work", so yes, I'm assuming most won't.
If my assumption is wrong, why not just ask people? They'll say "yes" anyway.
It should probably say- "Ensure that the functions and libraries you use continue to be supported by sharing your usage statistics."
> If my assumption is wrong, why not just ask people? They'll say "yes" anyway.
There's not really a great place to ask, but it could be a checkbox in the installer, sure.
I don't think it's fair to describe the Go proxy as "calls home"; no one says that about Rubygems, PyPI, npm, or any other package tool. If anything, the Go proxy is the only package system that actually allows disabling it quite easily and pain-free. Try using Ruby without rubygems or React without npm: no doubt possible, but it will take a lot more effort.
IP addresses being the only "personal" data the new telemetry proposal would plausibly be able to gather as well, which a lot of folks are complaining about.
Just to be clear, I don't think the Go module proxy is a bad thing, just saying that we've already crossed that "threshold" of potential personal data collection long ago.
That said, I don’t think that the go tool’s current behavior in regards to the module proxy server can be considered as phoning home.
The proposed metrics collection however absolutely would be bad phoning home behavior.
So does Rubygems, PyPI, npm, or any other package tool.
If you want to have a broader discussion about package tools: be my guest. But people misrepresenting and banging on about the Go proxy specifically got boring a long time ago.
What I am arguing is that the people who are saying "this new telemetry design could allow them to gather ip addresses - which are 'personal' data" are arguing over a ship that has sailed years ago.
Apologies if I wasn't being clear enough.
The Go equivalent of `gem`, `pip`, `npm`, `apt`, `cargo`, etc, is `go get`. There's no issue with `go get` connecting to internet.
On the other hand, `go build`, `ruby`, `python`, `node`, `gcc`, `rustc`, have no business doing anything that requires the network (obviously `node` etc are interpreters, so the user's program could have networking code, but that's the user's code, and not the interpreter's code).
So, `go get` using Google's proxy by default, fine, this is Google's tooling, we can just avoid using `go get`.
But the problem is that this proxy sneakily creeps into the `go build` command as well, so you can't just "not use `go get`" because you have to set flags for the compiler as well.
It's doing that to provide a functionality required by the user, which results in informed consent. If you do computing without a user's informed consent, you're building malware.
It is still telemetry, other platform's toolchains dont have it, it's not bad faith for rejecting it.
> Anyway, it's open source, they're the maintainers, it's up to them, while if you want, you can fork it.
Yea, so Rust it is then.
As much as I like both Go and Rust, the jump between the two is not that easy.
.NET enters the room
LLVM, GCC, etc. mostly depend on the crash reporter from distributions, and I know several Clang devs who have been thinking about adding some additional telemetry.
No I won't mention names here because I do not want the innocent to be harassed because I posted on fucking hacker news.
Opt-out telemetry executing for users who would not like it to be executing, because they don't know about it or forgot, makes it a spyware.
The rest of the discussion only makes sense to have if you agree there are circumstances when implementing spyware is justified.
There was a bug on MacOS that ended-up requiring XCode to be install in order for the Go compiler to work? That example is bad because:
1. it was going to be very obvious real quick 2. it did get discovered and fixed without telemetry.
... and both of my points above are irrelevant. Why? Because the problem raised here is not if telemetry is useful or not. It's not even if telemetry is good or bad. It's that discussions about telemetry silenced people who were against it.
Your point is that people should not be allowed to raise arguments that have not been approved as valid. I mean, the simplest reformulation is that "if we think you're wrong you will not be allowed to speak."
For real? Being wrong means you're not allowed to participate? (And by wrong, I mean "deemed wrong by the people in power to ban others.")
Do you want to enable anonymous telemetry? yes [no]
Your choice will be remembered and we won't ask you again.
See our engagements and details on what we collect here: https://go.dev/telemetryI mean, I completely agree with you in principle, but also there are a lot of terrible CI systems out there.
Now the team managing CI (or QA which could actually be in a TTY) needs to notice these failures and communicate them (via a JIRA ticket of course) back to the development team. That team doesn't know what it's about and sticks it on the backlog. Eventually they give the right environment variable, but environment variables are a security risk so it needs to go through security review, and because this mentions telemetry data the privacy and legal teams want sign-off...
This might be an exaggeration, but I think it's worth thinking about the worst case scenario when building things like this into development tools that are used so widely.
If you can't update an environment variable yourself, or ask directly someone who can, all that on a CI system that's somehow bound to TTY, get out of here.
Fixing this in several CI systems I've encountered would take well into months, plausibly with many unknown failures because of cached builds.
> if an environment variable (eg. GO_DISABLE_TELEMETRY=1) is not detected
It could also easily rely on whether the shell is attached to a tty to detect a CI environment, and disable telemetry by default in this case.
Got stats on that? I guess you don't as long as you don't have some kind of telemetry :)
At this point I think it's very hard to say what "most users" do or don't want exactly.
A more reasonable way to go about this would be to launch this as opt-in first, and only bring forward the opt-out proposal if enough people don't opt-in. It doesn't have to go with opt-out on day one. This kind of requirement validation in not uncommon and I would be very surprised if the idea didn't cross them already. It would have been the far easier choice to make especially in the face of strong feedback, but the fact that they just chose to close the discussion instead of trying to move forward on the proposal doesn't bode well.
The way I read that wasn't as a "buzz off, we don't want to discuss this", but rather as a "okay, we've heard all that was said, we will think about it". At some point everything that can be said has been said.
Did they need to close the discussion? Probably not, but it avoids the work and overhead of having to moderate things because it attracted quite a few comments that did need moderation (and will likely continue to attract them).
I understand that there are uses for such data to help make the tooling better.
I don't understand how Google and its cult can be so disingenuously surprised that people are wary of it in 2023. This makes me trust them even less than normal - i suspect they'll follow the MS playbook and "accidentally" make the opt-out fail and eventually the idea of opt-out will be completely removed from the product because "everyone seems to be happy with it... No one turns it off anyway".
It's quite different to have a system enabled which is only possible to switch off by googling a solution or digging in a settings menu. That's also opt-out, but it's a much darker pattern than the pre-checked checkbox.
Obviously, a command line tool doesn't have the luxury of an interactive setup, so the same patterns don't apply, but whether or not something is "opt out" or "opt in" isn't the entire story. I find the "default" to be the important thing. Developers need "the default" to be enabled to get reasonable coverage. That doesn't mean it needs to be "secretly" enabled.
Yes. Because you have the "don't care" group being the important group. The users are split into a small group being positive (The would-opt-ins) and a small group being negative (the people arguing it must be opt in) and a large group who don't care.
The central "don't care" group is so large that the data is almost useless without them - i.e. you could just as well not have the system at all if you were going to do a full opt-in. So the unchecked box alternative really isn't an alternative.
* Would-opt-ins
* Would-opt-outs
* Don't-cares
* Did-not-know-that-google-are-going-to-run-telemetrys
By making it opt-out Google will be conveniently hoovering up the people that would say objects if they knew along with the don't cares.I think you are confusing this with systems that gather any PII, and regulations such as the GDPR and similar. This is about collecting data without any PII so any privacy regulation wouldn't apply here.
So there is no issue of per-invocation tracking.
Why would the command line tool not have the option of an interactive setup?
Many command line tools ask you to say yes/no to things the first time they are run. Even if you want to reconfigure a tool it shouldn't be difficult to retrigger a decision tree.
Typically because (at least if it's already shipped) there are hard expectations about what it will do. E.g. that it shouldn't block waiting for input.
That might screw headless/CI uses. A shipped product probably also doesn't have the luxury of using a /noninteractive or /noTelemetry or requiring an env car or similar to block it, because the CI scripts are already written.
You can have it ask the user (block waiting for input) if its given a NEW command line option. But you can't do it in the absence of that option. That's why, for a shipped product, it's so much easier to make it opt out. The alternative would be to make it opt in via command line switch or env var - which would obviously be so rare that there is no point in doing it at all.
(I know sandboxes builds are not common place, but they really should be.)
No idea. If I had to make a guess I'd say 99%?
Telemetry from a private system should always be opt-in. I find it concerning that developers think they have some default right to data on systems they don’t own without explicitly getting permission. It may be technically possible, it may be statistically necessary, but it’s morally bankrupt and erodes the peer relationship that should exist in open source software.
I have to disagree. I think it should be visibly communicated (not snuck in under the radar) but such cases default on should be acceptable so long as it is clearly communicated. Command line systems ARE inherently more difficult than the installer checkbox I'm used to (but by no means impossible to work with).
> Xcode command line tools require a one-time license agreement > plenty of Java tools will prompt for JAVA_HOME if they can’t figure out where it is
This is easy enough if done from the start, but it's hard to do without breaking existing users's scripts if you have the requirement that "We don't stop and ask for permission in v2.0 if we didn't in v1.0 given the same arguments and environment, as that will break people's builds". And as a user of a command line tool I have to say that requirement seems much more important... This is why it's a good idea to have a /noninteractive switch for command line tools. You can state from v1.0 that without it, it might block at any point in any later version , so any script that doesn't use it made a mistake.
> developers think they have some default right to data on systems they don’t own without explicitly getting permission
What is explicitly asking here? Is the checked state of a checkbox part of whether it's explicit?
> it’s morally bankrupt and erodes the peer relationship that should exist in open source software.
Yes, OSS has their nuances, command line tools have their nuances. Having Google be the company at the receiving and has it's own set of complications. I don't think all the objections apply in all cases.
Will it cause friction, with users and with tooling and automations? Absolutely. But I think the costs of that friction is not a tremendous ask in terms of avoiding the dark pattern that is defaulting to yes.
In a perfect world, at least. In this one, end users are never going to win an argument about telemetry with google-borne systems, and definitely not for actually benign telemetry systems like this.
Why is maintaining a fork and remembering to use it everywhere easier than just setting an environment variable?
> ... product because "everyone seems to be happy with it... No one turns it off anyway".
How would they know who turns it off?
in 20 years from now will I need 700 environment variables, one for nearly every piece of software on my machine?
LS_TELEMETRY=off VI_TELEMETRY=off BASH_TELEMETRY=off CAT_TELEMETRY=off
It's infuriating.
Unfortunately it's not been widely adopted. My guess is this is running into the same problem that DNT=1 in the browser did, which is that different people mean different things by "tracking" and it's very hard to come to agreement on where to draw the lines.
Try disabling all telemetry in Firefox.
So the occasional person that doesn't mind sending data to Google can leave it on, but enabled in that way instead.
If this group of dev's are going to violate the privacy of their Community members, they're asking for stuff like this.
Maybe once they realise the telemetry they collect is utterly useless, they'll actually do the right thing and remove it.
Also can work as a general protesting against a harmful trend.
If the code doesn’t exist, it can’t run. It’s the only way.
At the very least, it should be a compiler compiler flag and all code with telemetry should be in a separate library to make it easy to be sure no mistakes caused it to sneak it’s way in.
It also assumes setting the variable actually works - even without malicious intent, it's an approach that assumes there are never any bugs.
But the worst part is that it sends the message that we as a community will tolerate megacorps injecting telemetry tracking into our compilers, and our response will be not only to stay in their ecosystem, but to do extra work for them to keep us there. That's not the the message I want Google to hear; I want them to hear us tell them where they can take their telemetry and shove it. We do that with our feet.
1) Presumably, you're just deleting a few bits of code here and there.
2) It's not going to stop at one lil ENV var, eh?
Or you know, be reasonable and set the GO_DISABLE_TELEMETRY=1 env variable, IF telemetry actually ends up being added some day.
I'm not in favor of any kind of telemetry in my devtools but there's no reason to go nuclear at this point.
Honestly the proposal by rsc is even reasonable to me, I'm mostly against it because I have no trust in Google regarding any kind of data, personal or not.
> eventually the idea of opt-out will be completely removed from the product
That's never happened anywhere, and it's entirely illegal.
Besides, opt out via env var is a broken idea. It forces me to go through all sorts of dockerfiles, ci config, dev machine scripts, etc to make sure its set. Not to mention the ongoing maintenance of keeping it that way. Id rather just use the go-with-at-least-some-minimal-respect fork and write scripts to verify that's the base docker image, installed golang, etc. It actually seems easier to do that than verify every environment that runs golang has that env var set.
Jokes on you... Open source software is provided as is
It is so hard to create something, because of the dangers lurking everywhere. I think I need a reasonable creators license.
That would rely on installing Go from the distro repositories, though, and that's not what the official Go docs tell you to do.
I expect many professionals who do use Linux to run on stable possibly LTS versions of their distribution of choice and those rarely come with up to date tools for languages like Go or Rust or even Docker.
I wish installation would only come through package managers, but the amount of people I've had to help upgrade their Ubuntu to a newer version because they added a whole bunch of external repositories without realising the impact has taught me otherwise.
It's possible that distros will come out if the box with a /usr/share/go/env file even if Go isn't installed, but that'll take a while.
Whilst I wouldn't argument that's an inaccurate description of the people you want data from, counter point: tough?
We're used to these liberties being taken in IT, so let's imagine a less technical scenario. You buy some lightbulbs from ShopX, and they'd really like to know your lightbulb usage habits in order to improve the efficiency of their lightbulbs (and nothing else, honest guv! but okay, let's give them the benefit of the doubt).
They could send you a questionnaire, and as rightly pointed out in these arguments, it's unlikely you'd bother with it. Or they could ... what?
Anything that involves them getting that information is a slippery slope at best, and a bit creepy already. This is the only industry where we've normalised this kind of liberty taking.
Or the only one where you're personally aware of it. The kind of low-frequency limited data the Go team proposed collecting is basically the same as, say, McDonald's telling store managers to report how many people ordered mayonnaise on their sandwiches so they can decide whether to continue stocking it. It's worlds better than the kind of individual patron tracking large retailers or credit card companies routinely do, but they don't advertise that.
There are two differences here: one is where data collection happens — since this is running locally rather than in the cloud we know it's happening — and the other is the larger question of Google's corporate reputation is affecting reactions. A lot of the takes on social media have been reacting to that larger issue, many by people who don't even use Go, and are alleging scenarios far beyond what would be possible with the proposed system. I think some of this also goes back to the risk of being open: I would bet that more than a few of the people who are very concerned about Go lang use tools like VSCode which collect far more data but not having the big public proposal didn't mean everyone was talking about it at the same time.
The credit card companies are more like it but I opt out of that game too, by not using them. Their practices are well known to me.
To be clear, “what if they extended the scope later?” is a fair question but I do think that needs to be carefully expressed as a significant hypothetical future change from the actual proposal.
Good luck getting non-operating system biased data after that.
Collecting non-operating system biased data seemed to be one of the stated goals to making the telemetry turned on by default. Otherwise it was posited that Go users on open source operating systems would disproportionately choose to keep telemetry off when prompted in an opt-in model.
I'm an ex-Googler who has admired Golang for many years and have been considering it for use in my hardware startup.
The fact that opt-out-only telemetry was even considered, much less appears to be already decided(?), makes me far less likely to use this tool chain at any time in the future.
The speed at which this topic has escalated since the idea was raised last week is astonishing. The biggest mistake Cox has made is assuming people would at least read the three blog posts and debate the topic as presented.
I'm not thrilled at the idea of opt-out telemetry but some of the rhetoric is well and truly beyond the pale.
Yes, I agree he was perhaps a bit naïve about this. On the other hand: I also don't really know how to do this type of discussion better. Russ obviously went out of his way to come up with a nuanced solution, which one could reasonably disagree with, but I have the impression many people didn't bother reading it, especially on HN here but also in the Go discussion about it. This thread is full of basic misunderstandings, or, if we want to be less generous about it, misinformation. I don't think most people do it on purpose, it is what it comes down to in the end.
One of the really great things about internet discussions is that anyone can join in. One of the bad things about internet discussions is that anyone can join in.
Telemetry is one of those topics that comes with a lot of baggage. Coupled with Google's baggage and we see the inevitable response. I have a similar impression as you - people saw the word "telemetry" and thought they'd read enough.
I thought Cox's posts were great. I came in thinking, "telemetry? hell no!" but came away thinking he made a good case. People can still disagree over it but some of the misinformation is absolutely unbelievable.
a) Backed by Google
b) Intended to be enabled by default
... then it might be worth considering. Unfortunately, either one of those is a show stopper all by itself.
You see this pattern in other "free in license only" software where the important decisions are made without community input.
The Go team has come back on some other decisions in the past after they proved controversial. I can't predict the future, I'm not a member of the Go team, but I'll take the bet that the proposal will either be abandoned or that it becomes opt-in.
https://code.visualstudio.com/docs/getstarted/telemetry
https://stackoverflow.com/questions/64570113/how-do-i-stop-n...
I think it's pretty obvious that opt out telemetry rubs most people the wrong way.
This is basically re-stating the opt-in challenge: we know that some people are vocally upset by it but we have to guess at the relative percentages of the groups of people who know and do not mind, don't know but would be upset, or don't know and wouldn't mind if they did. People who are upset are far more motivated to comment about it, so anyone looking at social media is going to see a lot of messages from them but still not know what percentage of the total community feels similarly. I've even seen people who aren't primarily in the Go community but very active on privacy issues commenting on this, which is perfectly legitimate but also not representative of the median Go developer.
It's also important to remember that "data" covers a range of sensitivities, and vague assertions don't help the conversation. For example, the proposed system records less identifying information than visiting Golang.org but relatively few people would say it's unethical for that site not to have a mandatory opt-in requirement before loading a page - most of the interest tends to be in things like disclosure and retention policies.
Does a singular setting actually turn off telemetry in VS Code? (aside from Extensions telemetry)
If you really want to see what your devices send back, monitor DNS on your devices.
I installed a bunch of apps on a spare phone (that had no sim card) and was VERY surprised how much background data and requests Tiktok used.
With some effort you can MitM your phone with your own certificate authority and a tool like mitmproxy in transparent mode. It still won't detect all of the trackers (detecting MitM is quite easy with certificate pinning), but it'll show you even clearer how much you're being tracked.
Expect every API to also be a tracking endpoint, and expect every application you use to upload your location. There are apps that do well, but they've become the exception rather than the rule.
The answer is No. No telemetry to be used on people who don't want it.
I don't know what goals Google, as opposed to the Golang team, has for Go. I do know Google has notoriously opaque and complex internal politics, and a long history of summarily axing projects that fail to perform over some set of internal metrics, no matter how large and invested a userbase they happen to have.
So I don't think it is unreasonable to consider the question. Sure, the technologies aren't fungible, but it isn't a technological question I'm asking; every longstanding human enterprise necessarily involves politics, and it's the politics I'm wondering about here.
I have no idea what you're talking about. I agree for the mindshare, because I started with Go and thought Rust looked more elegant, but after actually trying it it became pretty clear that they don't compete.
I don't know where you're getting that Go somehow "lost", it sounds like bubble reasoning. Again, it didn't "lost" because they don't compete with each other.
It's like saying Nadal lost against Messi because Messi is more popular when they're not playing the same sport, it doesn't make sense.
Rust is interesting because not only is it good at low-level control but it has very advanced language structures and rich libraries (unlike C), better ergonomics than Java, a great async implementation, etc. That expands the range of problems you might consider a “low-level” language for considerably since you no longer have the tedium of basic things like primitive data and control structures, non-ASCII text processing, etc. steering you towards other choices.
Go is an interesting middle language because it has some higher level features but also surprisingly limited types and C-style error handling, so you had the somewhat unusual case where people who wanted either low-level control or better robustness, advanced typing, packaging, friendlier compiler error messages, etc. might reasonably conclude Rust is a better choice. I'd still say Rust is harder to learn but the situation feels somewhat unique compared to the past where e.g. you really had to want the advanced features in C++ to pay the productivity tax of using it.
Once allow Go in Debian, then what? More packages with telemetry turned on becoming the "norm" and accepted? No.
There are better ethical free and open software.
Google/Golang devs: You're objecting in bad faith and violating our Code of Conduct.
telemetry is definitely not a solution half of the industry would be happy about. It's polite way of saying - I want to know what you are doing!
On the other, you have to possibly learn a new language, tools, libraries, etc, new community, new release cadence, different feature set, etc.
Tough choice.
Apple does this same thing with an opt-in. Google is evil. Stop supporting evil.
Stupid proposal. If I wanted telemetry, I’d implement with a trusted party, whose service I am paying to use.
However, several hidden comments were, as far as I could tell, made with good intent. That does create an impression that certain opinions are not welcome. The argument for hiding these comments seems to be that they've already been used in other discussions (i.e. "opt-out is illegal under GDPR" being used in a discussion about opt-in/opt-out design despite not being mentioned in that thread before).
When I read the comments by the Go people, it looks like the implementation of opt-out telemetry has already been decided on. Objections like "have you checked if that's even legal" are ignored with a simple "I'm not a lawyer". As rsc puts it, "This is a technical discussion, not a negotiation.".
The discussion is clearly set up wrong and I doubt it will matter in the end, now. The Github discussion is focused on technical implementation, with the moral discussion already having been decided upon; that way, people with arguments against telemetry have no place to voice their concerns. Maybe the moderators simply couldn't imagine being anti-telemetry or maybe they don't consider the position relevant, but this approach was going to stress out the moderators and cause unproductive discussion from the very start.
Personally, I'm somewhat disappointed (but not surprised in the least) that this is being suggested, but I suppose this is what one should expect when running any kind of program from Google (or Microsoft, for that matter). You simply can't trust these companies and the open source developers that work for them to respect your privacy.
I have to say, though, the proposal doesn't seem to take the risk of bad data injection seriously. I myself would definitely run the theoretical AdNauseam style fork of Go if the team behind the tool choose to go through with an opt-out mechanism.
If I have not made my code open source, stop snooping. If you want to know how your features are used, go and analyze open source codebases.
And it must be default turned off. Don't use dark patterns like default telemetry on and hoping that x% of users will forget to turn it off in a week and we will get our data. Smells bad.
Again, I'm pretty against it. My red-line is opt-in telemetry, and even that's a place I don't want to arrive.
Microsoft .NET also introduced opt-out telemetry (ie., turned ON by default and you could opt-out by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT=1|true|yes). These are just dark patterns by big-tech and erode developer trust.
Ken Thompson's Turing Award lecture on "Trusting Trust" comes to mind. https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_Ref...
The comment has a "let's talk about how we stop there and not move forward than that" tone, because frankly, I don't think Go maintainers and Google will say "Oh, we overreached, sorry. Let's abandon it and never talk about it again".
However, even discussing telemetry and being so adamant about it made me reconsider the extent I'm going to use Go in the future.
[0]: https://github.com/golang/go/discussions/58409#discussioncom...
The first remark to start everything was sensational, and I'd love more specific citation to learn more about the claimed allegations.
Then, seemingly out of nowhere, one individual went on a major rant about "intersex" or something like that, and something-something Ada Initiative...
What I want is a technical discussion about "Google's opt-out telemetry proposal on the Go compiler", which raises some alarm... the word "opt-out" seems to suggest Google would require people to unsubscribe from their intelligence gathering? Seems sensational at face value. But is that even true? And what, if anything does gender-identity drama have to do with anything about that?
"Oops, we accidentally included ~.ssh"
I don’t know, I’m all for privacy but people get passionate too easily the moment someone even mentions the word telemetry and I think we should focus on actual privacy issues, like analytics in the context of ads, social networks (tiktok, fb, ig…), etc.
The problem is, we've seen it all before. When Microsoft added telemetry to dotnet, they stated the following:
> The feature collects the following pieces of data:
>
> The command being used (e.g. “build”, “restore”)
> The ExitCode of the command
> For test projects, the test runner being used
> The timestamp of invocation
> The framework used
> Whether runtime IDs are present in the “runtimes” node
> The CLI version being used
>
> The feature will not collect any personal data, such as usernames or emails. It will not scan your code and not extract any project-level data that can be considered sensitive, such as name, repo or author (if you set those in your project.json). We want to know how the tools are used, not what you are using the tools to build. If you find sensitive data being collected, that’s a bug. Please file an issue and it will be fixed.
All very useful information that doesn't tell them anything about you or your machine.
Since then, Microsoft has been steadily increasing the amount of data it's been collecting, including personal identifiable information in the form of a pseudonym based on unique machine identifiers. Once data collection starts, it only ever gets worse.
I really like to see the actual thing with own eyes rather than develop an understanding via layers of drama.
For example, Microsoft maintains a document that covers all of the data points contained in their .NET SDK telemetry: https://learn.microsoft.com/en-us/dotnet/core/tools/telemetr...
There's no telemetry for now, it's a proposal: https://github.com/golang/go/discussions/58409
Blabs on about the bureaucratic/ policy ends of collecting data from me and NOT what they want to impact? Geez not even one example of where a little data could've helped golang compiler progs and users? My immediate reaction? Def negative
GitHub issue link or some forum/board with context/discussion on this topic?
https://github.com/golang/go/discussions/58409
I think this assertion and the various sentiment around it is nonsensical and partly demonstrates why "they" were actively moderating as they attempted to have a rational discussion about a topic with human beings online.
Some of the moderator decisions were stupid; many were not ("You can stick your telemetry where the sun doesn't shine" is no doubt sincere but it's not LKML I suppose); much of it seems to have been attempting to keep stuff organized and not-repetitive.
[1] https://www.theregister.com/2023/02/10/googles_go_programmin...
Seriously, though, I think this kerfuffle pretty much cements Rust as the go-to native-compiled network infrastructure language for future projects.
Operating system is already a spyware and next arms race is for everyone to arm their compilers. Good going, product managers.
I agree that I (in theory) quite like some of the design decisions, but as far as I know nothing of this actually works in practice. Like, it's not even close to being production ready, and people are seriously doubting whether the language will ever even come close to being a viable option.
I'm not up to date on all of the issues (in the code or in the community), but the last thing I heard is that the developers of V are still working on the "auto-free" memory management model (which is supposed to infer when 'free' needs to be called), but it's not working (and afaik proven to be undecidable in general).
Edit: Another reason why I'd be rather skeptical of this language is the claims it makes on the 'Compare' page: https://vlang.io/compare
It starts off stating that "V was created because none of the existing languages had all of the following features:" and then goes and lists an incredibly ambitious list of features, which essentially amount to "As safe as Rust, but Go's simplicity and fast-compilation time, and a small compiler with zero dependencies", and more. These are hard problems, especially if you're also working on developing an experimental memory management technique.
They themselves don't claim it to be production ready and I don't think it is going to be anytime soon.
EDIT: Typo.
It’s going to be utterly inconsequential for everyone who leaves it enabled.
People who are raging about the change are not crusaders for privacy and freedom, they’re petulant children who “don’t like the idea of it” and are throwing tantrums.
If it’s that important, there are plenty of languages that put idealism over pragmatism to choose from.
When you install a compiler who's respecting your privacy, and without opt in it starts sending telemetry, you can't expect that to go well.
Now naming people like this isn't going to help either I think.
Are the currently deployed and used versions of the go compiler going to suddenly start sending telemetry? Or is it just a future version that someone would have to deliberately upgrade to?
Personally, when a new version of golang comes out, I like to read the release notes and then adjust my build environments with the necessary environment changes for the new features.
regardless i think we should hold open source projects to higher standards, such that telemetry isn’t introduced by default.
What is the privacy bait and switch? The whole idea behind "anonymous usage statistics" is that it's statistical and anonymous, so that it by definition has no privacy consequences.
If that doesn't hold up (e.g. it leaks a username, a path, anything) then there should be outrage. But this discussion isn't about that. Or about the fact that it could be worse, or have a bug.
The interesting question is: is it acceptable to have telemetry that is anonymous and statistical? And if not - why? The argument "it doesn't respect my privacy" can't apply then.
It can be called anonymous when it goes through TOR to be sent, etc… which is not even considered afaik.
If you rely on the receiving party to not store your IP and other sent details, then it’s not anonymous. Sadly, some companies get evil, get compromised or get internal threats…
And yeah, opt-in is minimum or the software is called a spyware. And yes, with this definition recent Windows is a spyware.
If you want an argument about privacy, watch the insightful talk by Halvar Flake on security vs. death squads… chilling but sadly true.
The simplest argument for this is: if you don't trust the provider then why on earth would you trust that the "no" actually means no!? The compromised or evil organization would send your data anyway. And if they are really evil they wouldn't do it as part of the telemetry they'd just exfiltrate it in whatever way necessary. That's why I think the telemetry thing is a much smaller issue than it seems when it comes to privacy. It's already blind faith.