So for those who, like me, wonders why Apple keeps getting macOS Unix certified, it's to avoid a lawsuit. Apple misused the Unix trademark when they first launched MacOS, so to avoid legal trouble with The Open Group, Terry Lambert was put in charge of getting MacOS Unix compliant and certified: https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix...
It's basically the only relevance the Unix trademark has these days. 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.
> 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.
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.
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.
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!
There’s an interesting story from the lead engineer to make OS X originally compliant:
> I was asked if I could lead a team to do #1. I said “Yes, under the condition that I could use the compliance project as a hammer to force other parts of the organization to make changes in their own code base, and that I could play it rather loose with commit rules regarding what it said in the bugs database for a given code change, and what the given code change actually did, in addition to what it said in the bugs database”.
…
> We were promised 1/10th of the $200 million, or $20 million in stock, on completion. $10 million to me, $5 million to Ed, and $5 million to Karen Crippes, who was looking for a home in Mac OS X development, I knew was an amazing engineer, and who could be roped into being technical liaison and periodically kicking off the tests and complaining to Ed and I about things not passing.
> Also, the tech lead has to fix anything no one else fixes, or no one else can fix, because they are the DRI (Directly Responsible Individual).
How many tech lead/project manager can say that they are capable for this in these days? It feels like based on my observations that other skills are taking priority on management/lead side.
Two general-purpose Linux distributions used to pay for Unix certification, although they don't do it anymore since hardly anyone is interested in it these days.
It's not just about paying for certification. You also have to replace a lot of things like ed, awk, grep, etc. with versions that are compatible with the UNIX specification. GNU utilities didn't target 100% UNIX compatibility and they have differences that mean that a command that works on UNIX might not work (or might not work the same) on a Linux distro using GNU utilities. glibc has slight differences from the spec too.
In order to get a Linux distro certified, you'd have to make changes which would make it less compatible with all the other Linux distros out there.
The reason why RedHat doesn't pay for UNIX certification is that their distros wouldn't be compliant. The reason why they don't make their distros compliant is that their customers would vastly prefer that RedHat use "standard Linux" tools than replace them with UNIX-compliant ones. Customers don't want a Linux distro that's subtly different/incompatible compared to what everyone expects in a Linux system. They'd rather it be not-UNIX.
Yes, you can modify a Linux distro to be UNIX. However, most Linux systems are not real UNIX - and you wouldn't want it to be real UNIX.
There was a time when “open standards” were treated as the definition of Unix. At least that's what we aspired to. POSIX, X/Open, and others competed to be the standard that mattered. Formal standards were hoped to be a sounder, fairer basis for compatibility and interoperability than the earlier era of “Unix is whatever this release says it is" for some subset of 7th Edition, System III, System V, BSD, or one's favorite commercial derivative (SunOS/Solaris, HP/UX, AIX, Xenix, UnixWare, ...).
That window window of optimism—roughly mid-1980s to mid-1990s—closed fast. Open source projects and _de facto_ standards proved far more powerful in deciding where applications would run, where investments would be made, and which variants survived. Today, the real baseline isn’t POSIX in a binder or some Open Group brand certificate, but Linux + GNU + the APIs everyone codes to. In some ways we've regressed—or more charitably, we shifted back to a more pragmatic form of standardization.
the big difference is that the Linux + GNU standard is not controlled by a corporation whose only motive is profit, and that the reference implementation is Free Software that everyone can potentially contribute to.
i would not call that a regression. compare that to the browser standard which is largely controlled by google.
I had to work around this recently - it involved reimplementing my poll wrapper on top of select(), with the proprietary macOS extension that makes it support unlimited fds. (Of course -D_DARWIN_UNLIMITED_SELECT is completely unportable, so I still need poll too.)
Meanwhile poll() just works on Linux and the BSDs, certified or not.
> It's not simply that certification costs money. It's that a lot of modern UNIX-like operating systems don't adhere to the UNIX spec. For example, the OpenBSD man pages specify the ways in which they diverge from POSIX and UNIX in the Standards section: https://man.openbsd.org/sh.1#STANDARDS, https://man.openbsd.org/awk.1#STANDARDS. Often times these are small deviations that might not matter to most people, but it means that they aren't UNIX.
Except it seems like macOS diverges, too, yet it is certified. I wonder in what other ways it diverges.
I came here to mention this too, but saw you'd beaten me to it. It's remarkable how bad non-free OSes are at maintaining basic infrastructure in their kernel and userspace compared to Linux and the BSDs isn't it? Basic bugs get neglected for decades in favour of rearranging the cosmetics - in this case, it's been more than 20 years since I first reported this to Apple's /dev/null service, and I'm sure I wasn't first and I'm only one of many.
And here I just want pthread_condattr_setclock() on Darwin. Is there some other interface to set monotonic expiries? I tried to port netconsd to Darwin and that's the sole hang up (well and recvmmsg() but that's trivial...)
There's pthread_cond_timedwait_relative_np. Looking at the implementation, pthread_cond_timedwait starts by converting the deadline to a relative timeout [1], but this is skipped if pthread_cond_timedwait_relative_np is used. Then, in the kernel, the timeout is converted back to an absolute deadline by either [2] or [3], but both of those are using Mach absolute time rather than the wall clock.
Mach absolute time is monotonic. It pauses while the system is asleep, which may or may not be what you want.
If need the timer to keep incrementing while the system is asleep, there's no way to do it directly with a timed wait, but you can use kevent with EVFILT_TIMER + NOTE_MACHTIME + NOTE_MACH_CONTINUOUS_TIME.
Can there ever be a "living" standard to replace posix ...? Something that captures the good things about posix but allows all the related ecosystems to move everyone forward toward a better base specification (together rather than just increasing the number of bsd vs gnu special cases that with current plans will just have to be lived with forever)
Browser standards managed to do this in a lot of ways despite far more complex standards, more complex variations in behavior, and much more rapid continue evolution ...
No, and that's a good thing. Just look at how quickly features are added to the living browser standards. Instead, we get a new POSIX version every couple of years that includes the special cases that actually work the same on BSDs and Linux after they're already implemented.
I really don't care about the certification. I care that I have a terminal with bash (still) and I have ssh. This gets me through probably more than 50% of the work that I do. And that I can install packages and have an as close experience as if I were to be on a Linux machine (development frameworks, containers).
I also like the fact that I have a very polished desktop manager running on great hardware with a lot of battery life.
I may have mentioned on occasion, here or there, about how ludicrous it is that there appears to be no well-defined standard that user space shall have sqlite3 and git and gzip.
So, for all intents and purposes, nothing that would be relevant in any reasonable end-user way in 2025. It’s all just: here’s defaults and here’s scripts to set up your environment and here’s a dozen things to run brew with. But no standard.
Yes, there is "UNIX V7" in 2013... which apparently only IBM's AIX supports. This is ironic because the whole idea of UNIX is to create a common platform for interoperability, but only one platform actually supports. I really wonder why Apple just doesn't put a couple of FTEs on it and upgrade to V7. I'm sure it wouldn't take much. But it sort of reminds me of Java and HTML where there were standards to allow for independent implementations, but have collapsed to single implementations.
I don't know about the Unix certification process itself, but the Single Unix Specification explicitly mentions case-insensitivity among non-conforming file system behaviors that are allowed as extensions (in 2.1.1 item 4, third-to-last bullet):
So a conforming OS has to make case-sensitive file systems available (which MacOS does: you can create case-sensitive HFS or APFS volumes). But I'm not sure if a conforming OS instance (i.e., running system) has to have any case-sensitive mount points, and either way, AFAIK there's no practical and race-free way for a conforming application to detect whether any particular mount point behaves case-sensitively.
So I believe that as far as the standard goes, a conforming application might run on a conformingly-extended OS where no portion of the the file namespace behaves case-sensitively. IOW, a conforming application cannot rely on case-sensitivity for file names.
There’s a specific “Unix mode” you have to turn on to be in the compliant state, it’s not the default. Presumably among other changes this puts APFS into case-sensitive mode.
Think of it: it's a Unix system. Literally. A unix system with the usability that your grandma can use. It supports both commercial and open source applications. The year of the linux desktop folks have been trying this for decades.
EDIT: already downvoted to negatives. The Linux folks really don't like to be reminded of that.
Grandma doesn't use certified UNIX. She uses a UNIX-like system. Only the engineers who ran the conformance test use certified UNIX since it required what I would consider heavy modification to the shipped OS configuration.
Sounds good, but grandma will need to disable SIP, run a few commands using sudo, and add a root account from the recovery system. It's Unix in the same way Windows 2000 was POSIX compliant, you just need to reconfigure the default system.
The Linux desktop is widely used all across the world in the form of ChromeOS and, if you count touch screen devices, Android.
mrweasel|5 months ago
It's basically the only relevance the Unix trademark has these days. 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.
ajdude|5 months ago
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.
pjmlp|5 months ago
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.
mdasen|5 months ago
blablabla123|5 months ago
unknown|5 months ago
[deleted]
igravious|5 months ago
cramcgrab|5 months ago
alberth|5 months ago
> I was asked if I could lead a team to do #1. I said “Yes, under the condition that I could use the compliance project as a hammer to force other parts of the organization to make changes in their own code base, and that I could play it rather loose with commit rules regarding what it said in the bugs database for a given code change, and what the given code change actually did, in addition to what it said in the bugs database”.
…
> We were promised 1/10th of the $200 million, or $20 million in stock, on completion. $10 million to me, $5 million to Ed, and $5 million to Karen Crippes, who was looking for a home in Mac OS X development, I knew was an amazing engineer, and who could be roped into being technical liaison and periodically kicking off the tests and complaining to Ed and I about things not passing.
—-
Source: https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix...
HN discussion: https://news.ycombinator.com/item?id=29984016
sgerenser|5 months ago
nicce|5 months ago
> Also, the tech lead has to fix anything no one else fixes, or no one else can fix, because they are the DRI (Directly Responsible Individual).
How many tech lead/project manager can say that they are capable for this in these days? It feels like based on my observations that other skills are taking priority on management/lead side.
0xFEE1DEAD|5 months ago
homebrewer|5 months ago
https://www.opengroup.org/openbrand/register/brand3617.htm
https://www.opengroup.org/openbrand/register/brand3622.htm
Save these links for the next time someone moans that Linux "is not a real Unix".
mdasen|5 months ago
In order to get a Linux distro certified, you'd have to make changes which would make it less compatible with all the other Linux distros out there.
The reason why RedHat doesn't pay for UNIX certification is that their distros wouldn't be compliant. The reason why they don't make their distros compliant is that their customers would vastly prefer that RedHat use "standard Linux" tools than replace them with UNIX-compliant ones. Customers don't want a Linux distro that's subtly different/incompatible compared to what everyone expects in a Linux system. They'd rather it be not-UNIX.
Yes, you can modify a Linux distro to be UNIX. However, most Linux systems are not real UNIX - and you wouldn't want it to be real UNIX.
joao|5 months ago
unknown|5 months ago
[deleted]
EE84M3i|5 months ago
p_ing|5 months ago
https://www.osnews.com/story/141633/apples-macos-unix-certif...
Identical changes were made for Tahoe's certification. This includes disabling SIP.
https://www.opengroup.org/csq/repository/noreferences=1&RID=...
So Tahoe is certified, but what ships with every Mac isn't certified UNIX. Not that being certified makes any difference what-so-ever.
jonathaneunice|5 months ago
That window window of optimism—roughly mid-1980s to mid-1990s—closed fast. Open source projects and _de facto_ standards proved far more powerful in deciding where applications would run, where investments would be made, and which variants survived. Today, the real baseline isn’t POSIX in a binder or some Open Group brand certificate, but Linux + GNU + the APIs everyone codes to. In some ways we've regressed—or more charitably, we shifted back to a more pragmatic form of standardization.
em-bee|5 months ago
i would not call that a regression. compare that to the browser standard which is largely controlled by google.
drob518|5 months ago
amiga386|5 months ago
Can I call poll(2) on a terminal device's file descriptor?
Requirement for certification: https://pubs.opengroup.org/onlinepubs/9799919799.2024edition...
> The poll() and ppoll() functions shall support regular files, terminal and pseudo-terminal devices, FIFOs, pipes, and sockets.
Apple (last time I checked): https://developer.apple.com/library/archive/documentation/Sy...
> BUGS: The poll() system call currently does not support devices.
I asked the same question of Sequoia: https://news.ycombinator.com/item?id=41822308
shiomiru|5 months ago
Meanwhile poll() just works on Linux and the BSDs, certified or not.
johnisgood|5 months ago
> It's not simply that certification costs money. It's that a lot of modern UNIX-like operating systems don't adhere to the UNIX spec. For example, the OpenBSD man pages specify the ways in which they diverge from POSIX and UNIX in the Standards section: https://man.openbsd.org/sh.1#STANDARDS, https://man.openbsd.org/awk.1#STANDARDS. Often times these are small deviations that might not matter to most people, but it means that they aren't UNIX.
Except it seems like macOS diverges, too, yet it is certified. I wonder in what other ways it diverges.
brewmarche|5 months ago
veggieroll|5 months ago
mamcx|5 months ago
qhwudbebd|5 months ago
jcalvinowens|5 months ago
comex|5 months ago
Mach absolute time is monotonic. It pauses while the system is asleep, which may or may not be what you want.
If need the timer to keep incrementing while the system is asleep, there's no way to do it directly with a timed wait, but you can use kevent with EVFILT_TIMER + NOTE_MACHTIME + NOTE_MACH_CONTINUOUS_TIME.
[1] https://github.com/apple-oss-distributions/libpthread/blob/1...
[2] https://github.com/apple-oss-distributions/libpthread/blob/1...
[3] https://github.com/apple-oss-distributions/xnu/blob/e3723e1f...
breatheoften|5 months ago
Browser standards managed to do this in a lot of ways despite far more complex standards, more complex variations in behavior, and much more rapid continue evolution ...
dpassens|5 months ago
ExoticPearTree|5 months ago
I also like the fact that I have a very polished desktop manager running on great hardware with a lot of battery life.
I wouldn't trade this for anything.
ksec|5 months ago
quink|5 months ago
So, for all intents and purposes, nothing that would be relevant in any reasonable end-user way in 2025. It’s all just: here’s defaults and here’s scripts to set up your environment and here’s a dozen things to run brew with. But no standard.
Pet_Ant|5 months ago
https://en.wikipedia.org/wiki/Single_UNIX_Specification#Comp...
oldpersonintx2|5 months ago
[deleted]
enricozb|5 months ago
lapsed_lisper|5 months ago
https://pubs.opengroup.org/onlinepubs/9799919799/
So a conforming OS has to make case-sensitive file systems available (which MacOS does: you can create case-sensitive HFS or APFS volumes). But I'm not sure if a conforming OS instance (i.e., running system) has to have any case-sensitive mount points, and either way, AFAIK there's no practical and race-free way for a conforming application to detect whether any particular mount point behaves case-sensitively.
So I believe that as far as the standard goes, a conforming application might run on a conformingly-extended OS where no portion of the the file namespace behaves case-sensitively. IOW, a conforming application cannot rely on case-sensitivity for file names.
Analemma_|5 months ago
signa11|5 months ago
matt3210|5 months ago
daft_pink|5 months ago
irusensei|5 months ago
EDIT: already downvoted to negatives. The Linux folks really don't like to be reminded of that.
p_ing|5 months ago
yjftsjthsd-h|5 months ago
Have they? I'm not aware that any of the desktop linux projects particularly care about POSIX or being a certified Unix™.
jeroenhd|5 months ago
The Linux desktop is widely used all across the world in the form of ChromeOS and, if you count touch screen devices, Android.
em-bee|5 months ago
Keyframe|5 months ago