How Long Will macOS Be Unix?
jonathanbuys.com
jonathanbuys.com
The solution is to bundle your own runtime, or install with homebrew if you’re a dev.
I really don’t see Apple removing the UNIX utilities and terminal.app any time soon. Of course if they do I’ll be in the market for a new OS.
Apple needs a development environment for its own in-house OS developers to use. macOS needs to have the necessary facilities to support its own development, and also the development of iOS. So long as Apple uses macOS as its OS development platform, it is going to want to keep the UNIX components to satisfy the needs of its own OS developers.
It's still fine (my only major showstopper being that valgrind just straight up isn't a thing for recent versions of OS X, with the brew version not compiling on 10.15 or 10.14), but they definitely have enough resources to make it, you know, "just work". which hurts especially when Microsoft is going full "developers developers developers"
I don't know anybody in the macOS development team, so I don't know their work practices, but it totally wouldn't surprise me if they've all installed Homebrew and use it heavily.
I infer Apple's attitude as being "if you are technical enough to use Homebrew, you are technical enough to download and install it yourself". (Or MacPorts, or Fink.)
If they bundle it... then people might start turning up at the Genius bar to complain "brew install X gives me an error!"
> my only major showstopper being that valgrind just straight up isn't a thing for recent versions of OS X, with the brew version not compiling on 10.15 or 10.14
I feel the same pain... I just use Docker for Mac to run valgrind for Linux. For my personal use cases, that works fine (since I don't write much macOS-specific code)
Old, or BSD? Darwin never used GNU coreutils.
> no Darwin containerization (which would be handy for development without having to give 2GB to Docker Desktop to get a Linux userland up).
Do you want containers with a Darwin personality, or Linux? The latter would require either ABI emulation like FreeBSD/SmartOS/WSL1, or virtualization+glue like WSL2 on Windows. Doable, but messy and unlikely from Apple's perspective ("clean" systems, heavily Apple-centric view of the world).
Old and BSD.
> The latter would require either ABI emulation like FreeBSD/SmartOS/WSL1, or virtualization+glue like WSL2 on Windows.
Both have been “done” by third-parties. (As in: they exist; they’re not perfect.)
That is a bit interesting; the BSDs are still permissively licensed, so maybe Apple just doesn't see enough benefit to justify the effort of pulling in new features? (Or implementing features themselves, depending on how diverged the codebases are)
Not just coreutils, this extends to all third-party GPL tools.
> no Darwin containerization
Not for you, but I hear the simulators do some fun things with launchd namespaces ;)
> my only major showstopper being that valgrind just straight up isn't a thing for recent versions of OS X, with the brew version not compiling on 10.15 or 10.14
Valgrind doesn’t work because nobody has put in the time to make it work on new systems (keeping up with new macOS releases in a timely manner is extremely difficult unless an engineer is pushing for it, and AFAIK anyone who would has left the company or lost interest in doing this). Address sanitizer kind of does some of the same things, so you can try that.
As for iOS, it is not the same as macOS and should be considered separately. I’m not sure why you’ve equated the two (different use cases), but maybe you are genuinely (and unnecessarily) worried.
The aim is to reach feature parity across their three systems though, so you have a point.
Ignoring the parallel universe of Mainframe computing, server UNIX has been replaced almost completely by server linux. The Free/Open/Net BSDs are knocking around both desktop and server spheres, but they are not common. Desktop macOS is the only recognisable strain of UNIX you are likely to encounter.
I agree with the point made by the OP of course, and I've swapped my MacBook to Ubuntu for this reason.
FWIW, I think "Unix" as a philosophy exists (even mainly exists) outside the spec certification, but this is how you get there.
Inspur has K-UX, however, I have never used it, so can't comment on it other then knowing it runs a Linux kernel.
[1]https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc.....
IBM of course has the resources to prop up AIX as long as it has customers that depend on it, whereas Solaris is now pretty much dependent on the community. At least it is based off of SVR4 and not SVR3 (like AIX), has source code available, and runs on x86. Not sure that will be enough for it to survive into the future though.
At this point the endpoint sphere is in transition. Someone could take a BSD and launch the next big thing on it if they had the right killer app. Netflix is a good example of this, or which ever consoles have ran BSD, too. I’d love to make my own startup with embedded or modded *bsd as well someday.
If this happens, give me a call, and I'll help you build torches and sharpen pitchforks.
But until then, killing off your developer community is just about the stupidest thing you can do. Yes, it happens anyway (see also: Steve Ballmer), but what does worrying about it really get you, except worked up?
NOTE: All of this is my own personal opinion & viewpoint and in no way should be construed to represent any secret internal knowledge of Apple's internal reasonings & whatnot (I have none)
I think you’ll find that they often do weigh in, but without announcing it because they’re trying to avoid providing information that would force them to put the disclaimer you did ;)
> I'm not 100% sure but IIRC the issue with having python bundled is the OS is that the specific version then became required to ship meaning we were stuck on ancient versions of Python2/Python3 internally (& same for Ruby probably) to make sure that externally people relying on specific behaviours stayed functional. Additionally having them (or at least Python) installed at the system level caused all sorts of havoc in terms of interplay with other Python versions installed via homebrew if you weren't super-careful with how your paths resolved (& sometimes even then).
I believe this is LLDB linking against Python 2 in a way that is pretty much incorrect. I think Python 3 got a bump recently? For once this isn’t completely Homebrew’s fault :P
That may be true in general but this specific thread appears to be filled with wild speculation without attempting to understand the motivations behind this move, hence why I felt the need to try to provide what I hope is some more meaningful context.
* It was easy. I don't know what to add except it was easy.
* It is fast. I now consider Mojave bloatware, although I didn't know it at the time. It appears that there are now so many things running in Mojave that my old macbook could not handle it. With Ubuntu 19.04 it is FAST. And what can you say? Except imagine what 19.10 would be like on a faster CPU. Not that I need it, but ...
* Its fun. Probably this is a function of how fast it is, but also most things just work very nicely. I'm fond of 19.10 in a way that I have not been fond of my macbook since maybe Sierra.
* I miss Apple-C and Apple-V for cut and paste and I miss iterm2, but that is all.
* The only thing I need a mac for is ios development and for that I plan to get a mac mini, but otherwise the run from an Apple II, through a Mac SE and an iMac has ended for me.
* Oh, and you can run wine and windows stuff really easily on 19.10.
Even if that doesn't come to pass, I'm not super concerned about this. Which isn't to say that I'm serenely unconcerned, but as people have noted, there are ways to install and manage these without them being provided by the OS vendor, and probably most Mac users here have been doing just that for a long time.
> Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages.
This sounds sensible to me. For ruby, python, node etc you need specific versions for different projects. I literally never use the OS's python -- that's a private matter for the OS and if it doesn't need Python any longer then fine. (rbenv, pyenv, nvm etc help with managing versions)
> What bothers me the most though is that Apple has removed the man pages from their online documentation.
I recommend installing the coreutils package from Homebrew and using that over the BSD Unix utilities.
I also (perhaps controversially?) would recommend using --help over man pages where possible for the simple reason that you are probably fallible, like me! Us mere mortals tend not to have a clue whether the man pages we're looking at are for the executable we're invoking or not, and staying on top of man pages involve staying on top of a bunch of environment variables and weird directories that date back to the hairier days of UNIX. With foo --help, you are always 100% sure that it is giving help for what the executable "foo" resolved to.
Oh, the irony! If the FBI released a lineup of suspects in the case of who killed Unix, those three names would be right at the top, with Perl as the ringleader* .
Besides, Unix isn't Perl, Python or Ruby. It's an OS turned API in the form of POSIX. BeOS was Posix compliant and could build and run Unix software. Even plan 9 can build Unix software using APE, the ANSI Posix Environment. Apple just doesn't feel like paying distro package maintainer.
* See #8: https://interviews.slashdot.org/story/04/10/18/1153211/rob-p...
It is extremely secure, easy to use, and simple, and has allowed me to develop software on it like it is a linux machine.
ArchMac is not the only one impacted, e.g
- nix found a workaround to install on /nix but it’s a pain involving APFS volumes and synthetic.conf
- homebrew relies on ruby which will be removed in a future version
- with the impending Damocles sword of notarized binaries it will be a serious pain to do package management
And that’s just the most structural ones. Death by a thousand cuts isn’t far off.
The X of Mac OS X has been dropped for some time now for branding reasons, but reality seems to come to terms with that symbolic move.
If Euro governments want to do something real about antitrust, this would be a good place to start.
...Or you can just use the `man` command, which still works fine.