Hacker News new | ask | show | jobs
by Isthatablackgsd 960 days ago
My issue with updates/downloading is the lack of software manager to updates software in Windows. It was a pain to go to various websites to download a package and install/upgrade a updated version. Back then when I have Win 98SE, I relied on FileHippo to scan and provide information if there are updates for my installed software. In XP and Win7, I only update software that have issue or something that I need to check. It was nice for some software that come with their own updater. I was thinking about my experienxe with Ubuntu (Ibex version) with their apt-get and the package manager. To my surprise, there are package managers for Windows, Chocolatey and Scoop. This was before Windows Store come to fruitation. Chocolatey is my main package manager for my Windows and I had been using it ever since. This allows me to have a peace of mind for me to updates my software particularly command line tools, Chocolatey made it easy for me and automate the environment variables for me if the software needs it. And no more for me to open up Google and search for the name of the software, `choco search <app_name>` and it will give me a list of the software and I just install from there. I use `choco upgrade all -y` and it just handles it without needing my input further.
1 comments

Starting with certain updates to Windows 10 there's also `winget` now out of the box installed as an alternative to both Chocolatey and Scoop.

https://learn.microsoft.com/en-us/windows/package-manager/wi...

The best thing about 'winget' is being able to have a powershell/batch script in you usb stick to install the last version of most of the software you use.

The only 'requirement' to use winget is updating Microsoft Store after installing Windows and install 'App Installer' from the Store, at least in Windows 10.

I've been slowly digging into Winget Configuration [0] since I started exploring the Dev Home (Preview) app on Windows 11. I still have too many machines that can't upgrade to 11 right now, but Winget Configuration seems a real neat way to bootstrap new machines. (I know that you can use Winget Configuration on Windows 10 without the Dev Home UI, but the UI is one of the more compelling things about it, I think.)

[0] https://learn.microsoft.com/en-us/windows/package-manager/co...

Winget is great package manager. I am staying with Chocoately due to WinGet have less software in their catalogue. WinGet are missing software that I regularly use in my Windows that I am able to get it through Chocoately.

It missing some like mupdf, TeX Live, Tixati, Q-Dir, Emulators, UMLs, etc. Through it have MiKTeX but I was burned by miktex's package update procedure weirdness.

The workflow to submit new packages seems easy enough, it's a simple PR process to a GitHub repo [0], if you want to try to help fix that.

The big thing is that winget requires "proper" MSI or MSIX-backed installers (MSIX, MSI, APPX, and most .exe installers) rather than scripts so given the list you've provided some of what you may need is to better help some of the upstream packages clean up their installers/fix bugs in their installers on Windows. (Package update weirdness sounds like a common class of installer bug, sadly.)

That installer focus is one of the things I like and trust about winget. For the most part it is really easy to verify that winget isn't automating much more than what you could do by hand: it is often grabbing the exact same installer you'd go to someone's website to grab, validating hashes for that installer, then running it (in silent mode). One of the reasons I gave up on Chocalatey years ago was too many "packages" were complex PowerShell scripts and I started feeling like I needed to audit every single one (and every version of it) before running it. Some of the "common" packages were full of opinionated scripts that were doing way too much, and some of the uncommon scripts would sometimes have malware in their scripts (and that may be a late change after years of good scripts, too); I reported it every time I saw it, but at some point you report too many and you lose trust in the whole ecosystem. At the moment trusting winget is still quite a bit easier, even after the burnout I had from choco.

[0] https://github.com/microsoft/winget-pkgs

That's also what is bad about winget - not having scripting language. AFAIK there were 0 incidents with choco scripts, they are mostly trivial to review (choco also has team of reviewers and no package can be published without being reviewed) and many tools simply can't be installed without PowerShell - the idea of "help some of the upstream packages clean up their installers" is irrational and unrealistic - some of those tools may be even done with the upgrades, which doesn't mean they shouldn't get a package.

Furthermore, many choco packages are embedded and contain the software, which means they can be cached (artifactory, nexus etc.) do not depend on vendor location and can work forever (like development dependencies). All of this makes winget vastly inferior to choco at this moment and suitable for hobby/home use, not serious things like maintaining CI/CD pipeline.

Choco package number and speed of update is on par with Arch.

The good thing about winget is it comes with Windows, which is probably the only one at this point.

I appreciate that we're probably going to continue to have opposite opinions on this.

MSI (and MSIX) are complex databases of pain, but they absolutely know how to uninstall everything that they are told to install and that machinery is well tested now across way too many Windows versions. On the other hand, if someone even bothers to test a script-based uninstall is a crapshoot.

> the idea of "help some of the upstream packages clean up their installers" is irrational and unrealistic

Not really, it is standard open source practice. Installers aren't the most interesting or glamorous thing to maintain so they often welcome any help that they can get.

Most Windows users still don't use any package manager in 2023 and still prefer good installers directly from upstream sources.

> some of those tools may be even done with the upgrades, which doesn't mean they shouldn't get a package.

Ruby's Windows installer has long been run by third party developers. Git for Windows started as a third party operation before getting officially blessed. Open source is full of instances where the person packaging the software is not the original developer. (That most of Linux packaging, even, it's not just a Windows phenomenon.) Without "official" blessing from upstream it can be hard to get people to trust your distribution, but if upstream isn't bothering with maintenance anyway, it is no longer their project. (That's also extremely common in Linux software packaging, new maintainers are often blessed because they did a good packaging job.)

> Furthermore, many choco packages are embedded and contain the software

My experience was very few of the packages I used did that and almost all revolved around some ad hoc Invoke-WebRequest or similar somewhere in their PowerShell scripts, but obviously that is my own anecdotal experience and I'm glad for you that you've had a better time trying to CI/CD with choco than I ever had.

Some people have built custom sources for winget to help with CI/CD scenarios. Out-of-the-box caching/CDN for the primary public sources is still an active discussion, but the neat thing is that it is an active discussion out on GitHub so that you can directly voice your "serious" use cases, if you wish. A good thing about winget is that it is extensible (custom sources) and developed in the open on GitHub (Chocolatey went corporate and a lot of discussion moved proprietary and some of it went closed source years ago).

> Open source is full of instances where the person packaging the software is not the original developer.

How is that different. You seem to compare about method/language used.

> MSI (and MSIX) are complex databases of pain, but they absolutely know how to uninstall everything that they are told to install and that machinery is well tested now across way too many Windows versions.

They can do whatever developer wanted to do. Otherwise, we wouldn't have those gazilions of special cleaners/uninstallers we have

> My experience was very few of the packages I used did that and almost all revolved around some ad hoc Invoke-WebRequest

It was the case in the history, 5+ years back. Now big number of packages are not like that. I personally do not use non-embedded packages for office work. See https://github.com/chocolatey-community/chocolatey-packages/...

> Some people have built custom sources for winget to help with CI/CD scenarios

Yeah, you can fix anything. I keep rejected choco packages on my github too.

> Out-of-the-box caching/CDN for the primary public sources is still an active discussion,

I wouldn't use CDN, its just one dependency replaced by another. Cashing is irrelevant if you do not embed the software.

> but the neat thing is that it is an active discussion out on GitHub so that you can directly voice your "serious" use cases

You can have active discussion on GitHub with choco guys. I am sure results in winget case are not going to be much different. In my experience, way more pain than being useful.

So, to recap, the setup is almost the same with choco being small company and MS not. Choco is vastly better with features. I am moving to winget for various other reasons, that I won't talk about here and it has nothing to do with the tech.