In addition to the shims issue, I keep being disappointed more today by digging deeper.
So, the search in scoop is unbelievably slow. It seems to drag on and on when adding more buckets, but even with just official source it can take over a minute to return. There’s an issue on this topic too. Seems like scoop search will parse all the JSON files from the local disk to perform search. And considering it’s written in PowerShell, which is not the fastest platform, it’s understandable. At the end of the day, you just have to give up on search or use third-party utils like scoop-search. This is a lot of unnecessary glue.
I guess user experience is pretty expected considering scoop is essentially a set of powershell scripts. Well, that’s OK for a prototype, but if a product is successful it’s worth rewriting it in something faster and more stable? Authors don’t think so.
I sort of like and hate autoupdate feature. There’s a bot running somewhere that will check for a new version of software. It’s using regular expressions to parse web pages and check for a new version. And most of the times it works.
It doesn’t work if a webpage has changed formatting though, so you’ll end up with a broken package or potentially installing something completely wrong. This is dangerous.
Scoop heavily depends on Git. In fact, it requires git to be installed locally, and package updates are actually a
git pull command. Sometimes it breaks, if your local git configuration is not perfect, as it’s using user-wide installation of git, not even a private to scoop. I really hate this.
Some packages are just a pain. For instance, installing
bat results in something really strange. Due to the fact that
bat will call
cat for simple display, and
cat is aliased by
busybox.exe cat it’s going into some mad interdependency and I could never manage to make
bat actually work.
busybox also conflict, because
vim.exe is also a shim in
busybox so depending on weather when you launch
vim you’ll either get real Vim or busybox Vim. I had to uninstall both from scoop and configure my system manually in order for it to be predictable.
This is due to how shims and path resolution work in Scoop. Most of the times it’s OK, but the times it isn’t it’s just horrible.
There’s no way to do CI/CD integration, other than to wait for scoop daemon to parse your webpage and detect a new version.
An expected process to publish a new version would be:
- Build your binary package.
- Authenticate to packaging server.
- Publish the new version via some REST API.
This is not the case with Scoop, you simply can’t do it.