CLI tools/shell is attempting to follow more-or-less standardish unix/linux setup but fails pretty hard, with many of the same commands existing but behaving just differently enough to be annoying.
Uses it's own set of shortcuts, different from what's standard on windows/linux and most other operating systems.
Not sure what people mean when they say completely vague and ambiguous things like 'usability' and 'comfort' - are you referring to the fact that it has rounded buttons and corners and pretty ads?
It basically falls in between a standard windows and highly modified ubuntu setup, but does far worse at both. The UI, apps, etc is far more buggy and unintuitive than windows, and the os is far less 'unix' and far less customizable than ubuntu.
> Unix tools/shell is attempting to follow more-or-less standardish unix/linux setup but fails pretty hard, with many of the same commands existing but behaving just differently enough to be annoying.
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.
Not at all. As a single example - macos comes with an extremely outdated version of GNU bash (3.2) from 2007. And yes, this has consequences in that many modern bash scripts depend on bash 4+ (current latest GNU bash is 5.2+).
> 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?
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.
> 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.
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?
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.
Unfortunately this will never be fixed. It's not a technical problem. They refuse to ship software licensed under GPL v3, and bash 3.2 is the final GPL v2 version.
I wonder why they haven’t fixed it yet by removing bash and the other GPL-licensed tools. Even if they currently need one to boot the system, they have the resources to change that.
“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“
“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”
Zsh has been the default shell on MacOS for ages now. If you need a more modern bash then you can easily install it using brew or other common package managers. This is a total non-issue.
Of course shipping a very outdated tool with your OS is an issue. And the fact that you need to use 3rd-party package managers to update/replace it is also an issue.
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.
It's not an issue even if you say it is. Takes 1 minute to setup brew on a fresh Mac, third party or not who cares when it's open source, apt is also open-source and in the same sense a third party someone develops, you just get that with the base Debian like systems, if we start counting the minute wasted to setup brew then you waste more time to install Debian in the first place, Macs come pre-installed.
It literally is an issue, and the fact that you're pointing out a potential solution should make that obvious to you. Many software companies (including FAANGs) have basically given up trying to support building/running most of their software on mac for these exact reasons, and they have really tried - dedicating hundreds of experienced engineers to the problem.
I call BS on the FAANG statement. I work at FAANG and 80% SWEs use MBPs, actually if we go by literal meaning of FAANG company list, 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.
You work at FAANG and you can run your entire stack on MacOS? Which FAANG?
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.
The complex backend code isn’t going to work on your little laptop either. 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.
> The complex backend code isn’t going to work on your little laptop either.
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?
Just because your machine runs Linux and the server runs Linux doesn't mean the code is going to work on your computer. How are you supposed to test failover on a cluster that kicks in when hitting 100k QPS? It's just not practical to run the whole stack locally on your machine.
You're completely wrong. I worked at Amazon (AWS) for years, yes developers generally use macs, but they generally cannot run their entire stacks on mac. Most of the actual software people work on is run on remote linux (AL2) ec2 instances after syncing the code from mac.
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).
No one is going to run the entire AWS stack on their Mac when it’s targeting Linux.
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.
> No one is going to run the entire AWS stack on their Mac when it’s targeting Linux.
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.
I’m trying to understand what point you are trying to make? If you are going to run software on Amazon Linux, why would Amazon waste time trying to get software to run natively on Macs?
When a developer puts a laptop in their Amazon issued backpack, what type of laptop do most of them use?
As someone who uses Windows, Arch with Hyperland and MacOS almost daily. I am immensely curious about what you find inconsistent and buggy about macOS? In my experience that’s been the least buggy and inconsistent of the three.
My Mac and Linux shortcuts align more than my Windows and Linux/Mac ones. For the most used ones it’s CMD + whatever the standard key is for that shortcut, instead of Control. Overal I prefer that the Super key is more useful than what has been the default for many years with Windows.
I also use the CLI for virtually everything on Mac and Linux, MacOS isn’t all that different and feels more like another Linux flavour than it’s own beast.
The only UI gripes I can think off immediately is no window snapping and closing the window doesn’t mean you’ve exited the application. The first requires a third-party tool (I recommend Rectangle), the latter is a change in behaviour.
Frankly I’m not really all that interested in defending MacOS, but I hope you realise that saying “very buggy and inconsistent” without naming anything specific isn’t any less vague and ambiguous than “usability and comfort”.
Your reaction comes off as “I’m used to this, therefore the other thing is bad and unintuitive.” I’m sure this isn’t your intention, so specifics would be illuminating.
> I am immensely curious about what you find inconsistent and buggy about macOS?
I posted a list of recent issues I've run into elsewhere in the thread, but there are many bugs and inconsistencies in macos:
- Doc breaking/becoming inaccessible.
- Running app windows disappearing/becoming inaccessible.
- Cursor/caret disappearing when editing text.
- Can't move windows between workspaces.
- Constant issues with external monitors.
- Switching between windows via command-tab regularly breaks.
These are all well-known issues that have existed for years. If you google them you will find threads and workaround from 5+ years ago.
> My Mac and Linux shortcuts align more than my Windows and Linux/Mac ones
Because.. you changed your linux shortcuts to match macos? The most obvious example is that ctrl+c/s/v etc are instead command+c/s/v on macos.
> I hope you realise that saying “very buggy and inconsistent” without naming anything specific isn’t any less vague and ambiguous than “usability and comfort”.
There are literally dozens of examples of issues listed in this thread. I hope you realize that saying 'give me examples' when there are many many examples all around the post your replying too is a bit disingenuous. I can't keep repeat ing what I've already posted in the thread in every single comment.
> I posted a list of recent issues I've run into elsewhere in the thread, but there are many bugs and inconsistencies in macos:
>
> - Doc breaking/becoming inaccessible.
>
> - Running app windows disappearing/becoming inaccessible.
>
> - Cursor/caret disappearing when editing text.
>
> - Can't move windows between workspaces.
>
> - Constant issues with external monitors.
>
> - Switching between windows via command-tab regularly breaks.
>
> These are all well-known issues that have existed for years. If you google them you will find threads and workaround from 5+ years ago.
I am not pretending MacOS is bug free, again I was just asking for your issues with the OS. But from what I've seen in your replies it seems you post-hoc justified your opinion by googling for known issues.
Unless you're claiming you have all of these issues, constantly and consistently?
Even a Mac does well with the occasional reboot, I have never had a system that was completely issue free. Be it Windows, Mac or Linux.
>> My Mac and Linux shortcuts align more than my Windows and Linux/Mac ones
>Because.. you changed your linux shortcuts to match macos? The most obvious example is that ctrl+c/s/v etc are instead command+c/s/v on macos.
I literally said in my post that the most common ones have CMD instead of CTRL, this is more than "a bit disingenuous".
The reason I prefer the Super + key, is so it doesn't mess with using CTRL+key in the terminal. As that behaviour is running contrary to expectations set by every other OS. CTRL+C doesn't mean copy in the terminal, it means terminate the currently running program. CTRL+A doesn't mean "select all" it means, jump to the start of the line.
Programs shouldn't be overwriting OS level shortcuts, though I completely understand how it came to be. It is really counter-intuitive for new users. Super + key makes more sense for OS level shortcuts, as it's literally the Windows symbol on most keyboards.
>> I hope you realise that saying “very buggy and inconsistent” without naming anything specific isn’t any less vague and ambiguous than “usability and comfort”.
>There are literally dozens of examples of issues listed in this thread. I hope you realize that saying 'give me examples' when there are many many examples all around the post your replying too is a bit disingenuous. I can't keep repeat ing what I've already posted in the thread in every single comment.
I don't know how you read, but I read from comment to comment, top to bottom.
I'm in the top thread where you made the claims without any examples, I don't know why you expect me to look elsewhere for the examples that you might have posted or not. Nor why you think I would look for other people's issues.
If you think that's disingenuous that's your prerogative, I think that's how most people read these thread's including you. You don't need to keep repeating the same thing, you can literally just link your comment with the specifics.
> But from what I've seen in your replies it seems you post-hoc justified your opinion by googling for known issues.
Really? I 'post-justified' my opinion by posting the same set of issues in another comment hours before you replied to me? Why are you even trying to psycho-analyze my comments and come up with your own imagined motivations for them?
> Unless you're claiming you have all of these issues, constantly and consistently?
I've experienced every single issue I've mentioned. Now you're trying to quantify how 'constantly and consistently' issues appear? You're already going in circles - either they are so constant and consistent that I 'post-justified' my entire criticism based on the popularity of these issues, or they are so rare and inconsistent that they should be ignored?
> I have never had a system that was completely issue free. Be it Windows, Mac or Linux.
What is this statement supposed to represent other than blanket blessing of macos bugs? If windows has a bug - macos bugs are okay?
> as it's literally the Windows symbol on most keyboards.
That's not really a good reason.
> I don't know how you read, but I read from comment to comment, top to bottom. I'm in the top thread where you made the claims without any examples, I don't know why you expect me to look elsewhere for the examples that you might have posted or not. Nor why you think I would look for other people's issues.
I don't care how you read and I don't expect anything from you. If you're in a thread where many macos issues are mentioned, you can attempt to read the other comments in the thread, read the other replies to the same comment you're about to reply to, look at my other recent comments, etc. Instead of pretending that macos issues don't exist, then claiming that my criticism is 'post-justified' after I give you examples, and finally waving the issues off because 'linux and windows also have bugs'.
I think the buggy apps and UI isn’t emphasized enough on Macs. I honestly can’t remember the last time I was on Windows and performing an action failed to give me any visual indicator whatsoever that something happened, but that’s common on my M2. I’ll click something, have no feedback, and then a few seconds later the thing happens.
Just a couple concrete examples, if you open an app in a workspace, then switch screens to a different workspace, then click the app in the dock, nothing happens. I would expect to be taken to the screen and have the app made visible, but instead, nothing. I kept thinking that the app must be frozen or something until I switched screens and found it.
Another example, I was carrying my laptop to and from work. I put it in my backpack with padding that protects the laptop. I didn’t jostle it around, I literally just carried it to and from work. I get home and the screen is in some sort of weird flickering bugged out state. I had to forcefully restart it just to get it working again.
With all that said, the trackpads and gestures on Macs are amazing. The displays are also very visually appealing. The performance is good.
> I honestly can’t remember the last time I was on Windows and performing an action failed to give me any visual indicator whatsoever that something happened
I find that more often than not I can't make it through the Windows setup without worse janky stuff happening. Pretty often when toggling off all the bullshit privacy settings that shouldn't be opt-out to begin with, I'll get a visual indication of the switch starting to move after my click, then turning around and going back to the default—so my click was definitely received, but rejected somehow. That seems worse to me than a correct response delayed.
> if you open an app in a workspace, then switch screens to a different workspace, then click the app in the dock, nothing happens. I would expect to be taken to the screen and have the app made visible, but instead, nothing.
There is a visual indication in that the contents of the menu bar change to reflect the newly active app; unlike on Windows a Mac app can be active without having an active or foreground window. There's a system setting to control whether to switch spaces in this scenario, but I don't recall whether the behavior you describe is the default or something you accidentally configured to annoy you.
> CLI tools/shell is attempting to follow more-or-less standardish unix/linux setup but fails pretty hard, with many of the same commands existing but behaving just differently enough to be annoying.
macOS is UNIX certified and POSIX compliant. You're probably expecting GNU commands, but macOS is based off of FreeBSD (and is not related Linux).
First of all unix/freebsd/linux are all closely related. Second, macos does not come with current freebsd set of CLI tools, and in fact comes with several very outdated GNU CLI tools.
I was always kind of puzzled that big tech companies seem to exclusively use Macs for software dev. Then when I joined one, I discovered that everyone uses remote Linux VMs for actual development. Which makes a lot more sense - Macbook as a glorified thin client with great battery life suits it pretty well. Although, I still sorely miss Linux/Windows window management.
CLI tools/shell is attempting to follow more-or-less standardish
unix/linux setup but fails pretty hard, with many of the same commands existing but behaving
just differently enough to be annoying.
They wasn't following unix/Linux standards they are following unix/bsd standards. Standards that predate Linux and for some of us are very familiar indeed.
Everyone knows that macos (and windows) took a lot from unix/bsd. But that does not mean they are actively following any kind of reasonable modern standard. And saying they might be following some 30 year old supposed bsd standard is pretty hilarious for an OS that portends to be cutting-edge, intuitive and well-integrated.