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

The visceral response to the statement:

> To the Unix purist, this might appear wasteful and unnecessary, but macOS isn’t, and never has been, Unix. It’s a closed-source proprietary operating system designed for use by millions of consumers and regular users. Rather than configuring it using config files or its thousands of property lists, its controls are largely exposed in System Settings, with a few settings hidden away and only accessible through the defaults command.

Is really, really interesting to me, because so many people (including the author) are so invested in the question of whether or not "macOS is Unix". There's so much signaling happening here, people throwing around UNIX all-caps, talking about certifications, the "good parts" of UNIX, that macOS "[is] quite literally [UNIX]", while seemingly missing the author's intention entirely.

You don't have to agree with the author, but a good faith interpretation of "macOS isn’t, and never has been, Unix" should be obvious in its meaning. Yes, macOS 26 has been certified by The Open Group to be compliant with the Single UNIX Specification.

You know what else is UNIX certified? IBM's z/OS. Yet I don't think people would be clambering to say that z/OS's USS is "quite literally UNIX" with the same ferocity.

The point the author is clearly attempting to make is that the idea and system of macOS is not Unix. Even if macOS is, legally speaking, "UNIX®", it was not made to be UNIX®. macOS is not built to adhere to the "UNIX® philosophy". The fact NextStep and OS X after it were BSD-compatible is an implementation detail -- a useful one at that -- but an implementation detail nonetheless. It's like Android's use of the Linux kernel underneath. Yes, Android is Linux, but there's a reason why there's a vocal community of people who champion "Real Linux smartphones". Android uses Linux, but Android isn't defined by Linux.

I'm not trying to prove anyone right or wrong here, I just want to give my three cents on the matter. I would call macOS "unix-y" because it's close enough to being a "unix" to be comfortable on the CLI, but I've touched the unix "heart" enough to know it still smells like 2005-ish FreeBSD, largely frozen in time.

Of course, that's good enough for most things. But then, does that make Windows a Unix-like, just because it can run Linux ELF executables via WSL1? Conceivably, if Microsoft cared, they could get UNIX® 03 certification via WSL1, WSL2, or some hacked together reincarnation of SFU with parts from WSL1.

Yes, I know, macOS has a "real" BSD core, and a "real" unix heritage through BSD and OSF/1. The point is that it's not hard (IMO) to see where the author is coming from saying "No, macOS is not a Unix".

(I disagree with him for different reasons -- he ambiguously implies that "Unix" means being open-source, for instance -- but I agree that macOS as a platform is not very Unix-y, even if it is UNIX®.)



The analogy with Android and Linux is dead-on. As is the confusing language with which people talk about these things. "Android isn't Linux" and "macOS isn't Unix" aren't quite the right way to express the sentiments and thoughts behind them— even when those sentiments and thoughts are themselves clear and reasonable.

I don't think Apple's choices to deviate from the Unix standard are necessarily for the worst; many are for the better! But their cultural deviation from the norms of the free Unices and Unix-likes is part of what makes computing on macOS feel constraining and frustrating to me. It seems like that sense of disappointment (shared by many others), and defensiveness in response to it, end up driving a lot of discussions around this.


> Conceivably, if Microsoft cared, they could get UNIX® 03 certification via WSL1, WSL2, or some hacked together reincarnation of SFU with parts from WSL1.

They probably could if they really want to.

https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem

The Windows NT kernel was designed to extend and embrace .


"UNIX® philosophy" doesn't exist, that is a religion like discussion about UNIX spread by FOSS people while arguing for GNU/Linux with their endless list of command line options.

I use UNIX in various flavours since being introduced to it in 1993 via Xenix, and cannot name a single one where this was ever true.


Well no, it does exist, but not in UNIX itself, in Plan 9.


I never found it there, and even if measures in some strange way to make it true, doesn't seem to have helped Plan 9 adoption.

Commands still have plenty command line configurations for their executions.


In terms of practical usage, imo it doesn't matter whether macOS is Unix - it's certainly not Linux. The shell is different, the bundled utils are different, the filesystem, configuration and tooling is different enough that if you try to run anything beyond the most basic scripts written for Linux, they will not work.

Which means macOS is a separate platform you need to learn and support.

By this standard, WSL2 is much more Linux than macOS.


>You know what else is UNIX certified? IBM's z/OS. Yet I don't think people would be clambering to say that z/OS's USS is "quite literally UNIX" with the same ferocity.

Does "Unix" still carry some special cachet these days? Linux is more "Unix-like" than MacOS for the reason articulated in the article, but you'll see commenters leap to MacOS's defense by pointing out that MacOS is "literally UNIX".


I think it's a sentimental thing, mixed with a dash of elitism/"purity seeking".

I don't mean that harshly. In my late teens/early 20s, I went through a "phase" where I obsessed with getting "purer and purer". This was mixed with a weird obsession with non-x86 hardware, as well. Lots of NetBSD, FreeBSD and Illumos usage, some Plan9 towards the end, lots of intellectual snobbery about "it feels better", and that sort of thing.

I'm almost 30 now, and my office has "Unix" systems from the 70s up to, well, my M1 MBP with "UNIX®" on it. PDP-11, VAX/ULTRIX, SPARC/SunOS 4, MIPS/IRIX, Alpha/OSF1, I've given them all a spin, running existing software and writing new software to kick the tires of old compilers. That's why I feel comfortable saying macOS really, really doesn't feel like any "UNIX" that I associate with "UNIX".

Although, UNIX was always a confusing term which never really meant all that much to begin with (when talking about commercial OSes/hardware platforms), but that's a whole other conversation...


> In my late teens/early 20s, I went through a "phase" where I obsessed with getting "purer and purer". This was mixed with a weird obsession with non-x86 hardware, as well. Lots of NetBSD, FreeBSD and Illumos usage, some Plan9 towards the end

Sounds really fun and informative!

> lots of intellectual snobbery about "it feels better"

How does that end up being intellectual (or snobbery, for that matter)? It sounds pretty close to "follow your heart" or "I just enjoy it" to me!

> Although, UNIX was always a confusing term which never really meant all that much to begin with (when talking about commercial OSes/hardware platforms), but that's a whole other conversation...

Seems like a relevant one, for this context ;)


That probably came off a bit too inflammatory/self-deprecating :)

The point for me was realizing that, even though I do like all these systems and OSes, and I understand the appeal of both "pure UNIX" and (on the opposite spectrum) OSes that violently reject "UNIX", this kind of purity isn't actually... useful.

End of the day, with most of the ways I use a computer for productivity, playing, or being social with other people, there are other things that matter a lot more than the "purity" of the OS. And this includes how much "real UNIX" it is. It's cool that Solaris/Illumos is "true blooded unix". And... it doesn't really matter that much. Whether or not a system is or isn't "unix" just doesn't matter, as long as it runs the software you want.

(And for a lot of modern software, "being unix-like" isn't enough; if you're not Linux, Windows, or macOS, good luck!)

The purity is also usually kind of a lie in the first place. I've got a VAX in my office running "real" 4.3BSD, before all the "POSIX-bloat" was added. But you look closely and realize there's tons of "bloat" added, for the purpose of making a more useful OS. There are mixed abstractions, redundant libc extensions, dubious system additions that look like one person needed something and added it in.

It's just so uninteresting to me now to argue about what is or isn't "unix". I still enjoy all those old OSes, but you kind of stop seeing them as "UNIX". The ways that each isn't UNIX is far more interesting, like how ULTRIX and OSF/1 abandoned "unix style" syslogs in favor of a rich binary format via 'uerf'.


I've experimented with all those platforms, and macOS feels to me like "Unix" as much as a Sun SparcStation or SGI Indy from 30 years ago.

What is "Unix" to you? To me, it's the common shell commands / utilities and a POSIX API. If I can download some GNU source, run ./configure; make; make install ... it's Unix.

Certainly, macOS is a "weird" Unix if you compare it to Solaris and look at the administrative bits. But, then again, IBM's AIX is very weird, too. And that's one of the few commercial Unix implementations still kicking.


> Certainly, macOS is a "weird" Unix if you compare it to Solaris and look at the administrative bits. But, then again, IBM's AIX is very weird, too. And that's one of the few commercial Unix implementations still kicking.

That's why I said that "Unix" has always been kind of confusing as a name, because a lot of "Unix"es are very different. I've never used AIX personally, but I know it's pretty funky. And there have been weirder "unix"es, Domain/OS was another weird one. At least a few others had split BSD/SysV "personalities", I've read.

> If I can download some GNU source, run ./configure; make; make install ... it's Unix.

On the one hand, I agree with this.

But then, by that standard, you could call basically every OS in use today "Unix", including Windows via Cygwin, or WSL, or etc...

To me, "Unix" is epitomized by Sun's fix for SunOS 4 for disabling Yellow Pages and using only DNS for hostname lookups.

Their official advice? To unpack the libc shlib, delete the object code for the Yellow Page functions, then repackage it into a new libc version.

That feels like Unix to me, in a way that macOS just never will be. Which is also perfectly okay with me.


So Unix has to feel like dealing with old cruft to you? ;) I remember the SunOS 4 days and the annoying setup process for DNS. Those were the first Unix systems I worked with in a professional capacity.

I have a Sparc in my collection but it's running Solaris and too new to run SunOS 4. I'm considering getting a Sparc 10 or something so I can relive the SunOS days. That was my favorite early 90's Unix. Most open source software had first class support for SunOS.

Linux is "Unix" in my mind, though not UNIX (TM). WSL follows, since it is really virtualization under the hood. (WSL2, at least.). Cygwin seems like a gray area... Unix-like environment maybe?


> So Unix has to feel like dealing with old cruft to you? ;)

Well, maybe :)

It's something about the system being made of a lot of messy parts which can be split apart and taped back together. Reductively, all computers are like this, but SunOS and other "unixes" are more easily put back together.

For instance, besides enabling DNS, I've extended the libc quite a bit, to get modern OpenSSL and curl to build, as well as KDE 1 just for kicks.

You can do the same with almost any OS (that doesn't lock you out with security), but it feels easier with a "Unix". Linux is also very like this!

> I have a Sparc in my collection but it's running Solaris and too new to run SunOS 4.

You could always run NetBSD and use COMPAT_SUNOS to run a SunOS chroot ;) I haven't tried running Xsun this way but it'd probably go...


Do you blog about any of this? Extending SunOS libc sounds pretty cool!

I did install OpenBSD on the Sparc (Ultra 5) at one point, before going back to an older Solaris. Maybe I'll try NetBSD next!


Haha, I haven't yet, but I want to. Maybe soon! Though extending libc isn't that exciting, really: that's kind of the cool (Unix-y??) thing about it. You just (IIRC) extract the static archive, add whatever .o object files with whatever symbols, add the symbols to a manifest, pack it up, and any C program on the system can call it. Since all C functions were implicit at the time (header files only had structs and enums) you can use trivially add whatever.

> Ultra 5

You should give it a shot! Even NetBSD/sparc64 has support for SunOS 4 binaries... allegedly.

If one was so inclined, you can abuse the kernel a bit and tell the compat layers to use root as their search path. I did this to make a "Linux system" with a NetBSD kernel and full GNU/Linux userland, just for kicks.

In my mind, you could do the same for SunOS. There's also COMPAT_MACH and COMPAT_DARWIN... imagine NeXT/SPARC binary compatibility alongside SunOS.

Hmmm. :)


Yes it does. It means: do my POSIX sh scripts using only POSIX utilities and their specified options/behaviour work here?


Back in the early 2000s, RedHat did a study and found the UNIX brandname actually had negative value among IT managers. They saw it as "expensive, proprietary, incompatible" etc. Meanwhile Linux was seen very positively. (So yeah nobody cares, not even the Mac users who pretend to.)




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

Search: