Using tools from the base OS is really holding it wrong. Just like ftp.exe/Internet Explorer/Edge and Safari should only be used to download a usable browser, the Apple provided CLI tools should only be used to download the tools and versions of tools that you actually want.
Otherwise, you have no way to control versioning anyway. When the OS version is tied to the version of so many other tools, it's a nightmare. Apple is trying to push you in the right direction by basically not updating the CLI tools ever, even when upstream didn't change the license to something unacceptable for them to distribute as in the case of bash.
> Apple provided CLI tools should only be used to download the tools and versions of tools that you actually want.
Why? Why do I need to use 3rd party package managers, or manual installations from 3rd party sources to install common tools that aren't a decade+ outdated?
> When the OS version is tied to the version of so many other tools, it's a nightmare.
It doesn't need to be tied to anything. If the OS needs specific libraries/tools then they can be installed in a separate location. If there are new major versions of user-level tools (like bash) those should come by default, not some 15 year old version of the same tool, with the same license. Multiple linux distros have solved these problems in different ways 10+ years ago.
> Apple is trying to push you in the right direction by basically not updating the CLI tools ever
No, they are just neglecting the CLI ecosystem, the package management, and the many many outstanding bugs that have existed and been ignored for years.
Because the newer tools changed the licensing terms, and the corporate lawyers won’t let anything under GPL3 anywhere near anything if they can help it.
GPL2 was viral, but the terms were easier to stomach. Apple is allergic to GPLv3 code because there is a clause in the license requiring you provide a way to run modified version of the software which would require Apple to let users self sign executables.
This is a simple result of the GPL going where Apple will not, so OSX is stuck with whatever is MIT, BSD, Apache, or GPL2 licensed.
I like the GPL, I license my open source stuff under it, but it doesn’t work for all cases. Apple is fine with not using software licensed under the GPL, when it conflicts with other company principles.
> Apple is allergic to GPLv3 code because there is a clause in the license requiring you provide a way to run modified version of the software which would require Apple to let users self sign executables.
Wow, I don't know this before. Good job FSF! This, should, be, a, basic, right.
> Apple is allergic to GPLv3 code because there is a clause in the license requiring you provide a way to run modified version of the software which would require Apple to let users self sign executables.
Does that really add up though? You can install and run 3rd party software on macos without any signing needed.
- Whatever is shipped has to satisfy corporate policy.
- The GPLv3 does not do so.
That’s what matters. The only way what you care about has any impact on the above is if there is a meaningful impact for Apple for following the policy, and Apple suffering some sort of loss (be it monetary, PR, legal etc).
Thus far, the non-presence of GPLv3 software does not appear to have hit that bar.
Of course I'm important in this context. The context is literally me talking about issues that _I_ find with macos. Saying 'company X does Y because company X's policy is do to Y' is a useless truism that adds nothing to the conversation.
> Why? Why do I need to use 3rd party package managers, or manual installations from 3rd party sources to install common tools that aren't a decade+ outdated?
Because you want to control the version of 3rd party software.
> It doesn't need to be tied to anything. If the OS needs specific libraries/tools then they can be installed in a separate location
The OS installs tools in /usr/bin and you should install tools in a separate location. Apple provides a commercial UNIX, not a Linux distribution. /usr/local or /opt are traditional locations for you to place the 3rd party software you want to use on your commercial UNIX.
If you want the OS to ship with updated tools, of course it's tied to the OS version. Then if you want bash 70, you'll need to run macOs Fresno or later, or install bash 70 in /usr/local. You should just install your version anyway, and then you won't have to worry about OS versions (unless bash 70 requires kernel apis unavailable before macOs Fresno, in which case you're stuck; but most software isn't intimately tied to kernel versions)
We're not talking about keeping up to date with the latest revision of python / java here, it's a shell that's woefully out of date. Apple is not RHEL backporting fixes so binaries continue to run for 10 years - in fact they seem quite cavalier about backwards compatibility.
Upstream changed the license. Apple doesn't distribute GPLv3 software. Apple's not going to distribute a newer version. That's how license changes work. The old version continues to work as well as it always did; scripts written for the new version don't work, but why would you write a bash4 script for macOs?
Not that they were going to update bash regularly anyway. So if you needed a new version in the base, you'd need a new version of the OS. And then you're back to the same problem you have now. Apple doesn't distribute the version of the 3rd party tool you want for the OS you're on.
> The old version continues to work as well as it always did; scripts written for the new version don't work,
Right, so scripts written for bash4+ don't work - which is most of modern bash scripts..
> but why would you write a bash4 script for macOs?
The problem is that you have to write special scripts (among other things) just for macos. This is very real problem because most modern software companies run their stuff on linux, while the dev laptops/workstations are often macos.
Apple should declare Bash as deprecated, because they did everything to deprecate Bash, including replacing the default with Zsh, but classify it as such.
Maybe I’m and oddball, but I download third party package managers (or wrappers) on literally every OS I use.
Scoop, Chocolatey on Windows.
Brew on MacOS.
Amethyst on Arch.
Linux package managers eviscerate whatever is available on MacOS and Windows by a long shot.
Frankly if there’s one thing I want my OSes (excluding Linux) to keep their greasy paws off of, it would be my CLI and build environments.
I want to install and manage what I need, not be force fed whatever sludge comes out of Microsoft’s or Apple’s tainted teats. Manage and update the OS, don’t touch anything else.
Linux and MacOS package management is very different, because linux distros generally have first-class supported package management that comes with the OS.
> I want to install and manage what I need
Good luck installing what you need if someone hasn't made a port explicitly for macos.
Otherwise, you have no way to control versioning anyway. When the OS version is tied to the version of so many other tools, it's a nightmare. Apple is trying to push you in the right direction by basically not updating the CLI tools ever, even when upstream didn't change the license to something unacceptable for them to distribute as in the case of bash.