MacOS Marzipan
benjaminmayo.co.uk
benjaminmayo.co.uk
When Marzipan was first announced, Apple was very careful to temper people's expectations. Marzipan is not about some grand new cross-platform development framework. It's not about merging Mac and iOS. It's about allowing iOS developers to port certain iOS apps to the Mac with as little friction as possible.
And in that sense it's a complete success. Many 3rd-party apps can already run inside of Marzipan with little or no code changes. That's a huge win.
There are some very obvious downsides. Most iOS apps are a poor fit on the desktop and won't conform to the expected Mac desktop expectations. I suppose Apple could have gone the Windows 8 route and put these iOS apps in a completely separate environment, but we all know how that turned out on Windows. At least these apps attempt to mesh with the regular desktop environment.
Another downside is that it's a hack. These are pure iOS apps running inside of an iOS simulator designed to look like a Mac app. These apps have no access to the world outside of iOS.
If you're looking to make a great modern Mac app, Marzipan isn't for you. If you're looking for an easier way to share UI code between your AppKit and UIKit apps, Marzipan has nothing for you. If you have a relatively simple iOS app that you think might be useful on a Mac, Marzipan is exactly what you've been waiting for.
If you want a peek into what a grand new cross-platform development framework might be, take a look at the JetEngine.framework embedded in the Mac App Store app. It appears to be a separate UI framework that is neither AppKit nor UIKit, but can run on top of either. However, it's full of App Store-specific UI components and I would expect that it was developed only for internal use at Apple.
Also, the App Store is a client for remote data (what's on the store). What should one expect to see when there's no connectivity? A local cache of all app data? That could be feasible, but also not very useful (you still can't buy or download) and might be misleading (e.g. an update might have been added or taken down etc).
It's not that there's no connectivity. Whatever they're using for metadata is extremely slow. As though all requests need to go to California or something.
> A local cache of all app data?
Yes. This is how Linux package managers all work; metadata is cached locally so search (and dependency analysis - not needed in AppStore) performs well.
Maybe put some pages explaining when you would need this functionality, that you have to be living in this country, etc. Or you could also limit the amount of times a user does it for maximum once in a month or less. And so on.
There's a lot of good alternatives, having bad UX should never be one of them.
Otherwise your users are just going to solve it their way, like in my case, where I had to create another account and backup all my stuff from the old account simply because I moved from my country.
For example, the iOS Camera app hides away options for the frame rate and resolution of video under several menus. This option is much more accessible in actual cameras. In Apple's case, it's put out of easy reach to prevent the user from obsessing over which resolution to capture a moment, and to provide a uniform appearance to all captured content.
Options are hidden away to reinforce a set-it-and-forget mentality.
There are a number of buttons that do follow iOS style though. Also, "Redeem" and "View information" open up views that were previously unavailable except through iTunes, and you can see a mishmash of styles there too.
The two things that infuriate me though are the font size of the sidebar, and the laughably placed "Done" button on the top right when you're viewing a story.
You mean the actual sidebar (with the top level note folders) and the notes list? That has been the norm in 99% of note apps (and similar 'bucket' apps) for ages, across platforms...
Having said that, I suspect the use cases of notes are quite varied, so a one-size-fits-all approach might not be straightforward.
So?
They've been working on this for a while.
Well, they can save files (like Apple's own audio notes app), connect to the network, and so on. So what access do they lack? They're not on the same direct kernel? That's probably for the better.
They are on the same kernel. As far as I'm aware, they're in the same namespace as well, so this isn't just a simulator, either.
If you mean the current 4 iOS app running on 10.14, then i agree. If you mean project Marzipan in general and what it means to developers, well we just don't know yet. Its going to be the next WWDC at the earliest before we hear any new information on the topic and its overall goals/capabilities are yet to be fully defined.
https://github.com/w0lfschild/macOS_headers/blob/master/macO...
https://github.com/w0lfschild/macOS_headers/blob/master/macO...
This thing will be massively popular once mature. Whether that’s a good thing for MacOS in the long run, I don’t know.
At least it's better than Electron, I guess. It seems ridiculous that Apple wouldn't put up the resources to implement these apps properly on macOS. But I guess getting a bad version of an app is better than nothing at all.
I hate the whole mobile-first trend, since it usually means fucking over desktop users. Remember multi-window apps? Now everyone seems set on forcing everything to be done from a single window.
[0] https://arstechnica.com/features/2018/09/macos-10-14-mojave-...
The entire purpose of porting these apps to the Mac was to dog food Marzipan. If they had made “proper Mac apps” that would have defeated the purpose.
It’s strange that a forum that usually supports “development in the open” is now criticizing Apple for doing just that.
It’s not like any of the apps they chose are core parts of the OS.
It's not about putting resources for their own apps or not. It's about enabling this route to macOS for iOS developers. They're just eating their own dogfood.
>Remember multi-window apps? Now everyone seems set on forcing everything to be done from a single window.
That's what most people want anyway. Not to have to manage 5 panels and sub-windows for each app on top of managing their apps.
Microsoft did the same, Adobe, etc.
I'm confused. The resources already exist, it's called "implementing applications on macOS".
Marzipan is for iOS devs who want their existing application quickly running on macOS without actually porting it, either because there's some demand and they don't want to do macOS development or as a prelude to a proper port/cross-platform implementation.
Apple can't magick the void into the not-void, an iOS application works on different principles than a macOS one.
From people with experience in both, UIKit is better designed than AppKit. Apple sees this and I think it's pretty clear their intent is for UIKit to supersede AppKit on macOS. One day.
Apple unfortunately shipped what is effectively the alpha version to the public.
They're built to serve different audiences, just like iOS and macOS they support. macOS and AppKit are designed around multiple windows, side-by-side, with very specific mouse and keyboard navigation conventions. iOS and UIKit are designed around single windows with nested navigation stacks, view controllers and gesture-based navigation. One tool for each job. It's not about replacement.
As always, you can use any API to implement any piece of software. It behooves you to focus on your user and pick the one that lets you provide the best experience. They're the same programming languages and just different accents on the framework. You'll figure it out if you care.
NSColor/UIColor are different, and it's not like one color class is better for windowed versus non-windowed colors. NSBezierPath/UIBezierPath perform the same task yet often the same methods have different names.
I've wasted a bunch of time making extensions so that one OS's classes would look like the other (annoying but not difficult). The fact that every developer has to do this is just silly. Apple's own WWDC video on iWork essentially says "Because we wanted it to be cross-platform, we avoided drawing the standard way, and draw all content using CALayers instead".
If Apple did nothing else but make the parts that work identically be named identically, that would be Marzipan enough for me.
Debatable. AppKit might have a bunch of legacy cruft, but it also has some truly beautiful things like bindings, or how certain interface controls work. It's a much more mature framework.
Apple hasn't shipped any library to the public.
There are 4 apps available for macOS that are entirely written with UIKit, with the exception of the bridge required to interact with macOS. They shipped those apps to the public, and they feel like incomplete apps.
Can you expand on this? I haven't done iOS development, so I'd be interested in what ways people consider UIKit superior. Although it wouldn't surprise me, since it came much later than AppKit and they had hindsight when designing it.
People seem to go back and forth on it, as in this post from a couple of years ago.
>The thing is, UIKit "just works" (most of the time at least). AppKit has so much historical garbage that it's become a pain to work with for modern macOS apps. It's still really hard to make simple things like customizing system controls and Core Animation doesn't work as well on it as it does on UIKit.
https://medium.com/@guilhermerambo/why-uikit-for-macos-is-im...
I think in this case Marzipan is a better solution, as it will allow willing developers to port native iOS apps to the Mac without much effort.
It won't help with webapp juggernauts like Slack or Skype, but it's definitely a step in the right direction.
Slack is only the beginning, and Apple sees what's happening, perhaps a little bit too late.
It’s ironic that this is an issue again. Poor window resizing performance was probably the #1 complaint in Mac OS X 10.0 back in 2001 — resizing exposed the sometimes very slow rendering behind the beautiful new Aqua façade. Apple spent a few years tweaking resize performance, even adding AppKit APIs so apps can adjust their rendering when in live resize.
Doing layout updates in a rapid mouse tracking loop is hard. The iOS window resizing system was designed primarily around screen size classes which change on events (e.g. portrait to landscape), so there’s lots of fudge room to hide rendering updates while the entire screen is being animated. The desktop doesn’t have that luxury.
It’s not perfect at the moment, but lately I feel like when I’m in macOS I’m running a browser and awkwardly trying to switch between tabs without Cmd + Tab. It’s not fun.
Over the last year I’ve been using an iPad with a hardware keyboard for productivity apps and it’s great. There’s apps for everything, even G-Suite, that I can Cmd + Tab through without any problems.
I really hope that the rough edges get worked out and Marizipan works; otherwise macOS will become even more stale.
The real abomination in Mojave is the Screenshot annotation tool. Good luck figuring out how to add and arrow with some text.
—
Edit: Changed Alt Tab to Cmd Tab
Ctrl+Tab? (is it Cmd+Tab on the Mac?) Shortcuts like that are a big part of how I use the browser.
Apple does this from time to time. Remember when iCal looked liked, to quote a Gizmodo writeup, "a lone cattleman's notebook" missing only "animated beaded tassels"? Or when Game Center on iOS looked like "an evening of backgammon at the nursing home" that "smelled like plastic bottle whiskey"? [1] Because they absolutely did.
Let's see where this thing goes. Seeing them remedy their many flagrant mistakes over the years has given me, oddly, hope.
[1] https://gizmodo.com/5849940/ugh-god-why-apple-is-making-ever...
And that was bad because? Enough things look like "a pretentious hipster notebook" already!
It creates a window for each app, and the titlebar is set to the app name pulled from Launch Services.
Mac has no shortage of apps. But the iPad Pro has a shortage of the sort of apps people use Macs for.
Would Marzipan make it easier to go in the other direction, e.g. run iOS apps in tiled windows on an iOS laptop, alongside "CLI/terminal" windows?
Why do you think this?
- iOS is Apple's primary revenue focus
- iOS is already optimized for Arm
- iOS itself was derived from MacOS
- iOS new derivative can support KB/mouse
- Arm + macOS = no 3rd-party apps compiled for Arm
- Arm + iOS = million existing apps
- Arm + iOS does not conflict with expensive MacBook Pros> iOS is already optimized for Arm
> iOS itself was derived from MacOS
All true…
> iOS new derivative can support KB/mouse
iOS can support the keyboard currently, but not very well. And it can't support the mouse at all.
> Arm + macOS = no 3rd-party apps compiled for Arm
That's what an emulation layer is for.
> Arm + iOS = million existing apps
That's a nice bonus.
> Arm + iOS does not conflict with expensive MacBook Pros
Apple is no stranger to cannibalizing itself.
So, overall, I'm still not sold that they won't just make a ARM MacBook that runs macOS, rather than iOS.
And no, I don't think emulating x86 apps on ARM will work well. Both from a technical point of view and legal point of view (Intel patents).
Windows on Arm is forced to use an emulation layer because the majority of Windows apps are x86. The majority of Apple apps are already on Arm.
Cannibalization is done to a smaller market in order to reach a larger market. Which market is larger for Apple?
Apple can do both: low-cost 2018 Arm iOS laptop and premium 2019 Arm MacOS Macbook (when Marzipan is ready to bring iOS apps to x86).
i have one, and i'm doing it -- i can run docker and windows subsystem for linux without a hitch (and honestly, it's not a bad dev experience imho).
An iPad Pro 12 with external keyboard is poorly integrated and unnecessarily clunky, even though it's the least bad option today for "iOS laptop".
iPad Pro is rumored to be getting a USB-C connector, which could enable docking with desktop monitor & keyboard.
I would've been a lot less disappointed with the article if it had the alternate title.
If an app is sufficiently good on Marzipan, then the users will steer it towards becoming better if they care.
I have never once seen anyone been able to convince Slack that their desktop app needs to be improved.
It was that attitude at Microsoft that opened the door for Apple to revive its fortunes.
I mean exactly what I said, Microsoft was complacent and it allowed Apple to cream off the most valuable segment of the market. Microsoft may still have the largest market share (in Desktop) but it was Apple that became the first Trillion dollar company.
The biggest pain point on macOS is the crappy AppKit framework which has so many awful quirks due to legacy reasons (e.g. layer-backed vs non-layer-backed views, no standard collectionview, etc.).
Most views are layer-backed by default these days. The newer APIs tend to "force" this decision on you by doing things like making your entire view hierarchy implicitly layer-backed in many cases to encourage layer-backing.
> no standard collectionview
NSCollectionView?
I know that people will say that this is Apple working hard to make the Mac viable again, but especially when considered in the context of the poor Mac hardware in the past two years, I think it’s clear that’s not the case.
Not mentioned in this article is that these apps look weird because they’re using 1.3x scaling from iOS too. Apple barely takes the time to differentiate iOS on the iPad, or even the XS Max. Owning either of these two devices constantly feels like there would be obvious places to make the experience feel better than just a big iPhone. Do we really think Apple is going to work that hard on making iOS software feel good in the Mac?
Remember, when the iPad first came out, everyone said “oh it’s new, I’m sure they’ll really make the software different soon”. It took 7 years to get multi-tasking in there. And this was the star product for a while. iOS still doesn’t really feel like iPad is it’s home.
I have no doubt that Apple could have written these from scratch and they'd be fantastic. They're just testing out the new Marzipan platform so that they can work out the kinks in it before launching it next year.
I think the better argument is that giving such tech to 3rd part devs will encourage them to be lazy.
Let’s look at another cross-platform app that Apple has had years to perfect, iTunes: terrible since they’ve had to make it work on Mac and Windows. Apple Music being the latest proof point that they cannot make a nice experience. The track record isn’t good.
But honestly, what’s the latest fantastic new Mac app you’ve used? I can’t think of any. The days of something like Keynote being released are behind us.
That's about how long it took Photos to become pretty decent. I'm sure people will eventually come around to designing for both platforms, but it will take a while for them to do so.
> But honestly, what’s the latest fantastic new Mac app you’ve used?
Well, there are a couple of third-party apps…