-
Notifications
You must be signed in to change notification settings - Fork 166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: remove .gz downloads for some platforms #1584
Comments
+1 as a server major change |
1 similar comment
+1 as a server major change |
Since we're revamping the list, for Windows we could create "self-extracting" 7z archives (add P.S. if we switch from |
How does removing an archive format for “not all” platforms reduce complexity? |
When you say “us”, I’m not sure who you mean - don’t the tools manage creating those archives in the first place? |
I meant the BuildWG (and maybe the Releasers). We would have less need to make sure tools are available and properly configured on all platforms, and that pack & deploy scripts are correct and run to completion for less artifacts. P.S. we could also delegate GZIP compression to the HTTP layer, since AFAIK all (reasonable) HTTP clients have builtin GZIP decompression built in, and if not the protocol degrades gracefully (for example that's what S3 does). |
P.P.S. We could also go for the lower common denominator and pull the .xz and .7z packs ¯_(ツ)_/¯ |
or we could just offer one compressed bundle per platform, ditch xz on darwin, ditch 7z on windows, only offer .gz source and headers, it'd be really nice to have fewer items to check to confirm a valid release and fewer requirements for a release build machine |
I guess I'm unclear on why all of this isn't a single automated tool, such that it's any easier to check 1 format over 50. |
We have |
Certainly if the cost of a certain format and/or platform is too high, then it's reasonable to explore removing it - but I'd hope that prior to doing so, all efforts to automate it would be exhausted (or deemed impractical). |
Ack. |
This isn't going to be a massive reduction in complexity, fairly minimal in the scheme of things, but it's directional. From the beginning we've expanded our complexity rapidly because we can, some of it for the challenge or apparent convenience, a lot of it just because we can and have the resources. But then when the crunch comes we feel it. The Build WG is regularly on the receiving end of criticism because when stuff doesn't work, everyone feels it. But of course when stuff's working it's taken for granted. The breakage happens because of complexity, I suspect if we did a root cause analysis of our failures in the last couple of years we'd blame complexity for most of them. So what I'm proposing here is not a huge bite out of complexity, it's a slight reduction but it gets us in the right direction. Lots of small steps like this, and a bit of resistance to expanding complexity will go a long way to making our resources (infra and people) more resilient. Cost/benefit critique of this proposal in isolation is welcome of course. |
Oh, and I forgot to say also that I consider calls for getting the Foundation to pay people to maintain our infrastructure as a sign that we've bitten off more than we can chew and we should scale back. If we've really grown that complex that we need to pay people to maintain it then we're doing it wrong. |
My personal view is that if complexity is the driving reason then it makes more sense to drop the On Windows I would keep the Of course this means uses less efficient compression formats/algorithms (which is why I think we're using |
Not entirely. And, since it's baked into The |
@ljharb from my viewpoint even though the generation distribution is automated, the issue is handling the cases when that automation fails. The more files, the higher the possibility for transfer failures etc that have to be investigated fixed then failures occur. I think the key question is what the impact will be to end users if we remove *.gz files and as long as we think that will be limited (which it sounds like is the case) then its worth having less files to generate/transfer. Overall I'm +1 on a SemVer boundary. |
@mhdawson when you say “transfer failures”, is resumable rsync and checking file signatures not available? I’d assume a tool could keep hammering until each file was delivered without human intervention. In general i understand the point, but I’d contrast the effort to fix an occasional failure with the ability for some node users to directly use the smallest archive format they support ¯\_(ツ)_/¯ |
IMHO the "built in" zip in windows is a toy (in my machine-bootstrap-script it's one of the first things I uninstall). And I do like the dual nature of self-extracting-files (which could include a setup script) or NSIS installers (which are trivially extractable as archives). So we could sign it as well, as we already have to have signing in our pipeline. |
@ljharb I think the problem we're having boils down (again) to our limited resources. The tools and scripts you're describing exists, and time was invested in developing and even improving them, but they are still not good enough ¯_(ツ)_/¯ |
This issue is stale because it has been open many days with no activity. It will be closed soon unless the stale label is remove or a comment is made. |
I'd really like to explore ways to simplify our deliverables. The complexity of our infra constantly gets us into trouble.
The Linux kernel stopped offering .gz downloads long ago, so perhaps its time to follow suit? Unfortunately
xz
isn't on many minimal distributions, like some popular Docker images. e.g. it's not on any debian or ubuntu images, but it is on centos:7. Of course it's a pretty trivial install almost everywhere. Buttar
does come with everything and-J
is natively supported so I'm pretty sure where you have a modern distro, you can unpack .tar.xz files. Onalpine:latest
you can even dowget https://nodejs.org/download/release/latest-v11.x/node-v11.2.0-linux-x64.tar.xz -O - | tar -Jxv
without anything extra installed, none of the Ubuntu or Debian images come with eithercurl
orwget
so you have to install stuff anyway.AIX and macOS are the awkward platforms for .xz files. We don't even offer .xz for AIX and you have to install a third-party package to even use them on macOS. So we could keep offering them there.
Headers are also awkward because they're consumed across all platforms and gzip is easy everywhere. node-gyp even consumes them in native Node with just a gzip stream. Full source packages are similar. So we could keep headers and source as both.
Here's our current list of deliverables:
We could trim that down to:
Thoughts @nodejs/build & @nodejs/version-management?
(edit: to be clear, this would be something we do from a particular version forward, not impacting existing release lines. So maybe Node 12+).
The text was updated successfully, but these errors were encountered: