Marzipan on Mojave

Benjamin Mayo on Marzipan

Marzipan apps are ugly ducklings. As soon as you use them, you can just know these are not at one with the system. You detect that there’s a translation layer of some kind at work here, just like when you use Slack on the Mac you instinctively feel that it’s a web app in a thin wrapper. The underlying implementation is exposed to the user with a bevy of performance sluggishness, UI quirks and non-standard behaviours. That’s bad.

Awhile ago I wrote about Marzipan and included a crowdsourced list of “what makes a Mac app a Mac app.” It was a pretty comprehensive list, yet lacking in minor details. I knew there had to be a bunch of nitpicky visual annoyances and UI oddities, and Benjamin covers those really well in his post. I feel like I have a much better understanding now of what needs to happen for Marzipan apps to feel native on the Mac.


Apple, Marzipan, Delight

Note: This is not a recipe. For desserts, please see: Marzipan Apple Pie or Apfel-Marzipan-Kuchen

Here’s two opinions. They aren’t necessarily my opinions, but I know many of you share them.

  1. The visual design of iOS has grown stale and is in need of an overhaul.
  2. Marzipan apps, while better than Electron apps, still don’t feel like they “belong” on the Mac. They don’t feel like “real” Mac apps.

Let’s talk about these things.

I think iOS 7 was an important design reset for iOS. I also think that it’s taken WAY too long to walk it back, in terms of intensity, to something more reasonable, accessible, and beautiful. 

Before the rumor broke that iOS 12 was going to focus primarily on stability and performance, I think many people, including myself, were hoping for a major UI makeover. In addition to a system-wide dark mode, some folks were hoping for a fresh look for first party apps like Reminders and Notes, and others wanted to see updated appearances for controls like UIButtons, UISwitches, and UIPickerViews.

I’ve watched a good number of WWDC 2018 sessions and if I had to pick an overall theme for this year’s conference, it would be “Delight Through Interactions.” So many of the sessions are all about how we can make our apps better by leveraging fluid, reversible, and interruptible gestures and animations, how we can extend them by making them more useful across platforms, and how we can improve their performance by writing efficient code that scales. (Note: I could have selected like five different sessions to link to for each of those phrases. I just picked my favorites)

Hmm. A focus on delightful gestures, low latency transitions, and cross-platform usability? That almost sounds like Apple is working on some special new hardware. It also sounds like its preparing us to port our apps to Marzipan. In the absence of major API changes and with the focus on how apps should behave, we’re left wondering whether or not Apple still has the same opinions about how apps (and the OS as a whole) should look.

Here’s my theory: Apple is working on a significant design overhaul for iOS 13, and it will address many of the issues people currently have with Marzipan.

Why did macOS get Dark Mode before iOS? That’s weird, right? These days, macOS typically follows in iOS’s footsteps. On the other hand, why should Apple designers waste time creating “dark” versions of every UIKit control now when they’re just going to have to re-do it to match iOS 13’s new look?  

Anatomy of a Mac App

Tuesday morning I asked Twitter what makes a Mac app a Mac app. I was genuinely curious, because I’ve been using Macs for 15 years and didn’t feel like I had a complete sense of what differentiates a native app from a non-native one. Greg Pierce (developer of Drafts) helpfully referred me to a section of Apple’s Human Interface Guidelines that lists four main characteristics of a Mac app: flexible, expansive, capable, and focused.

I got many other answers as well, including one that referred me to a list that Steve Troughton-Smith crowdsourced a few days ago. Here’s that list, plus a few extras in bold:

  • Menu bar and window toolbars
  • Sidebar/source list
  • Preference windows
  • Touch Bar support
  • Contextual menus
  • Tooltips
  • Multi-column tables
  • Field editors
  • AppleScript
  • Tabbed windowing
  • Multiple windows
  • Standardized color picker and font panels
  • Pop-up menus
  • Time machine/versioning
  • Compact control sizes
  • Resizable split views
  • Outline views
  • File-system access
  • Scroll bar elasticity (often missing in non-native apps)
  • Selectable text where you would expect 
  • Customizable toolbars
  • Honors general system preferences (e.g. button color prefs) and default apps 
  • Support for Services
  • Drag and drop support

Writing about Marzipan for 9to5Mac, Guilherme Rambo notes:

“Other Mac-like elements that can be used by iOS apps on macOS are contextual menus, the menu bar, translucent sidebars (such as the one in the News app), window toolbars and the Touch Bar. These elements have been exposed to the iOS apps through new classes in the version of UIKit available on the Mac.”

That knocks a few items off the list, at least! Many of the other things listed would greatly improve iOS apps as well. After all, there’s nothing that should prevent iOS apps from also being flexible, expansive, capable, and focused. Which brings me to…

WWDC 2019

Here’s some things I’m hoping to see at WWDC 2019:

This could be in the same, hopefully refreshed, style as UIPickerView and UIDatePicker. There could be a standard version that would automatically list all installed fonts, with a way to customize which fonts are listed. This could be easily hooked up to a label or text view as well.

UIColorPicker, UIColorPickerController, and UIColorPickerDelegate
UIColorPicker would be more modular and would require manually setting up a delegate. UIColorPickerController would contain the boilerplate delegate methods and would be an entire view controller dedicated to color selection.

iOS Time Machine versioning support
This might be too much to ask for next year, but I’m imagining this being announced at the same time as a new hardware accessory similar to the AirPort Time Capsule that would enable wireless iOS backups to a local physical drive.

iOS support for rearrangeable UIButtons in a toolbar/nav bar
This could be as simple as a new boolean: isMovable. I’m guessing UIButtons and UIBarButtonItems are going to look a heck of a lot more like buttons in iOS 13.

Auto-generated tooltips
Tooltips in Marzipan apps could be drawn directly from accessibility hints or labels.

Consistent, system-wide, default keyboard shortcuts for iOS 
I don’t even use a hardware keyboard with my iPad, but this still pains me to think about.

Dark Mode
Oh, and maybe the custom accent colors from Mojave? Because why not?

Final Thoughts

I noticed some fussing about the scaling of apps ported to the Mac using Marzipan, which are apparently rendered at 1.3x and downscaled, or something like that. I’m guessing that’s going to become a non-issue eventually, between the iOS redesign which may allow for a smoother translation between touch-optimized and mouse-optimized (compact) controls, and the likely-to-be-increased screen resolutions of new devices released this September. But what do I know? (Hint: not much, lol)

Anyway, I’m really excited about Marzipan. I think it’s a great idea, and I can’t wait to see what waits for us in Phase 2 of the project and beyond. Ultimately, I think it will make both iOS and macOS more useful, powerful, and delightful, without taking away anything that people love from either platform.

What do you think? Will iOS get a re-design next year? Will the Marzipan project ultimately improve both macOS and iOS in tandem? Feel free to share thoughts with me on Twitter, or better yet: write your own blog post.