From Apple’s Xcode 11 beta release notes:
Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. In future versions of macOS, scripting language runtimes won’t be available by default, and may require you to install an additional package. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app.
Via Michael Tsai, who has put together a typically fantastic roundup of perspectives on this change:
This is a big deal in terms of philosophy; Apple once touted the built-in Unix tool suite as a Mac advantage. And it also means lots of practical changes; installers and AppleScripts can no longer lean on other scripting languages.
I’m not a Mac doom-and-gloomer; I think Apple is truly demonstrating that they are increasingly committed to the future of the Mac. But this is the sort of thing that shakes my confidence. So far, they have provided no justification for why they will one day no longer preinstall scripting languages. I guess there are perhaps some security benefits to their decision, and many developers assuredly took care of installing the requisite packages for themselves.
But something about this feels both arbitrary and inherently wrong. The beautiful thing about MacOS is that there’s a visually coherent interaction layer that most users spend most of their time in, but anyone — including a lunkhead like me — can fire up the Terminal at any time and run a script. Having that capability at one’s fingertips just below the surface, as well as programs like Homebrew and MacPorts, makes the Mac feel limitless. Making scripting a separate feature is limiting, even if only a little bit.
Update: Nicolas Zinovieff:
installs ruby on catalina
apparently the “extras” (python, ruby and the rest) are shipped with the other “dev” tools, like git
It would be really nice if this were a simple checkbox when installing a future version of MacOS, rather than requiring users to download and install Xcode, then run a shell command.