| |
| ▲ | ajdude 3 days ago | parent | next [-] | | > I can't imagine many companies choosing macOS because it's a real Unix, nor would anyone really opt out of z/OS, AIX og HPUX, if they where not certified. While Unix compliancy isn't what's keeping me on macOS, the Unix tools it has under the hood still is. I've opted to use it over Linux because I still get everything that I need from a "Unix like" standpoint while having some serious enterprise level support and compatibility with work software that's often only available for windows or Mac. If Apple stopped caring about being Unix compliant, I wouldn't be surprised to see the tools and infrastructure that make it Unix (and useful to me) slowly be removed. Then I'd stop using it. | | |
| ▲ | mdasen 3 days ago | parent | next [-] | | I'd say that you care about it being UNIX-like, not UNIX®. You don't care that Linux isn't UNIX. You don't care that GNU versions of things like ed and awk are slightly off-spec. In some ways, Apple's adherence to UNIX specifications probably makes macOS less useful for you. For example, I wish that grep on macOS was closer to GNU grep. When I look up commands online, I often find answers based on the GNU implementations. Those often work on macOS, but sometimes don't (or have subtly different behavior) because macOS is adhering to the UNIX specification rather than to what those utilities do on the vast majority of systems out there. I don't think Apple would be removing UNIX-like tools from macOS even without certification. They know how valuable it is that most developers use their systems. Even Microsoft went so far as to implement the Windows Subsystem for Linux for developers. At this point, I think that UNIX certification makes macOS less compatible with the tools and help out there which generally targets Linux. Usually the differences are small, but they certainly can be meaningful. | | |
| ▲ | lucideer 3 days ago | parent | next [-] | | > I don't think Apple would be removing UNIX-like tools from macOS even without certification. They know how valuable it is that most developers use their systems. I hope you're right but I'm not as confident. Corporations - Apple included - have been guilty of some surprising ignorance when it comes to things like this. I'm thankful for this certification circus to continue so that we don't need to test your theory. | | |
| ▲ | selimnairb 2 days ago | parent [-] | | Yeah, except Apple dogfoods macOS to build most of the software for Macs and everything else they make. Presumably they rely on UNIX-like tools and would have to retool as well. So why mess with what’s working for them and others? |
| |
| ▲ | skissane 2 days ago | parent | prev | next [-] | | > In some ways, Apple's adherence to UNIX specifications probably makes macOS less useful for you. For example, I wish that grep on macOS was closer to GNU grep. When I look up commands online, I often find answers based on the GNU implementations. Those often work on macOS, but sometimes don't (or have subtly different behavior) because macOS is adhering to the UNIX specification rather than to what those utilities do on the vast majority of systems out there. UNIX certification is not the reason why macOS utilities are missing options compared to GNU - UNIX standards say you have to have certain options which work a certain way, they don’t prohibit adding additional options as vendor extensions. The reason is that Apple’s investment in improving these tools is minimal because it is a low priority for them, and because people who get annoyed by this often just end up installing the GNU tools anyway (using Homebrew or MacPorts) In fact, GNU/Linux systems have been certified as UNIX in the past, by a couple of different Chinese vendors (Inspur K-UX, Huawei EulerOS)-which shows use of the GNU tools is no inherent obstacle to certification. The reason these vendors stopped, I suspect, is the money it was making them was smaller than the certification costs and UNIX trademark license fee | | |
| ▲ | jchw 2 days ago | parent | next [-] | | Pretty sure GNU coreutils really does intentionally deviate from POSIX compliance in a handful of places, otherwise POSIXLY_CORRECT wouldn't exist. That said you're probably right, though I also suspect dealing with GPL licensing is another major reason they don't bother with things like GNU coreutils. (Obviously they definitely wouldn't have done it after coreutils switched to GPLv3, but I'm sure even before then they would've greatly preferred permissively-licensed software.) | | |
| ▲ | chasil 2 days ago | parent | next [-] | | There is some subtlety that you are missing here. Outside of coreutils, let's consider bash and ksh88. The two have differing behavior in several areas (coprocesses, alias handling, final pipeline fork, etc.), but this divergence in behavior happened before POSIX.2 and the standardization of the POSIX shell, which is largely a subset of ksh88. The gist is that activating a mode for POSIX compliance will generally remove functionality, because the standardization happened a decade after development began, and the standards themselves were excessively conservative in adherence to System V. I've seen that useful GNU extensions are generally adopted by BSD, but much more slowly by POSIX. That does not serve UNIX well. Someone should challenge the Austin Group for effective control of UNIX standardization. | | |
| ▲ | jchw 2 days ago | parent [-] | | AFAIK, enabling POSIXLY_CORRECT doesn't get rid of any functionality. It changes some very subtle behaviors, such as the way certain argument parsing edge cases would be handled. Anyway, I think this is somewhat a non-issue: even if bash doesn't fully comply with POSIX standards by default, it should still be possible to be POSIX compliant by delivering a compliant shell in the right place. Though this does make me wonder if there's anything in POSIX that would require the user's default login shell to be POSIX-compliant, Bourne shell compatible. Probably not, right? After all, macOS had been using bash for ages with no issues complying. | | |
| ▲ | chasil 2 days ago | parent [-] | | Nope nope nope. You can see this in a script by defining: alias p=printf
Then try to use it with bash. If bash is running as #!/bin/sh, then it will work, because bash is forced into POSIX mode.However, if the script is running as #!/bin/bash, then you will be in the '80s behavior, and it will fail. Try it. | | |
| ▲ | jchw 2 days ago | parent [-] | | Bash isn't part of GNU coreutils. | | |
| ▲ | chasil 2 days ago | parent [-] | | I realize that, but I'm illustrating that POSIX.2 required a retrofit to bash, and probably required similar adjustments to the rest of userland, including coreutils. | | |
| ▲ | jchw 2 days ago | parent [-] | | I knew about the fact that bash behaves quite differently in POSIX mode, but that isn't much of a problem in most cases since nobody is forcing you to use a POSIX-compatible bourne shell as your login shell or for scripting, it's just the shell that you can guarantee will exist if something is POSIX compliant, right? If I were addressing bash, I would've said set -o posix instead of POSIXLY_CORRECT. (I didn't even realize POSIXLY_CORRECT did anything to bash.) The GNU bash documentation covers the differences pretty well: https://www.gnu.org/software/bash/manual/html_node/Bash-POSI... GNU coreutils however, the behavior differences seem rather minor, and I couldn't find exhaustive documentation. However, I may as well try to back this up with more than conjecture since we're already this deep in the thread. Let's dig into GNU coreutils and see what POSIXLY_CORRECT appears to do as of current git HEAD: - cp: Allow the destination to be a dangling symlink when POSIXLY_CORRECT is set. - dd: Does not trap SIGINFO if it's equal to SIGUSR1 (default) and POSIXLY_CORRECT is set. I guess this means that POSIXLY_CORRECT makes the `pkill -USR1 dd` thing not work? - df: Use 512-byte block size if POSIXLY_CORRECT is set, otherwise 1024. - echo: POSIXLY_CORRECT disallows parsing options unless the first option is `-n`, and enables parsing "v9"-style interpretation of backslash escapes. Demonstration: `$(which echo) -e \\n` - id: Will not print SELinux context even when --context is passed. Not sure why. This is the only thing I've seen that explicitly disables functionality. - nohup: The exit code for internal failures is 127 instead of 125 when POSIXLY_CORRECT is set. - pr: Changes default date format when POSIXLY_CORRECT is set. - printf: POSIXLY_CORRECT disables a warning about ignored characters following a character constant. Demonstration: `$(which printf) %x "'xx"` - same output in both modes, but in POSIXLY_CORRECT you are not warned about the second x being ignored. - pwd: Defaults to using -L ("logical" mode, uses $PWD value as long as it refers to the CWD) instead of -P. - readlink: Defaults to --verbose if POSIXLY_CORRECT is set. - sort: Allow operands to be parsed after files if POSIXLY_CORRECT is not set. - touch: Seems to disable some kind of warning when an invalid date is passed. - uniq: Seems to be the same as sort. - wc: Treats non breaking space characters as word delimiters, if POSIXLY_CORRECT is unset. I believe this is an exhaustive list as of GNU coreutils f4dcc2a495c390296296ad262b5a71996d0f6a86. | | |
| ▲ | chasil 2 days ago | parent [-] | | I still run some rhel5, and there were quite a few standard options that were not implemented by GNU. Looking now is good, but looking in the past is also illuminating. I generally trust busybox to give me both a uniform and compliant userland, certainly more than rhel5 coreutils. | | |
| ▲ | jchw 2 days ago | parent [-] | | I only chose the latest version because I figured it would have the most POSIXLY_CORRECT effects. Documentation seems to confirm this: the NEWS file documents added effects over time, but not removed ones, it seems. I wouldn't necessarily be surprised if GNU coreutils from RHEL5 is old enough to be missing some options needed to comply with POSIX, or if it complied with older POSIX standards, but I think we're losing track here. GNU coreutils maintains essentially all of its functionality and options when in POSIXLY_CORRECT mode; there's really just a handful of differences and they are mostly around edge cases that few people care about, except insofar as it breaks their scripts, especially since in most cases they'll be using shell builtins instead which don't follow the POSIX behavior anyway. I am not really arguing for or against GNU coreutils. I currently use GNU coreutils and would prefer GNU-compatible coreutils on my systems purely as a matter of muscle memory, regardless of whether it is in POSIX compatibility mode or not. That said, I don't think GNU coreutils are necessarily anything special, and the utilities that macOS and BusyBox provide are almost always perfectly fine with me, with some minor exceptions. I'm sure the same will be true if I ever try a uutils-based system. The only point to be made here is that at least as far as coreutils go, it doesn't really seem like POSIX compliance is a hindrance. If anything stopped macOS from using GNU coreutils, I suggest it's probably to avoid having more GPL software in macOS (especially post-GPLv3.) Though there could be multiple factors at play. | | |
| ▲ | chasil 2 days ago | parent [-] | | And I'll get back to my original point. When Debian demoted bash and migrated to the Almquist shell, there was great anguish from Ubuntu users of all tiers (Adobe was notable, IIRC). That anguish was due to a decade that predated POSIX.2. That was a substantial hindrance. | | |
| ▲ | jchw 2 days ago | parent [-] | | I absolutely remember Debian switching to Almquist shell, but that was about more than just POSIX compliance. IIRC a big deal at the time was that the cost of starting and using GNU bash all over the place was actually a measurable performance impact, and switching to dash improved on this. Also, bashisms became pervasive in scripts with /bin/sh hashbangs, which is definitely wrong no matter how you feel about POSIX. And anyway, this tangent doesn't feel terribly connected to this discussion thread since macOS never had this issue in the first place and this particular discussion thread was never really about UNIX shells... |
|
|
|
|
|
|
|
|
| |
| ▲ | skissane 2 days ago | parent | prev [-] | | > Pretty sure GNU coreutils really does intentionally deviate from POSIX compliance in a handful of places, otherwise POSIXLY_CORRECT wouldn't exist. To get UNIX certification, you can just patch it to make POSIXLY_CORRECT=1 the default. Or even don’t patch the utilities, and just patch /etc/profile to set POSIXLY_CORRECT=1 globally. UNIX certification requires that the system have a mode of operation available which passes the test suite; the existence of config settings which if changed from their defaults produce standards violations is not in itself a standards violation. | | |
| ▲ | jchw 2 days ago | parent [-] | | The point is that the default build of GNU coreutils in the default configuration is not POSIX compliant, not that it can't be made to be POSIX compliant. Obviously it can be done, otherwise that environment variable would not exist. |
|
| |
| ▲ | pornel 2 days ago | parent | prev [-] | | Apple got spooked by GPL v3 anti-tivoization clauses and stopped updating GNU tools in 2007. macOS still has a bunch of GNU tools, but they appear to be incompatible with GNU tools used everywhere else, because they're so outdated. | | |
| ▲ | wkat4242 2 days ago | parent [-] | | And Apple is doing a lot of Tivoization these days. They're not yet actually stopping apps that they haven't "notarized" but they're not making it easier. One of the many reasons I left the Mac platform, both private and at work. The other reason was more and more reliance on the iCloud platform for new features (many of its services don't work on other OSes like Windows and Linux - I use all those too) The problem with the old tools is that I don't have admin rights at work so it's not easy to install coreutils. Or even homebrew. I can understand why they did it though. Too many tools these days advocate just piping some curl into a root shell which is pretty insane. Homebrew does this too. | | |
| ▲ | flocked 2 days ago | parent [-] | | Couldn't you simply use macOS without the iCloud features? Which features require iCloud to work? | | |
| ▲ | wkat4242 2 days ago | parent [-] | | You can but there's just not much point anymore. I don't remember all the specifics but every time there was a new macos I could cross most of the new features off. Nope this one requires iCloud or an apple ID. Nope this one only works with other macs or iPhones. Stuff like that. The Mac didn't use to be a walled garden. You can still go outside of their ecosystem (unlike on iOS) but then there's not much point. You're putting a square peg in a round hole. Now, Apple isn't the only one doing this. Microsoft is making it ever harder to use windows without a Microsoft account. That's why I'm gravitating more and more to foss OSes. But there are new problems now, like with Firefox on Linux I constantly get captcha'd. M365 (work) blocks random features or keeps signing me out. My bank complains my system is not 'trusted'. Euh what about trusting your actual customers instead of a mega corp? I don't want my data locked in or monitored by a commercial party. |
|
|
|
| |
| ▲ | kelnos 2 days ago | parent | prev | next [-] | | > I'd say that you care about it being UNIX-like, not UNIX®. Right, but I think GP's point is that if Apple didn't feel pressured to get macOS UNIX-certified, then they wouldn't even bother to be UNIX-like. That is, all sorts of UNIX-required command-line tools would start to disappear from the default install, and things like POSIX conformance would take a back-burner, etc. Not sure if I agree with that, but that's what GP seems to be suggesting. > For example, I wish that grep on macOS was closer to GNU grep. This has nothing to do with UNIX conformance; this just comes from macOS's BSD background, which does not use the GNU core utils. If the Linux folks wanted to go through UNIX conformance testing, they wouldn't have to switch away from GNU tools. And macOS could swap out the BSD-sourced tools for GNU tools and still get their UNIX certification. | |
| ▲ | Avamander 3 days ago | parent | prev | next [-] | | Built-in grep is thankfully not as odd as the builtin find is. Might be the first one I replace on my systems. | | |
| ▲ | pseudocomposer 3 days ago | parent [-] | | Given that both grep and find are weird/inconsistent between BSD/GNU versions, and I typically use them piped together for the same things anyway, I’ve found that ripgrep is a nice/faster/universal alternative that is pretty unproblematic to install in whatever environment I want: https://github.com/BurntSushi/ripgrep | | |
| |
| ▲ | zeckalpha 2 days ago | parent | prev | next [-] | | Some Linux distros have gotten certified. I assume they have released necessary patches as required by GPL. | | |
| ▲ | pxc 2 days ago | parent [-] | | I don't think any patches are required. It's literally just a matter of going through the certification dance for the average distro. | | |
| ▲ | mdasen 2 days ago | parent | next [-] | | There are patches required. Many GNU utilities are very close to the UNIX spec, but not quite the UNIX spec - including glibc. But making a Linux distro that is UNIX certified would likely make it a worse Linux distro for most people since it would be less compatible with what everyone is assuming for a Linux distro. A lot of the differences are subtle edge cases, but do you really want that in your distro? It's not just about going through a song-and-dance. It's about making an OS that has different behavior - often very tiny differences, but differences that would make the distro worse for most users. | | |
| ▲ | gsnedders 2 days ago | parent | next [-] | | How close are the GNU coreutils with the POSIXLY_CORRECT environment variable set? I wouldn't be surprised if there were still patches required, but at least on the face of it that should get you most of the way there. | |
| ▲ | skissane 2 days ago | parent | prev [-] | | > It's not just about going through a song-and-dance. It's about making an OS that has different behavior - often very tiny differences, but differences that would make the distro worse for most users. Is this actually true? Can you give a real example of where Huawei EulerOS or Inspur K-UX are inferior to their non-certified base (yet another Red Hat Enterprise Linux clone) due to their UNIX certification? |
| |
| ▲ | swiftcoder 2 days ago | parent | prev [-] | | Don't you have to ship the BSD-compatible versions of grep et al? | | |
| ▲ | pxc 2 days ago | parent [-] | | I'm not sure why you would. I don't think POSIX generally specifies the behavior of command line tools in such a level of detail. FWIW, the regex type used by default by GNU Grep is already POSIX's Basic Regular Expressions. (It also supports POSIX Extended Regular Expressions and PCRE2.) Afaik, EulerOS and other Unix-certified Linux distros just ship the usual GNU userland. | | |
| ▲ | mdasen 2 days ago | parent | next [-] | | The Single UNIX Specification does specify the behavior of many command line tools like ed, grep, awk, etc. OpenBSD sometimes notes where their tools vary from the UNIX spec. It's usually very small ways that don't matter to most people, but it does put them outside of the UNIX spec. | |
| ▲ | swiftcoder 2 days ago | parent | prev [-] | | POSIX != Unix. Unix certification does require POSIX, but it also comes with a bunch more stringent requirements | | |
| ▲ | pxc a day ago | parent [-] | | My mistake! Thanks for informing me :) |
|
|
|
|
| |
| ▲ | cesaref 3 days ago | parent | prev | next [-] | | brew install grep? | | |
| ▲ | latchkey 3 days ago | parent [-] | | brew is such a treasure. | | |
| ▲ | eric_h 2 days ago | parent [-] | | and kind of a counter point to the GGGP's "Unix compliancy isn't what's keeping me on macOS, the Unix tools it has under the hood still is." I certainly replace a large chunk of the "unix tools under the hood" with tools installed via homebrew. |
|
| |
| ▲ | mechanicum 3 days ago | parent | prev [-] | | > because macOS is adhering to the UNIX specification Isn’t it rather that Darwin was based on BSD 4.4? I’d imagine GPL 3.0 is a bigger impediment to them ever migrating to GNU tools than any desire to be UNIX certified. | | |
| ▲ | p_ing 3 days ago | parent [-] | | https://developer.apple.com/library/archive/documentation/Da... It derives from 4.4 BSD but it's more than that. macOS includes a woefully outdated bash 3.2 due to GPL 3.0; they switched to zsh long ago. | | |
| ▲ | mechanicum 2 days ago | parent [-] | | I know. My question is, isn’t the reason the command line tools work the way they do simply that they’re essentially the BSD programs (give or take an Apple patch), with BSD options, not because they needed to work that way for Apple to get the OS certified? Even if macOS wasn’t UNIX-certified, Apple would still be unwilling/unable to include the GNU software due to the license. I can’t see the Apple of today implementing a full suite of non-GNU software but with GNU-style options either. So, POSIX compliant or not, there’s probably no world where `grep -P` works out of the box on a Mac. | | |
| ▲ | p_ing 2 days ago | parent [-] | | Sure, much like ping and tracert are BSD programs on Windows, just with a few different options that are OS-specific. There's no reason to include GNU anywhere. I don't know why Apple would. |
|
|
|
| |
| ▲ | zitterbewegung 3 days ago | parent | prev | next [-] | | While macOS only really gets Unix certified they design of the flavor of unix from FreeBSD. Homebrew is also the best port system and package manager I have ever used because it requires no thinking. I actually dislike using Linux because now I have to learn the replacement from ifconfig, the creation of launchd IMHO is way better than init.d and systemd, and the command line diskutil and other additions still feel like its more Unix like while Linux feels like its moving toward its own thing. Before I was using macOS I was using OpenBSD as my daily driver since high school. I still don't understand though why Ubuntu has the ability to break /boot because there isn't enough space to add another kernel to there... | | |
| ▲ | StopDisinfo910 3 days ago | parent | next [-] | | I’m going to comment on the homebrew part because well that’s your tastes but I personally think it’s the worst package manager I have ever used and is not really a port system so opinions do vary here. > I have to learn the replacement from ifconfig MacOs switched to networksetup and ipconfig a long time ago. Ifconfig is not recommended so the situation is exactly the same than on Linux here. > launchd IMHO is way better than init.d and systemd Systemd is basically a more complete and better designed launchd. Having used both I have trouble thinking of anything launchd does better. > the command line diskutil and other additions still feel like its more Unix like Diskutil is a MacOS only tool. I’m a bit lost about what your argument is here. Linux still use fdisk and dedicated tools to create file systems exactly like on FreeBSD or any other Unix. It’s MacOs doing its own thing here. | | | |
| ▲ | pxc 2 days ago | parent | prev | next [-] | | How is launchd better than systemd? I find the commands much more verbose and the documentation more obscure | |
| ▲ | samgranieri 2 days ago | parent | prev [-] | | Homebrew is pretty nice. I think it's better than Fink (mac DPKG), and MacPorts (mac Freebsd-based). I'm actually using homebrew right now on ubuntu 25 for a few packages that I don't feel like compiling from source or installing from some random PPA or apt source. All that being said, I've spent some time on Arch, and I really like pacman and the AUR setup. And all that documentation is just amazing. I really didn't understand systemd before I read the archwiki article on it. SystemD I think was a bit inspired by Launchd. |
| |
| ▲ | wkat4242 2 days ago | parent | prev | next [-] | | The enterprise support is actually pretty bad. they offer some cool stuff like DEP but there's so many strings attached that for enterprise it's rarely actually possible in practice. Many things are boneheadedly designed. For example, Apple federated accounts are a great idea. But, in your global directory the UPN and email must be the same. For us it's not, with good reason. We're not going to change our entire setup globally to suit Mac users that make up 0.5% of our systems. And there's never going to be more unless they become more accommodating. We even looked at JAMF but it's too much work to implement a whole separate management system. And the options in apple's configuration profiles are way too limited. Another issue, every account that has already been created as a private Apple id on the corporate email must be manually resolved. Impossible with many tens of thousands of users. AD binding while rudimentarily supported, causes so many issues. If someone's password expires there's no way to log in unless they're physically on the company network. The problem is that our security team demand we bind to AD. Not Azure AD. That's just reality in enterprise. Having a managed local admin account is also a really big problem and there isn't really any tooling for that. Maybe if you go all in on Apple like IBM did, then yeah you could adapt your environment to all their quirks. But it's a big blocker for small deployments. And really besides IBM nobody in enterprise did this. Apple meanwhile doesn't really care anyway. They only care about the customer market. | |
| ▲ | EPWN3D 2 days ago | parent | prev | next [-] | | There is absolutely no way that happens. Apple cares about Unix compatibility for very good business reasons. Apple gets a lot of value from being even just Unix-ish. It's the same reasons Microsoft eventually knuckled under and made WSL -- the ubiquity of Unix conventions and tooling is just too cemented in the industry. POSIX conformance is a cherry on top, and it helps get them certain sales that require a conforming Unix. But that's not the real value to the platform. | |
| ▲ | kjellsbells 2 days ago | parent | prev | next [-] | | There was a time when OS X was new that Apple leaned pretty hard into the OS X is UNIX(tm) story. I was working in academia at the time where the Serious Work was being done on SunOS/Solaris and saw print ads aimed at scientists reminding them that OS X was a Real UNIX: http://xahlee.info/UnixResource_dir/apple_unix_ad.html | |
| ▲ | makeitdouble 3 days ago | parent | prev | next [-] | | It's not for everyone, but at some point I got tired of the FreeBSD layer being there but not cared for, and WSL+git for windows kinda provides a decent compromise in that regard. The thing I hated the most was spending time building installation scripts or running images for the prod environment, and then go fight macos to replicate the same setup locally. Especially having parralel installs for the system and my user account was a PITA. One would argue I could just dev on the docker image as well, but then being on a somewhat unixy OS doesn't matter much anymore. WSL let's the Windows side live it's life (shell level tools can still be injected for convenience), and the linux side be genuinely Linux, not some ersatz, and duplicable to one's heart content. It's still less pain and better perfs than straight docker, and just extremely well integrated in general. | | |
| ▲ | mikeinwc 2 days ago | parent [-] | | Agreed, WSL + Windows Terminal on Windows is fantastic. I hope something similar comes to macos, to save us from either running docker local or SSHing to a linux host. |
| |
| ▲ | StopDisinfo910 3 days ago | parent | prev | next [-] | | Considering the core utils have even been ported to Windows, I don’t really see what you would lose. The Unix don’t really share much between each other apart from a small core. | | |
| ▲ | pjmlp 3 days ago | parent [-] | | While true, there are still speed bumps on Windows. One is better using the Windows alternatives. | | |
| ▲ | StopDisinfo910 3 days ago | parent [-] | | The initial argument was that MacOS is nice because it has the core Unix tool. I find this baffling because MacOS has very little to do with a traditional Unix apart from the certification and the core utils are literally usable on approximately anything. Speed bumps regarding what? I’m mostly using Linux nowadays but when I have to use Windows, the experience is fairly ok. The tooling when you want to manage it is imho superior to what Apple provides. I’m not used to develop on it but I have seen people do and it didn’t seem particularly worse than Linux-like environment. Not that I really have anything against MacOS. I think it’s neglected by Apple and not as enjoyable as it used to be. I dislike Apple and the policies it’s pushing for. Nevertheless, it’s ok to use. Everything pretty much is nowadays. | | |
| ▲ | yndoendo 2 days ago | parent | next [-] | | When producing cross-platform software I find creating it on Linux first to be the most cost effective. Porting it to macOS has the least resistance. Windows is where it cost more time and code to release. macOS, Linux, and BSD treat CMD and GUI applications the same while Windows separates applications. Window's two type of application approach brakes the ability to use STDIN and STDOUT for logging and other useful means. Simple debugging of `./app > app.log` does not work on Windows with `app.exe > app.log` with GUI applications. The Windows variant needs a specialized logging system and more boilerplate code. Windows also has one of the worst automation system when it comes to solution deployment. One needs to create custom mouse and keyboard emulation scripts to automate the installation of 3rd party applications when their installer does not support silent mode. AutoIT helps me with this greatly. | | |
| ▲ | kid64 2 days ago | parent [-] | | Windows does have quirks: MSI installers, Inno Setup, NSIS, and custom EXEs may or may not support silent mode. When they don’t, automation is ugly (AutoIt, AutoHotKey). But Windows also has strong automation tooling: PowerShell, WinRM, Chocolatey, Winget, MSIX packaging. These provide far more than “mouse and keyboard emulation.” So your statement ignores the modern ecosystem and overstates the weakness. | | |
| ▲ | yndoendo 2 days ago | parent [-] | | Please note, you are assuming I have the ability to control the version of Windows the product lives on. Some products still have to support up to Windows XP. Also the PowerShell is actually broken. I can use standard network powershell commands that brake the OS applied to network interfaces. Currently waiting on a laptop with bare metal Windows installation to verify if those sanitized PowerShell commands are crashing the VM or Windows itself. .NET for the longest time was broken with _NetworkInterface.GetAllNetworkInterfaces()_ only returning enabled NICs. This was finally fixed in .NET 9. Work around his to go WIN32 custom coding when older .NET must be used. .NET WPF touch screen event messaging system is also broken where it would latch depending on how the finger is swiped off a button. Had to dump that and go with WIN32 as work around so that bug didn't have the capability to crush someone's appendage when being used in machinery. The registry system the OS is built upon is flawed. It does not have well defined layout such as a configuration file. | | |
| ▲ | Joker_vD 2 days ago | parent | next [-] | | > Please note, you are assuming I have the ability to control the version of Windows the product lives on. Some products still have to support up to Windows XP. It's what, 6 different versions of Windows, with quite clearly defined API "eras"? For Linux, you have just a huge ball of mud^H^H^H distros each of which has (or doesn't have) who knows versions of what, but of course, there you can just give out a .tgz with source code and say to your users "it's your problem now to build it for yourself since you're using Arch". | |
| ▲ | p_ing 2 days ago | parent | prev [-] | | Configuration files have a /well defined/ layout? I don't have to guess if it is YES|NO|TRUE|FALSE|0|1... or does it use quotes or no quotes around the variable and/or value? Or a space between the variable and the equals sign? Hard to tell with a config file. |
|
|
| |
| ▲ | pjmlp 3 days ago | parent | prev [-] | | If you mean UNIX System V via green phosphor text terminals, thankfully not. Speed bumps regarding compilation of tooling written with UNIX semantics in mind, without taking into consideration Windows development culture and OS semantics. | | |
| ▲ | StopDisinfo910 3 days ago | parent [-] | | What are these mythical Unix semantics? Linking to Glibc? Sharing a roughly similar file system structure? Expecting bash to be there? Because from where I stand the people that care about BSD have spent the past decade complaining it’s getting more and more complicated to port Linux software so I’m very curious to know what the common DNA is supposed to be. | | |
| ▲ | pjmlp 2 days ago | parent [-] | | Everything that UNIX has and Windows doesn't. | | |
| ▲ | StopDisinfo910 2 days ago | parent [-] | | That’s as vague as it gets. The amount of things various Unix have in common is, well, not that much. Not that people care in any way because frankly speaking no one uses Unix. I get that you meant is probably that MacOS is close enough to Linux that you can somehow pretend it is the same when developing things which are ultimately going to run on Linux. To which I say, I personally think that buying Apple is wasting a lot of money for something which would work fine in a VM but well, that’s nice aluminium I guess. | | |
| ▲ | pjmlp 2 days ago | parent [-] | | It is super easy, pick any random UNIX tutorials and follow it using Visual Studio, or Windows Terminal. | | |
| ▲ | StopDisinfo910 2 days ago | parent [-] | | But certainly, but I invite you to pick any of this supposed Unix tutorial and try it on AIX or HP-UX the other two certified Unix and see if it works. As a reminder, AIX ships with ksh, the IBM XL compiler, is configured via smit, stores parameters in ODB. It has no port system and while it supports gcc, the gnu linker doesn’t work. Also it is entirely compiled for the Power ISA architecture. | | |
| ▲ | pjmlp 2 days ago | parent [-] | | I have experience across Xenix, DG/UX, Solaris, Aix, HP-UX, Tru64, NeXTSTEP, OS X, FreeBSD and all major Linux distributions starting with Slackware 2.0. So I might know a thing or two about portable UNIX code, and getting it to run on a non-UNIX system like Windows. Here is a reminder for you as well, one of those follows the same dynamic linking model as Windows. | | |
| ▲ | StopDisinfo910 2 days ago | parent [-] | | You have experience with them and you are trying to pretend a guide written for them will work on MacOS. I’m glade to know you are not misinformed but actively disingenuous. I stand by my point. Unix semantics don’t really exist in a meaningful manner. The SUS gives you very little. To get back to the Windows side discussion, you can get a POSIX compliant shell on Windows in minutes nowadays be it Cygwin, gsh, git shell or WSL if you don’t mind using virtualisation and the C headers defined in the XBD are also minutes away. The days when developing on Windows was painful are long gone. The rational for MacOS at this point for me is pretty much limited to “I want a MacBook as a status symbol”, same than the iPhone. They are nice machines. They are just far too expensive for what they do imho at least in Europe where Apple prices them significantly higher than in the US. | | |
|
|
|
|
|
|
|
|
|
| |
| ▲ | qmr 3 days ago | parent | prev | next [-] | | > I still get everything that I need from a "Unix like" standpoint Everything except a package manager! | | |
| ▲ | philistine 3 days ago | parent | next [-] | | With the way Apple is running its App stores, do you honestly believe that we would benefit from an Apple package manager? I'm convinced the devs inside Apple know what I'm saying as well, and are giving as much help as possible to Homebrew to keep it independent. There is some small proof, Homebrew was considered very highly during the DTK rollout for Apple Silicon. | |
| ▲ | zitterbewegung 3 days ago | parent | prev | next [-] | | Majority of people use homebrew. There is also macports. | |
| ▲ | pjmlp 3 days ago | parent | prev [-] | | UNIX never had a package manager. Those that have one, it is not standard. |
| |
| ▲ | mickael-kerjean 3 days ago | parent | prev [-] | | There are some infuriating issues though, I have wiped out a couple files on OSX using sed with the -i option to replace a text within a file only to realised OSX would wipe it out instead .... |
| |
| ▲ | pjmlp 3 days ago | parent | prev | next [-] | | It is also relevant, that as proven on FOSDEM corridors full of Apple laptops, most folks only care about some sort of POSIX experience, and couldn't care less about Linux/BSD religion. So that target audience gets a cool modern experience, without fighting with driver issues and such. It is also the reason why Microsoft ended up bringing Project Astoria from the ashes into WSL. UNIX has won, but not as Richard Stallman would have liked to. | | |
| ▲ | kasabali 2 days ago | parent | next [-] | | AFAIK Stallman didn't care about UNIX, considering he is more of a LISP guy. GNU targeted UNIX because it was the popular OS at the time. | | |
| ▲ | pjmlp 2 days ago | parent [-] | | Kind of, > Unix is not my ideal system, but it is not too bad. The essential features of Unix seem to be good ones, and I think I can fill in what Unix lacks without spoiling them. And a system compatible with Unix would be convenient for many other people to adopt. -- https://www.gnu.org/gnu/manifesto.html |
| |
| ▲ | drob518 3 days ago | parent | prev | next [-] | | Nailed it. | |
| ▲ | bigyabai 2 days ago | parent | prev [-] | | I don't think Richard Stallman much cares. The first thing every programmer does on a Mac is install GNU software. | | |
| ▲ | pjmlp 2 days ago | parent [-] | | Not really. | | |
| ▲ | bigyabai 2 days ago | parent [-] | | Sure, I guess. I'd love to meet this "real developer" who doesn't git pull anything to their Mac. Me, I live in the real world and got dotfiles to clone. | | |
| ▲ | pxc 2 days ago | parent | next [-] | | Git's not a GNU project. Fwiw, though, I personally do use a ton of GNU software on any Mac I touch: coreutils, grep, sed, find, parallel, GCC, autotools, make, gdb, Emacs, and maybe some GNU Java stuff for LibreOffice, Bash. Most developers on macOS probably use at least a couple of those. | |
| ▲ | dwaite 2 days ago | parent | prev | next [-] | | Because of the heavy push to GPL v3 by GNU, and because Apple’s interpretation of the license’s patent requirements prevented any GPL v3 code use, very few GNU projects remain as part of macOS. Git is not a GNU project and is GPL v2. | |
| ▲ | pjmlp 2 days ago | parent | prev [-] | | Hello. Install everything XCode and use proper UNIX tools already installed. |
|
|
|
| |
| ▲ | mdasen 3 days ago | parent | prev | next [-] | | That explains why they got it UNIX certified back then, but couldn't they stop advertising macOS as UNIX and stop getting it certified? They even changed the name from Mac OS X to macOS since then. | | |
| ▲ | crazygringo 3 days ago | parent | next [-] | | That's my question too, why continue to bother? Apple doesn't even have any separate "Server" OS anymore. I can't find anything mentioning UNIX on any apple.com marketing pages. I guess it's just, might as well keep it going, as an option for future marketing if ever needed. Maybe it helps the salespeople in some enterprise deals? I mean, if it doesn't really cost anything to keep it. | | |
| ▲ | pjmlp 2 days ago | parent [-] | | Workstations, although I wouldn't consider the existing alternatives much of a proper workstation. | | |
| |
| ▲ | kstrauser 3 days ago | parent | prev | next [-] | | My (wholly unsupported) guess is that there are government or megacorp bids somewhere for Unix systems for employees, and this checks that box. The buyer could update their requirements, but why do that when you can just make your vendor jump through the hoop? | | | |
| ▲ | btown 2 days ago | parent | prev | next [-] | | Not at Apple and don't have any knowledge here, but I'd imagine that the UNIX test suite, ever since it began passing, has been a useful set of additional regression tests even outside the certification context. Does anyone want to be the person that removes regression tests from active use, only to be responsible when something breaks that would have been caught by that test? Far easier to just fix your code so the test passes. (And for many years, OS X then macOS had a reputation for being rock-solid, capable of going much longer betwen restarts, going into BSOD much less frequently than Windows would. Having a set of third-party tests certainly didn't hurt this!) | |
| ▲ | mrweasel 2 days ago | parent | prev | next [-] | | I obviously don't know, but I could easily imagine that Apples legal team has flagged it as a potential risk and the cost of keep the certification up to date is minimal, compared to some imagined risk. Safer to pay the fee, and not having to worry about someone at Apple accidentally calling macOS a Unix system in public. Also, Apple is a huge company, there's the question of who's going to make the call the not update a certification that's negligible within the scope of macOS development. Better to not be that person and just rubberstamp the invoice from The Open Group. If management disagree, they can make the call, but they won't because the cost is to small for them to deal with. | | |
| ▲ | astrange 2 days ago | parent [-] | | The cost isn't negligible. The OS team at Apple is smaller than you'd think and has a tight schedule that cannot ever miss a ship date. Basically anything that uses anyone's attention has to be important. > there's the question of who's going to make the call the not update a certification that's negligible within the scope of macOS development. And one way that's managed is to have a DRI system which (ideally) prevents this from happening. |
| |
| ▲ | randall 3 days ago | parent | prev | next [-] | | there’s no downside as far as i’m aware. | | |
| ▲ | mdasen 3 days ago | parent | next [-] | | There isn't much downside, but it probably involves a small amount of money (paid for the certification) and it means spending time making sure that everything remains 100% within spec. There's lots of little edge cases where BSDs differ from the spec and it means that Apple needs to take care not to drift from the spec. | | |
| ▲ | al_borland 3 days ago | parent | next [-] | | Apple remaining in spec sounds like a good thing from a compatibility point of view. Am I missing something? I’m not sure why it’s coming off like people are complaining about this? | | |
| ▲ | Analemma_ 3 days ago | parent [-] | | It’s a spec that doesn’t really matter in practice. Like some other comments said, Linux, BSD and Solaris are “Unix but not Unix(tm)”, and nobody cares. |
| |
| ▲ | jorams 2 days ago | parent | prev [-] | | As pointed out by amiga386 both here[1] and in earlier posts, macOS is not actually compliant with the Unix spec and never has been. This has apparently not been a hindrance for the certification of every single non-compliant version. Unix certification for Apple might not involve anything other than payment. [1]: https://news.ycombinator.com/item?id=45239534 |
| |
| ▲ | bawolff 3 days ago | parent | prev | next [-] | | Presumably certification costs money (?) | | |
| ▲ | monkeyelite 3 days ago | parent [-] | | Probably a small amount especially when they just need to tell them what changed | | |
| ▲ | bawolff 2 days ago | parent [-] | | Given how little their target market cares about being a "real" unix, a small amount is probably more than the benefit it brings in. | | |
| ▲ | monkeyelite 2 days ago | parent [-] | | We are talking about it. | | |
| ▲ | bawolff 2 days ago | parent [-] | | Talk is cheap. | | |
| ▲ | monkeyelite 2 days ago | parent [-] | | In marketing, getting others to talk about you is not cheap. I don’t know what to tell you. Pick your theory: A) apple does it for no reason and it is a waste of money
B) they do it because they are aware or benefits that outweighs the small certification cost |
|
|
|
|
| |
| ▲ | hopelite 3 days ago | parent | prev [-] | | Famous last words |
| |
| ▲ | jeremiemyhren 3 days ago | parent | prev [-] | | I think it’s a quiet but deliberate strategy to keep macOS the spiritual successor to NeXTSTEP. While many of Jobs principles are under pressure at current day Apple, his ghost lives on. | | |
| ▲ | hollandheese 2 days ago | parent | next [-] | | I think you mean literal successor. It's descended from NeXT's codebase. Mac OS X 10.0 was basically NeXTSTEP 6 with Apple logos, Carbon and a Mac OS 9 VM. | | |
| ▲ | spijdar 2 days ago | parent [-] | | There's a "ship of theseus" problem with this idea. There's enough different about OS X (different kernel and BSD base, different display server, different driver stack) that I think it's fair to describe it as a separate OS, yet clearly a lot _is_ directly taken from NS, especially the ObjC/application layer stuff. The waters are further muddled by the existence of Rhapsody and OS X Server 1.0, which are much more clearly "NeXTSTEP 6 with Apple logos, Carbon and a Mac OS 9 VM". I don't think anyone outside the original OS X development team really knows just how much code was kept vs scrapped for the start of OS X development. Given that NS/OS was based on USL-encumbered BSD, it seems likely to me that nothing from the original NS kernel was kept for that, at a minimum. | | |
| ▲ | hollandheese 12 hours ago | parent [-] | | That's why I said 6, Rhapsody/OS X Server is 5. The kernel is/was the same kernel as NeXTSTEP just updated. The main differences were Carbon, Display PDF instead of Display Postscript and the new theme. |
|
| |
| ▲ | monkeyelite 3 days ago | parent | prev | next [-] | | This also doesn’t explain anything? Is getting Unix certified a jobs principle or a requirement to be a “spiritual successor”? | |
| ▲ | pjmlp 3 days ago | parent | prev [-] | | Jobs was very much anti-UNIX and is relatively easy to find it out. NeXTSTEP had to support UNIX, because that was the workstation market they were after. However notice how everything relevant for NeXT products was based on Objective-C userspace tooling and frameworks. |
|
| |
| ▲ | blablabla123 2 days ago | parent | prev | next [-] | | Literally the only reason that kept me on the platform until recently despite becoming increasingly hostile to developers... | |
| ▲ | 2 days ago | parent | prev | next [-] | | [deleted] | |
| ▲ | igravious 3 days ago | parent | prev | next [-] | | Used to work with UNIX servers in the early 2000s but out of that sector for coming up on two decades -- are z/OS, AIX and HPUX (and other old big iron enterprisey UNIXen) still around? I would have thought that Linux had killed them all of by now. Excuse my ignorance! | | |
| ▲ | pjmlp 3 days ago | parent [-] | | They definitely are, not all though, HP-UX is on life support. However Aix, Solaris (and Open Solaris derivatives), z/OS, IBM i (AS/400), ClearPath MCP, OS 2200, are still being updated and sold. That list is not only UNIX systems. | | |
| ▲ | drob518 3 days ago | parent [-] | | Exactly. They exist but just barely. | | |
| ▲ | pjmlp 2 days ago | parent [-] | | Enough to pay salaries of those making them go. | | |
| ▲ | drob518 2 days ago | parent [-] | | Enough to pay the salaries of those keeping them on life support, more like. I wouldn’t say they are going anywhere. To be clear, that doesn’t mean they are going to die anytime soon. Mainframes are still around and getting refreshed and upgraded, too. |
|
|
|
| |
| ▲ | cramcgrab 3 days ago | parent | prev [-] | | You forgot solarius, well, so did oracle. | | |
| ▲ | mrweasel 2 days ago | parent [-] | | I don't think Solaris is Unix certified anymore. It was previously, but the current supported versions are not. |
|
|