What’s next?

Last week, Guilherme Rambo was the the unofficial guest on every Apple-centric podcast. His inside information on what’s coming in macOS 10.15 and iOS 13 gave everyone something to anticipate, dread, or argue about. I want to talk about his last revelation of the week, that Shortcuts is coming to the Mac and what I hope that means.

Let’s start by noting, as Jason Snell did, that Rambo doesn’t use the most definitive language on this topic. First, he says

According to people familiar with the development of macOS 10.15 – which has been in the works for at least two years – the new version will include support for Siri Shortcuts…

OK, “support for Siri Shortcuts” may simply mean that apps will be able to suggest voice activation of certain actions. To me, this is the least interesting part of Shortcuts, because it’s basically limited to the automation of single steps. To be sure, these single steps sometimes take several taps or swipes to get at, so their activation with one “Hey Siri” is a real benefit, but they’re nowhere near as useful as the more complex combinations you can achieve through the Shortcuts app.

But then there’s this:

It’s also likely that the Shortcuts app – a result from the acquisition of Workflow – will be available on macOS, the inclusion of system-wide support for Siri Shortcuts on macOS 10.15 strongly suggests it.

Here, the prediction is for the Shortcuts app itself, which would be much more useful, but it’s weakened by “likely” and “strongly suggests.” Rambo seems to be drawing an inference about the introduction of a Mac Shortcuts app rather than having a source saying it’s coming.

And then there’s this:

According to sources, only Marzipan apps will be able to take advantage of the Shortcuts support on macOS.

Here we have actual sources, but it’s not clear what aspect of Shortcuts is being discussed here. My guess is that it’s just Siri Shortcuts, not a Shortcuts app. And of course, there’s the disappointing—but not surprising—limitation to Marzipan apps only.

Regardless of what comes to the Mac in 10.15, it seems inevitable that Marzipanification will eventually lead to a Mac Shortcuts app. Which raises the question of how Shortcuts will fit within the Mac automation environment. I want to expand on what Jason said in his last paragraph:

In the long run, Shortcuts for macOS needs to be able to access all sorts of low-level Mac features that its iOS counterpart can’t do, via support for shell scripts and AppleScripts. (The ability to run scripts is really Automator’s killer feature.)

Here’s the current state of scripting on the Mac:

Current Mac automation

At the base of macOS is Darwin, a BSD-style Unix. This can be scripted by all the usual Unix tools: Bash, Zsh, Perl, Python, Ruby, and so on. Sitting on top of that is all the Mac-like stuff, which gets scripted by AppleScript (ported over from the classic Mac OS) and Automator.1 The ability to script at both levels is very nice, but what makes this system so flexible as an automation environment are the connections between the two environments.

AppleScript can pull up Darwin-level information by running shell scripts through the “do shell script” construct, and Automator can do the same through the Run Shell Script action (Jason’s killer feature.). Just as important, though, is the ability for scripts at the Darwin level to access Mac-level information by running AppleScripts via the osascript command and Automator workflows via the automator command.2 Users can create their automations at the level that seems the most appropriate, confident that they can reach up or down to get whatever they need.

When Marzipan gets layered on top of the Mac and Shortcuts comes along to automate it, we’ll have this situation.

Future Mac automation

The big question is how will Shortcuts connect to the layers underneath it. Jason’s concern about the upward-pointing arrows along the left side of the diagram—will Shortcuts be able to run scripts and access the resulting information from the Macintosh and Darwin levels?—worries me, too, but I’m just as concerned about the downward pointing arrows along the right side of the diagram. Will AppleScript and shell scripts be able to run Shortcuts and access information from Marzipan apps?

My concern stems partly from my overall belief that an automation environment that shares in both directions is the most flexible. More specifically and selfishly, though, I have current automations that run in both directions, and I’m worried that those will be killed off if the main Mac productivity apps go Marzipan. For example, my system for sending and following up on invoices at work, which I discussed in this post and this episode of the Automators podcast, uses Keyboard Maestro to call a Python script that runs a couple of AppleScripts—it runs up and down both sides of the current diagram. If the Contacts and Reminders apps on the Mac become Marzipan-only and don’t give me connections between the upper and lower layers on both sides of the diagram, that system will stop working, and I will be very angry.

The people who built Unix understood the value of passing information back and forth between processes, and they gave that ability not just to C programmers but also to regular users through pipes, redirection, and shell scripting. The NeXT developers who built the Mac’s current OS maintained that tradition and extended it from the command line to GUI apps by hooking into AppleScript and Apple Events with osascript and do shell script.

We all know, though, that latter-day Apple has blown hot and cold on user automation and on opening up interprocess communication to the rest of us. The introduction of Shortcuts at last year’s WWDC suggests we’re currently in a hot phase, and I hope the connections necessary to make Shortcuts on the Mac a truly valuable tool get made before interest cools again.

  1. To this level, you could also add Keyboard Maestro, Hazel, and other third-party apps, but I’m listing only Apple-supplied features. 

  2. You can also run AppleScripts in Automator via the Run AppleScript action, but because that’s working at essentially the same level, I’m not going to talk about it here. It would be like discussing Perl’s backticks or Python’s subprocess module.