Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> To the Unix purist, this might appear wasteful and unnecessary, but macOS isn’t, and never has been, Unix.

I get what they mean, but macOS is even Unix certified. https://www.opengroup.org/openbrand/register/



"I get what they mean, but macOS is even Unix certified."

What do they mean?

To me the blog author is primarily focused on the issue of _control_, i.e., being able to control the hardware that he purchased as opposed to letting a company control it, e.g., through pre-installed software, remotely installed "updates", default settings, etc.

He cannot control its default behaviour hence he wants to "slim MacOS down"

"UNIX" was a pun on the name of another OS that allegedly was accused of being too large and complex. That OS, Multics, was designed to run only on specific hardware from GE and later Honeywell

UNIX was a smaller, less complex alternative that, after its rewrite in C, could more easily run on a variety of hardware and be modified by the people using it

Apple does not allow people using MacOS to modify it

MacOS is proprietary; unlike AT&T's UNIX it has not been released into the research community resulting in non-commercial, open source "MacOS-like" OS projects (HackIntosh notwithstanding)

A user cannot write programs for MacOS without restriction by the company, e.g., prior approval, "developer" fees, etc.

MacOS cannot easily be used on a variety of hardware, only on Apple's proprietary hardware

Compared to non-commercial UNIX-like OS, MacOS is larger and more complex

https://eclecticlight.co/2023/12/04/macos-sonoma-is-setting-...


> To me the blog author is primarily focused on the issue of _control_, i.e., being able to control the hardware that he purchased as opposed to letting a company control it, e.g., through pre-installed software, remotely installed "updates", default settings, etc.

Which has absolutely nothing to do with the OS being an UNIX or not. It's a bit weird to see the allusion to UNIX to be fair: Howard Oakley is deep enough down the rabbit hole that I would expect him to know that History is full of proprietary and closed UNIXes.


NB. The blog refers to (a) the "Unix purist" and (b) MacOS not being Unix. Arguably, (a) is more important, irrespective of whether (b) is true (IMO it's ambiguous)

For example, the "Unix purist" might refer to someone who identifies with the "ideals" associated with that OS, e.g., relatively small, portable to potentially any hardware, free to study and modify, etc. And (b) might refer to MacOS not conforming to those "ideals" (despite having a limited license to use a "UNIX" trademark)

At this point, (b) is ambiguous; what is "Unix". It might mean different things to different people

Ironically, Apple took the "Unix" parts of MacOS from open source, non-commercial "UNIX-like" OS projects such as NetBSD and FreeBSD that are not "Certified UNIX"


HP-UX and IBM AIX are probably shocked to learn that they, too, are not Unix


Sadly, HP-UX just reached EOL. I think their Integrity servers let you choose between RHEL and SLES now?


Perhaps the reason Apple sought the "Certified UNIX" label was to please business customers


A user cannot write programs for MacOS without restriction by the company, e.g., prior approval, "developer" fees, etc.

Adding emphasis on "without restriction"

Opinions may differ but to me using Apple's "Darwin OS" is different from using a BSD project OS

For one, I cannot install Darwin without also installing a gigantic GUI

XNU, or XINU, stands for "X Is Not UNIX"

To me, that giant Apple GUI is not UNIX


NB. I do not use a graphical layer or "terminal emulator". I only use textmode


You can write a UNIX program for MacOS though.


> MacOS is proprietary

Some of the drivers are. The core is open source, though. macOS' particular choice for its graphical user land is proprietary as well, but AT&T's UNIX had no such equivalent, aside from some experiments, so that doesn't make sense to use as a point of comparison. Not to mention similar systems in the UNIX-esq space, like SunView, NeWS, VUE, NeXTSTEP, etc. were proprietary too. That has always been par for the course in the world of "graphical UNIX". The so-called "Linux desktop" is the aberration.

You can, of course, run an open source graphical user land, like Gnome, instead on top of macOS' UNIX-y fashioned bits if you so wish.


> The core is open source, though. macOS' particular choice for its graphical user land is proprietary as well

I ran into a kernel panic specific to my macbook's hardware. How do I compile a new kernel with some extra debug printlns and boot it to figure out the panic?

On any actually open source operating system, this is doable, but I'm not holding my breath for any working instruction here. As far as I know, there's no way to modify the source code of, and then boot, the macOS kernel.

Perhaps "the core is open source" doesn't mean that I can run a modified kernel to you?


> How do I compile a new kernel with some extra debug printlns and boot it to figure out the panic?

First, explain how you are doing it with the AT&T UNIX kernel. We can then help you adapt the process to Darwin.

> On any actually open source operating system, this is doable

I suspect you forgot to read the thread. While the grandparent comment considered AT&T UNIX to be "open source", that doesn't mean open source in the way we think of the term today. AT&T UNIX was very much proprietary in its own right. Today, we'd probably say "source available". Whether or not that is doable was dependent on what kind of agreement you had with the owner. They might have let you for a substantial fee, but Apple might let you for a substantial fee too. Have you asked?


AT&T did not ship with the kernel source code, but they often shipped with the compiled object files of the kernel and a command line utility that allowed to change the kernel configuration parameters, after which the kernel would get re-linked into a new one.

Not open source by any definition, but it was a viable way to obtain a new kernel image. The practice has become obsolete after the adoption of loadable kernel modules across nearly all UNIX flavours, with the exception being OpenBSD (if my memory serves me well).


> I ran into a kernel panic specific to my macbook's hardware. How do I compile a new kernel with some extra debug printlns and boot it to figure out the panic?

1. You can find panic logs in Console.app. macOS writes them into NVRAM and stows away into files on its next boot. That will give you the process and kernel extension that was the culprit, and a stack trace.

2. sudo nvram boot-args="debug=0x122" or something like this will increase log output from the kernel. Those debug prints are probably there already. You can even attach a debugger running from somewhere else, presumably over Thunderbolt on newer machines.


The next sentence is also interesting actually.

> It’s a closed-source proprietary operating system

Most UNIX systems were proprietary & closed source though?


All of the commercial Unix operating systems were closed source.

The first open Unix-like is 386BSD which predates Linux. It was said that if 386BSD didn't get mired in a lawsuit, Torvalds would have used it and Linux would not exist.


Same applies to Windows NT POSIX subsystem, had Microsoft been serious about UNIX support on Windows, similar to how IBM and Unisys do on their mainframes and micros, there would be no reason to bother with Linux.

My case was exactly that, I got Slackware in 1995's Summer because that subsystem wasn't enough to do the DG/UX assignments at home.


And the reason BSD survived is the maligned ‘advertising clause’ that most later BSD-type licenses dropped. Berkeley countersued that AT&T had promoted that System V included vi, without the required attribution.


> macOS isn’t, and never has been, Unix.

MacOS is the most UNIXy of the UNIXes

1. Comparatively heavyweight

2. Proprietary

3. UNIX APIs


To beef up the historical comparisons, "creates their own workstations on RISC-derived processors" is also (historically) a sign of a (commerical) UNIX, too. It isn't to jarring to mentally replace "macOS Tahoe" with "NeXTSTEP 26".


Yes on paper. Submitted version differs from what customers run at home/work.


The compliance trope that a point-in-time-assessment can't be used to support a claim is kind of a lazy take. The certification explicitly states macOS v26.0 Tahoe.

While it's true that it wasn't always truly UNIX compliant, they put in the hard yards to become so (albeit to avoid a $200M lawsuit from The Open Group) [1]

[1] https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix...


To certify any version of macOS as UNIX, the security had to be significantly altered (disabling SIP) among a few other things. This is why what is shipped is not what is certified as UNIX. You can /make/ it match what is certified as an administrator, but that would be inadvisable.

https://www.osnews.com/story/141633/apples-macos-unix-certif...

EDIT: And really, UNIX certification means nothing except to potentially government agencies and people who don't understand what UNIX and/or UNIX certification is. Or why being "certified UNIX" is generally meaningless: see the BSDs, which are much closer to "UNIX" origins than macOS will ever be.

Or Windows, which is frankly just has better architected internals and abandons legacy UNIX ;-)


> is. Or why being "certified UNIX" is generally meaningless: see the BSDs, which are much closer to "UNIX" origins than macOS will ever be

MacOS is BSD over Mach, which is itself derived from BSD.


Yes, that's the point. It's further removed from UNIX than the BSDs are.

macOS contains BSD userland, networking, file system, POSIX, and a couple of other things. But XNU, the kernel, is "X is Not UNIX", if there ever was a statement to be made about the underpinnings of macOS.

https://developer.apple.com/library/archive/documentation/Da...


You have just described OSF/1 (and later – Tru64) – a certified UNIX with a hybrid kernel operating over a Mach microkernel, BSD userland, POSIX conformance etc.

What is the point that you are making?


This is a very silly argument.

There were several actual Unixes released based on Mach, and some of them more purely Mach than macOS/NeXT ever have been.


The people that certify it say that you are wrong. What you think and what actually is are two entirely different things in this case. The fact remains that, according to the OpenGroup (and they are the one that matter here), macOS 26 is UNIX.


macOS 26 that is /altered/ is UNIX. macOS that ships on every Mac is not certified UNIX -- but it can be made to match if you're willing to give up security.

You should read through the actual certification - https://www.opengroup.org/csq/repository/noreferences=1&RID=... (there are a couple more in the repo).

To run the VSX conformance test suite we first disable SIP as follows: [...]

Feel free to disable SIP on your Mac. I certainly won't be doing so on mine.


You’re confusing operating mode with operating system.

SIP/SSV don’t create a different macOS, they restrict mutation and introspection. They don’t change the POSIX surface, the SUS semantics, or the kernel interfaces being certified. They just stop test harnesses from instrumenting the system without elevated privilege.

By your logic, no modern OS is anything it claims to be unless you run it in an insecure debug configuration. Linux isn’t POSIX because you need root. Windows isn’t Windows because kernel debugging exists. That’s obviously nonsense.

The Open Group certifies macOS 26 as shipped. Temporarily relaxing protections to run a conformance suite does not produce a “different OS”, it produces a different trust configuration of the same one.

Saying “it’s not really UNIX because SIP is on” is like saying a container isn’t Linux because it doesn’t let you mount /proc without extra privileges.


You didn't read the article, did you? SIP isn't the only alteration. And we don't know all of the changes required due to the waivers.

> if you want your installation of macOS 15.0 to pass the UNIX® 03 certification test suites, you need to disable System Integrity Protection, enable the root account, enable core file generation, disable timeout coalescing, mount any APFS partitions with the strictatime option, format your APFS partitions case-sensitive (by default, APFS is case-insensitive, so you’ll need to reinstall), disable Spotlight, copy the binaries uucp, uuname, uustat, and uux from /usr/bin to /usr/local/bin and the binaries uucico and uuxqt from /usr/sbin to /usr/local/bin, set the setuid bit on all of these binaries, add /usr/local/bin to your PATH before /usr/bin and /usr/sbin, enable the uucp service, and handle the mystery issues listed in the four Temporary Waivers.


Don't be rude. I did read TFA, hence my comments. You didn't understand my comment, did you?

Whether it disabling SIP, enabling root (see the bit about Linux and Posix in my previous comment), enabling case sensitivity in APFS (done for backwards compatibility), or any of the other stuff, the OS shipped remains the same as the tested one, and pay attention because this is the bit you seem to be incapable of grasping, with the extra bits turned on! Some are dumb, some for backwards compatibility and some are genuinely useful.

A Kia Ceed is still the same Kia Seed if the showroom add their stickers, changed the tyres and put some registration plates on it.


The certification test suites are clearly a superset of what most "Unix" applications require.

I haven't used UUCP since the 90's, have you? I ran a UUCP node for about 5 years. Fun times, but not exactly useful today.


> Or Windows, which is frankly just has better architected internals and abandons legacy UNIX ;-)

Current macOS user, and former NT kernel dabbler and VMS user here. That's highly debatable.

On the kernel side, Windows is still filled with legacy VMS-isms. Eg: Object Manager (object/resource model), named objects, handles, how processes and threads work, vmem, scheduling etc etc

On the userspace side, Windows is still filled with legacy DOS-isms.

Don't me wrong, I love the underlying Windows OS, despite its many quirks, but it's filled with perhaps even more legacy cruft and definitely isn't any sort of step above anything else.

I also don't believe anyone actually runs macOS in a UNIX-compliant configuration. Rather, it's a checkbox on some RFP and nobody is clued into why it's actually there, because all the people that did know have since retired.


What lineage of OS predates both DOS and VMS? :-)


As the popular phrase goes: "It's legacy, all the way down". What matters is what's left of those legacies in current revs.

In both cases: "Quite a bit", but I wish the base Windows OS would evolve away from legacy as much as macOS has. Start with eliminating drive letters.


> Start with eliminating drive letters.

Drive letters are there for the presentation layer and of course backwards compat. Windows refers to them using device paths internally. You can too, if you wish.

https://learn.microsoft.com/en-us/dotnet/standard/io/file-pa...


Im sorry, but i dont buy that. Unix certification has nothing to do with number of processes running or "efficiency"! The OS must be SUS compliant, i.e have all the core interfaces in place, all the correct utilities (awk, grep, vi, sed etc) and theres something about header files, filesystem requirements etc. even if the macOS submitted for certification is super trimmed down, it does not matter as long as its a true subset of what is shipped to consumers.

MacOS is certified UNIX i.e its "UNIX", like it or not. On this point the article is just wrong.


Unix is both a family of operating systems and also a trademark. The name is overloaded - "Unix" is more than one thing at the same time. In addition, the trademark is "UNIX" and the operating system family is "Unix"

MacOS is both UNIX and also not Unix at the same time.

If the trademark holders decided to UNIX certify my cat, which is well within their legal right to do so, would that make her UNIX?


Unlike macOS, your cat does not, and will not, meet the industry-accepted standard that describes unix as we know it today.

https://www.opengroup.org/openbrand/register/xym0.htm


Like macOS, my cat does not qualify for the UNIX standard out-of-the-box and I'm far too lazy to configure my cat for an OS standard that's 25 years obsolete.


> as we know it today

An important nuance you seem to be missing is that SUSv3 is equivalent to "IEEE Std 1003.1-2001" (that is, POSIX 2001).

In practice, I've had to work around more POSIX compatibility issues in macOS than in all other actively developed (Free) Unix-likes, combined.


Mayhaps not with a `cat(1)` alone, but really they just need to expand their menagerie now.


Or perhaps they just won't certify your cat just as Apple won't start making Windows PCs…?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: