I've been contributing to the community repo quite a bit[0] for the past few months, and it's exciting that winget has hit 1.0. There's now a decent enough CLI for installing/uninstalling Windows applications, presuming they are well behaved (of course, many are not, but being able to winget uninstall iTunes instead of going through Add/Remove Programs or the modern Settings app is a heck of a lot easier). And there's now a reference implementation (and documentation) for hosting your own source, which means that you don't have to pay Chocolatey or Microsoft (for SCCM) if you just need simple patching of applications on your endpoints and don't want to rely on the community repo.
Sure, portable/loose binaries aren't supported yet, but other than that, there aren't a lot of major things that winget can't do that Chocolatey can, and this is included (or will be included) in the box with the App Installer in Windows 10, so you don't have to bootstrap it.
0: honestly, probably have been committing too much. It's easier than going outside, even if it pollutes my GitHub history.
Windows 10 is going to become a better option for Linux development than MacOSX : before, it was already good with WSL1 and 2, and the lighter options like msys2.
With that, all I need is a better filesystem to move disks with unix permissions.
I predict BRTFS or another "modern" filesystem like XFS will soon be supported out-of-the-box.
> ...anything competes with Mac OSX terminal out of the box...
Would you like to explain how? Maybe not iTerm2, but the Windows Terminal is a pretty capable terminal compared to Terminal.app and it's development progress has been phenomenal.
> WSL1 and 2 aren't super approachable even now...
How so? WSL2 ships with a full Linux kernel, the GUI/Audio support has already hit Insiders and installing Ubuntu is literally two clicks on the MS Store.
You're kidding, right? It's less than 5 minutes of setup. We spend more time on Google/StackOverflow trying to find the right setting for Docker or other random things.
It takes very little effort to setup them up, you can install via Windows Store, and start the VMs like any Windows program. What's not approachable?
> the terminal (the new and old) are pretty limiting
Windows Terminal is a big leap forward, but it still feels clunky compared to terminals in OSX/Gnome/KDE. It's little things, like copy/paste or even highlighting text - the lack of a right-click context menu is frustrating. But it's still a welcome effort, and native ssh support means I can rely on putty a little less.
Homebrew is very bad, probably one of the worst package managers I've used, and light years worse than Arch Linux pacman or apt, which I'm not a fan of, but better than Brew.
It's certainly one of the better macOS package managers, just because it's the most used — so it has more packages than the competition.
I've only spent a lot of time with homebrew, apt, yum, dnf, pacman, and the latter is miles ahead in speed, efficiency, with the only drawback behind non-sensical option mnemonics: so instead of `pacman update all`, you get used to doing `pacman -Syu`
Then add Arch Linux's AUR, and you get the best ecosystem in the Linux world bar none.
Not the one you're asking but I use snap, flatpak, apt, nix, and guix all on one laptop and nix and guix are far and away the finest, minus the invisible autoupdates of snap, a feature which tons of people hate but I love.
Any package manager that manages mutable and non-deterministic packages should be doused in gasoline and set aflame.
It can be hard to say what's best altogether, since paradigm (rather than individually differentiating virtues) might dominate a user's preference or need.
There's a set of common problems that all package management systems eventually have an opportunity to address, and each tradition is committed to a few fundamental tradeoffs in its solution to those common problems. Additionally, there are problems specific to each paradigm, and solutions within a given tradition address those with varying degrees of success. Package managers generally inherit the virtues and defects of their traditions when it comes to how they solve the common problems, but they can excel individually in terms of how well they resolve the problems specific to their paradigm.
Incidentally, Homebrew is a ‘traditional’ source-based package manager, but it's also been developed more or less naively (i.e., without serious examination of any other package managers in any tradition). So it has most of the annoyances that are common to traditional source-based package managers, and it additionally bungles a lot of the fundamentals compared to competitors in its class.
As for what's good: how detailed of an answer do you want?
Not for casual use. There's no reason to use BRTFS or XFS on single-drive computers, unless you have a specific need for something like snapshots or checksums. BRTFS does let you do crazy things like split a single drive into 2 partitions, and run them RAID1.
Very sad to see an alternative view point downvoted. I've used professionally Linux, Windows and macOS, and I agree with your assessment.
Issues I have with macOS dev I don't have with WSL 2 or native Linux:
- crappy Docker performance. Need hacks such as NFS mounts.
- case insensitive filesystem. I had to create a special volume for MySQL on a case-sensitive version of HFS or some client projects would fail with random errors
- I'm not a fan of Homebrew.
- BSD coreutils are not as good as GNU's (YMMV)
- it might be a certified UNIX™, but the OS fights you if you try to work outside /Users or /usr/local. Changing a conf file in /etc means losing any modification on the next OS update.
- very definite feeling the machine isn't my own (SIP, Gatekeeper)
--
These days my OS of choice is Windows, and my second choice is Linux. macOS is great for any other task which isn't gaming or working as a full stack engineer.
It's all fun and games until you try to expose a networked application from within WSL2. Throw Docker into the mix and you've wasted half a day configuring this nonsense.
I’m hoping winget can soon support an option to set the default install drive / directory[1].
Microsoft really needs to realise that I don’t want absolutely everything cluttering my M2 SSD boot device for a reason, I have other drives. Visual Studio’s installer is another big culprit here.
Why? Has MS not heard of Chocolatey? pretty much does it, and is just popular enough that most things are available there. They had 20 years to do it, and decided to do it when not needed.
Like Firefox instead of improving the browser speed and reduce bugs, just keeps implementing existing extensions that they will not do better.
I can see the strategy "wait for someone to crack it, and then copy", it just seems petty and a waste of time
Maybe it's because they don't control Chocolatey. Everyone will switch to WinGet once it's somewhat on par just because it's the default, or because MS introduces integrations with other MS stuff.
Even though I didn't expect much I'm still disappointed after using it a little. It's very rough around the edges.
When I run 'winget list' It says I have Firefox 88.0 installed and there's an update for 88.0.1. But then I run 'winget upgrade Mozilla.Firefox' and it says 'No applicable update found'. Very similar stuff happens even for very popular Microsoft apps like VS2019 and VSCode, there it runs the installer but either doesn't update at all (VS2019) or winget thinks it's perpetually out of date (VSCode). For most other packages it cannot even link the listed application-id to the corresponding winget package, even if it definitely exists.
I understand it's all very variable and nonstandard in the Windows ecosystem, but I think it should be possible to get the versioning mostly right and build a much better database of application-ids and corresponding package names.
34 comments
[ 3.4 ms ] story [ 77.9 ms ] threadSure, portable/loose binaries aren't supported yet, but other than that, there aren't a lot of major things that winget can't do that Chocolatey can, and this is included (or will be included) in the box with the App Installer in Windows 10, so you don't have to bootstrap it.
0: honestly, probably have been committing too much. It's easier than going outside, even if it pollutes my GitHub history.
With that, all I need is a better filesystem to move disks with unix permissions.
I predict BRTFS or another "modern" filesystem like XFS will soon be supported out-of-the-box.
WSL1 and 2 aren't super approachable even now, and the terminal (the new and old) are pretty limiting.
Would you like to explain how? Maybe not iTerm2, but the Windows Terminal is a pretty capable terminal compared to Terminal.app and it's development progress has been phenomenal.
> WSL1 and 2 aren't super approachable even now...
How so? WSL2 ships with a full Linux kernel, the GUI/Audio support has already hit Insiders and installing Ubuntu is literally two clicks on the MS Store.
[1]: https://docs.microsoft.com/en-us/windows/wsl/install-win10
It takes very little effort to setup them up, you can install via Windows Store, and start the VMs like any Windows program. What's not approachable?
> the terminal (the new and old) are pretty limiting
Windows Terminal is a big leap forward, but it still feels clunky compared to terminals in OSX/Gnome/KDE. It's little things, like copy/paste or even highlighting text - the lack of a right-click context menu is frustrating. But it's still a welcome effort, and native ssh support means I can rely on putty a little less.
It's certainly one of the better macOS package managers, just because it's the most used — so it has more packages than the competition.
Then add Arch Linux's AUR, and you get the best ecosystem in the Linux world bar none.
Any package manager that manages mutable and non-deterministic packages should be doused in gasoline and set aflame.
There's a set of common problems that all package management systems eventually have an opportunity to address, and each tradition is committed to a few fundamental tradeoffs in its solution to those common problems. Additionally, there are problems specific to each paradigm, and solutions within a given tradition address those with varying degrees of success. Package managers generally inherit the virtues and defects of their traditions when it comes to how they solve the common problems, but they can excel individually in terms of how well they resolve the problems specific to their paradigm.
Incidentally, Homebrew is a ‘traditional’ source-based package manager, but it's also been developed more or less naively (i.e., without serious examination of any other package managers in any tradition). So it has most of the annoyances that are common to traditional source-based package managers, and it additionally bungles a lot of the fundamentals compared to competitors in its class.
As for what's good: how detailed of an answer do you want?
I've been using Linux with ext4 for quite some time. Am I missing out on something by not using BRTFS or XFS?
I can't speak to the benefits of XFS.
Issues I have with macOS dev I don't have with WSL 2 or native Linux:
- crappy Docker performance. Need hacks such as NFS mounts.
- case insensitive filesystem. I had to create a special volume for MySQL on a case-sensitive version of HFS or some client projects would fail with random errors
- I'm not a fan of Homebrew.
- BSD coreutils are not as good as GNU's (YMMV)
- it might be a certified UNIX™, but the OS fights you if you try to work outside /Users or /usr/local. Changing a conf file in /etc means losing any modification on the next OS update.
- very definite feeling the machine isn't my own (SIP, Gatekeeper)
--
These days my OS of choice is Windows, and my second choice is Linux. macOS is great for any other task which isn't gaming or working as a full stack engineer.
The best option for Linux is Linux distribution.
Microsoft really needs to realise that I don’t want absolutely everything cluttering my M2 SSD boot device for a reason, I have other drives. Visual Studio’s installer is another big culprit here.
[1] https://github.com/microsoft/winget-cli/issues/201
Like Firefox instead of improving the browser speed and reduce bugs, just keeps implementing existing extensions that they will not do better.
I can see the strategy "wait for someone to crack it, and then copy", it just seems petty and a waste of time
When I run 'winget list' It says I have Firefox 88.0 installed and there's an update for 88.0.1. But then I run 'winget upgrade Mozilla.Firefox' and it says 'No applicable update found'. Very similar stuff happens even for very popular Microsoft apps like VS2019 and VSCode, there it runs the installer but either doesn't update at all (VS2019) or winget thinks it's perpetually out of date (VSCode). For most other packages it cannot even link the listed application-id to the corresponding winget package, even if it definitely exists.
I understand it's all very variable and nonstandard in the Windows ecosystem, but I think it should be possible to get the versioning mostly right and build a much better database of application-ids and corresponding package names.
Microsoft: Check out Windows Package Manager!