I'm pretty sure this is simply you expecting GNU and actually getting FreeBSD-based tooling. It's not wrong, it's just different than what you expected.
I'm pretty sure this is simply you expecting GNU and actually getting FreeBSD-based tooling. It's not wrong, it's just different than what you expected.
But if you want to contend that anything that is solveable via customization/3rd party packages is a 'total non-issue', then I fail to see how you could argue that Linux isn't superior to MacOS in every single way.
Or you mean, you work at FAANG and you can run your web application which is 0.01% of the stack on your mac?
> they do not even focus on desktop software and are mostly web companies and the tooling is all backend where SWE machines do not do any heavy lifting.
The web frontend/ui is a relatively small portion of the development that goes on at typical FAANG. And the reason the macs 'do not do any heavy lifting' is because they literally can't - most of the complex backend systems, low low level/high performance code, etc can't be run on macos.
Of course it will if it's a linux laptop. Companies even give exceptions for linux laptops for exactly this reason.
> This is a stupid position to take, because people care more about whether they can spin up a development environment, not run all the code that goes to production.
You think being able to run the code you're working on is not a requirement for a good development environment? Or you think nobody writes this code, it just magically appears in production when you deploy your html page? Lmao.
> Many software companies (including FAANGs) have basically given up trying to support building/running most of their software on mac for these exact reasons
Why would Amazon or Google waste a single minute trying to get software to build on Macs that are targeted to run on Linux servers?
Exactly what point are you attempting to make?
Running the entire AWS stack on macos is literally impossible at this point because major pieces aren't even built for macos (and can't be without major rewrites).
Amazon “suppprting” Macs mean outside developer support like AWS CLI, CDK, SAM, Amazon Chime, etc.
Of course we all spun up Isengard accounts when we needed a lot of CPU horsepower or to run some dependencies instead of running something locally. Why wouldn’t you? You worked at the only company that never had to worry about a large AWS bill.
Also all of the internally written MDM tools also supported Macs.
You literally just claimed everyone at Amazon uses macs for development and runs their code on their macs. This is not the case for the vast majority of code written at Amazon.
> Amazon “suppprting” Macs mean outside developer support like AWS CLI, CDK, SAM, Amazon Chime, etc.
Nobody said anything about 'amazon "supporting" macs' and what that means except you, just now, when you moved the goalpost.
> Of course we all spun up Isengard accounts when we needed a lot of CPU horsepower or to run some dependencies instead of running something locally.
What? Using remote development environments/ec2 boxes is literally the default at AWS and it has nothing to do with 'CPU horsepower'. Most of the ec2 instances used for development are far less powerful than a macbook pro.
When a developer puts a laptop in their Amazon issued backpack, what type of laptop do most of them use?
I’ll never install homebrew as long as the dev continues this amateur hour bullshit.
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.
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.
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.
Simple as.
Wow, I don't know this before. Good job FSF! This, should, be, a, basic, right.
I don't believe the license allows them to charge an extra fee for this, and for good reason. It deters hobbyists from doing it.
> You can’t alter them sign a system binary.
What's a "system binary"? The bash executable runs entirely in user mode.
Does that really add up though? You can install and run 3rd party software on macos without any signing needed.
Apple can be fine with whatever they want and choose whatever principles they want. Doesn't mean it leads to good software or that I need to like it.
- Apple is shipping stuff out to customers.
- 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.
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)
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.
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.
It would be better to have a dev vm or use an os that you can run a real server on. FreeBSD, Linux, Windows, maybe Solaris.
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.
> 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.
I hate it.
https://en.wikipedia.org/wiki/Server_Message_Block#Netsmb:
“NSMB (Netsmb and SMBFS) is a family of in-kernel SMB client implementations in BSD operating systems. It was first contributed to FreeBSD 4.4 by Boris Popov, and is now found in a wide range of other BSD systems including NetBSD and macOS“
https://appleinsider.com/articles/11/03/23/inside_mac_os_x_1...:
“The upcoming release of Mac OS X 10.7 Lion Server will remove the formerly bundled open source Samba software and replace it with Apple's own tools for Windows file sharing and network directory services”
I also think they complete removed AFP support.
There actually is a reason. It's not lack of maintenance.
It's because Bash 3.2 is the last version licensed as GPLv2. Bash 4.0 and later changed license to GPLv3.
Apple decided it's not safe for them to ship any software with GPLv3 with macOS, because of stronger legal conditions in GPLv3. This is also the reason they stopped updating Samba.
They changed the default shell to Zsh long ago. The old Bash is kept around, so that users who want to stick with Bash can still use it as their shell, and so that existing scripts for macOS (for example in installers) continue to work. If nobody cared about Bash, I expect they would have dropped it from macOS when switching to Zsh, rather than keeping the old version.
So from a certain point of view, Bash 3.2 is the most recent version they can ship.
As for other tools like "cp", "ls", "rm", "touch", etc. I agree they are annoying on macOS, when you are used to the versatile GNU/Linux command line options. I sometimes type options after filename arguments due to habit on Linux. macOS commands very annoyingly treats those options as filenames instead. And I miss options like "touch --date".
However, this is not due to old tools. Those differences are just how up current (up to date) BSD commands work. They are just a different unix lineage than Linux.
The GNU tools were intentionally written to be more user-friendly than traditional UNIX™ tools, which is why the command line options are generally nicer. GNU/Linux systems come with GNU tools of course. macOS never did because it is derived from BSD and comes with BSD tools (with Apple enhancements, like "cp -c").
You get the same on most other unix environments that are not GNU/Linux. People install the GNU tools on top, if they want the GNU command line experience instead of the default. Sometimes with the "g" prefix (like "gls", "gtouch" etc.).
These days, even if Apple decided it's worth the technical fallout of switching from BSD command line tools to GNU, they wouldn't do it for the same legal reason as what keeps Bash at 3.2: The current GNU tools are licensed as GPLv3.
Apple could choose to be GPLv3 compliant tomorrow, if they wanted to.
What up-to-date BSD are you referring to? The commands on different forks of BSD like FreeBSD vs OpenBSD are not the same. And quickly looking at the man pages of latest FreeBSD vs MacOS versions of ls, for example - they are not the same.
> These days, even if Apple decided it's worth the technical fallout of switching from BSD command line tools to GNU, they wouldn't do it for the same legal reason as what keeps Bash at 3.2: The current GNU tools are licensed as GPLv3.
What actually prevents them from including GPLv3 software?