@Antipath1 made some specific comments on the PR and I responded there, so I’ll just repost that here rather than write another post with roughly the same content.
@Antipath1: Knowing the exact size, geographic distribution, OS breakdown, packages and version usage of the Julia user base is incredibly valuable business intelligence for JuliaHub. Pretending this massive infrastructure shift is about better funding proposals for packages is incredibly transparent, deeply frustrating and insulting to our intelligence.
Several points here:
- This infrastructure isn’t owned or operated by JuliaHub.
- We (the JuliaLang project) already have rough geographic distribution, OS breakdown, packages and version usage data by request count, just not by number of unique clients.
- This information has zero business value to JuliaHub aside from the fact that being able to show that Julia is popular overall is useful to reassure people that a Julia-focused business is legitimate.
Frankly, these days since Julia is regularly in the top 20 on various language indices and our rough estimates of the number of Julia users from other sources have climbed into the millions, showing overall Julia usage is just not that much of an issue. To the extent that this helps demonstrate Julia popularity, this provides the same value to JuliaHub as it does to any company or organization betting on Julia. What is much harder is showing the popularity of individual Julia projects, and many of them have really struggled with this, which is what this aims to solve.
Also: how do we know that there are millions of Julia users? Well, the Julia VS Code extension has over a million users, which we know thanks to user-level telemetry collected by Microsoft, which somehow no one seems particularly upset about. That is the same company that also knows every time you clone a GitHub repo. Will they tell the Julia community that info? Nope.
Or maybe other FOSS package managers haven’t tried to implement this not because they were waiting for a stroke of cryptographic genius, but because they actually want users to trust their package managers not to phone home and respect them enough to not turn their open source package managers into corporate spyware.
Python published raw PyPI request logs with IP addresses unmasked for decades until GDPR made it illegal to do so. Go’s package servers are literally hosted and run by Google and they collect the level of telemetry you’d expect based on that (they don’t actually tell you what they collect). Our stance before and after this is significantly more privacy-respecting than most package managers. And again, this is the Julia project; JuliaHub has nothing to do with it; this doesn’t benefit JuliaHub specifically in any way.
This should not be buried in a changelog. If this massive shift in the ecosystem’s trust model is ever forced through (which it absolutely should not ever be), it needs to be at the very top of the list in every single Julia forum.
A fundamental change to telemetry requires dedicated, standalone announcements on Discourse, Slack, and Zulip and not be hidden as a small bullet point in a file full of Pkg.jl updates. At a bare minimum, this should print a big red warning in the REPL so users actually know they are being enlisted as telemetry nodes. At the minimum.
It’s not like this changelog is the only place it’s mentioned — I’m not exactly trying to keep this a secret. I’ve posted about it on Slack and Discourse. I’m even giving a JuliaCon talk about it. Is there somewhere else you think I should post it to?
Shipping this as an opt-out default is a massive violation of user trust. I am completely opposed to this ever being merged, but pushing it through without cryptographic peer review from actual, credentialed cryptographers is completely reckless. (Vetting a novel cryptographic protocol via a Discourse thread, a Slack channel and the LLM Claude is not a security audit).
I’m definitely planning on submitting it for peer review. That takes a long time, unfortunately, and one of the major issues with deploying something in Julia clients is that the lead time on that is long and unlike servers, we cannot simply deploy new code and have it take effect immediately. If it’s what the community seems to prefer, we can ship this in clients without turning the server-side on until it’s peer reviewed. If it passes peer review, then we can turn on the server side and instantly be getting client count estimates from all Julia versions since 1.14. If we wait until peer review happens and it’s published and then implement it in clients, we won’t be getting any data for about five years. (Note that people can easily verify that severs are not doing the protocol by checking if the https://pkg.julialang.org/hll_rsa.toml endpoint actually exists or not; or snooping on their own actual Pkg traffic with something like WireShark, to see if the headers are being sent.)
A word about peer review in general. Yes, it’s a good idea and it might catch something, but having three typically somewhat disinterested reviewers peruse a paper seems to me significantly less likely to catch issues than having a largish community of interested and highly mathematically minded people scrutinize it. So sure, peer review is a thing we should do, but it’s not some magical process that is guaranteed to catch problems. Research papers with massive issues get published all the time even in respectable journals.
Regarding opt-out vs opt-in: if it’s opt-in, it has zero value and there’s no point in doing it. Why? Because approximately nobody changes defaults for anything. Some tiny percentage of users will opt-in. If we knew what percentage opted in, then yes, we could estimate from there. But we don’t know what the percentage is, so if this were opt-in it would be totally useless.
This proposal is frankly a massive overreach. As a chemistry student whose research relies heavily on this language, I have invested immense trust into this ecosystem, and I absolutely refuse to blindly trust that JuliaHub won’t use my machine as a data-harvesting node. I do not care how mathematically sound the client-side cryptography is, because you cannot fix a massive institutional trust deficit using math. I massively distrust JuliaHub’s motivations here, and forcing this into the ecosystem, especially as an opt-out, is a terrible idea.
But even with maximum visibility, I fundamentally oppose merging this at all ever.
I hear you loud and clear and respect that position and appreciate you expressing it here. If this turns out to be the viewpoint of even a significant minority of the community, we will not ship this.
Regarding “I absolutely refuse to blindly trust that JuliaHub won’t use my machine as a data-harvesting node”: as I’ve said above, this isn’t being done by JuliaHub and doesn’t particularly benefit JuliaHub; there’s also no blind trust involved — this is open source and you can see exactly what the code on your system is doing. Calling this “data-harvesting node” seems like a pretty significant overstatement, given that this is explicitly and carefully designed to respect and preserve individual privacy as much as possible (more even—literally more than would previously have been possible while getting this info).
Meanwhile, do you use any closed source software? Google? If not, respect, but I bet you do. You use GitHub at least. You have no idea what that software is doing and it is actually turning all your devices into data harvesting nodes. But the recipients of that data are companies, and they don’t tell you what they’re collecting or how, let alone show you the code and explain what they’re doing, or allow it to benefit open source projects and communities.