Archive for February 20, 2019

Wednesday, February 20, 2019

Apple to Target Combining iPhone, iPad, and Mac Apps by 2021

Mark Gurman (Hacker News, ArsTechnica, MacRumors):

The aim of the multistep initiative, code-named “Marzipan,” is that by 2021, developers will be able to build an app once and have it work on the iPhone, iPad and Mac computers, people familiar with the effort said.

[…]

In 2020, Apple plans to expand the kit so iPhone applications can be converted into Mac apps in the same way. Apple engineers have found this challenging because iPhone screens are so much smaller than Mac computer displays.

[…]

By 2021, developers will be able to merge iPhone, iPad, and Mac applications into one app or what is known as a “single binary.” This means developers won’t have to submit their work to different Apple App Stores, allowing iOS apps to be downloaded directly from Mac computers -- effectively combining the stores.

Sounds like the toaster fridge that Tim Cook made fun of, only in software rather than hardware.

skywhopper:

This is weird. It’s the sort of thing that management dreams of but which companies like Apple should realize is a bad idea. They definitely need to provide tools for making app families work smoothly across each platform, but even more importantly they need to be segmenting their devices more, not less. The latest iPads are a great example of a device that has enormous potential which is being hamstrung by an OS and dev platform that doesn’t really provide a tablet-focused experience.

And then the Mac is losing what should be its primary audience through unwanted innovations and otherwise stagnant hardware, and a failure to recognize the importance of catering to the power users who might want an actual escape key, multiple types of ports, and a keyboard that doesn’t feel like it came off a rejected tablet accessory.

Update (2019-02-21): Steve Troughton-Smith:

The Marzipan strategy seems pretty clear at this point: hybrid AppKit/UIKit apps are not happening. You don’t get to a universal app by having a vastly different codebase and framework dependencies on macOS. You also need to preserve iOS’ sandbox & perhaps even distribution model

Steve Troughton-Smith:

I get the feeling that if Marzipan’s primary purpose was to benefit the *Mac*, it would be taking a very different tack at how it integrates with macOS. Marzipan, as I see it, is going to benefit iPad, Apple, customers & developers, at the expense of what makes a Mac a Mac

Dan Masters:

Who’s switching away from macOS because it doesn’t run the Instagram app or because Messages sucks? I switched away because the deprioritisation was hampering my productivity due to bugs (and unreliable hardware)!

What’s wrong with keeping it as the truck of the lineup?

Apple is taking the consumer needs & expectations of iOS users & forcing them onto macOS users, even though the two shall never meet, resulting in fully satisfying neither user base.

If iPad users are already happily using iOS, as Steve repeatedly says, then why change the Mac?

John Gruber:

In some ways this makes sense — iPad apps are closer in scope to Mac apps. But for iPhone apps that don’t have iPad counterparts, why would developers target the Mac if they haven’t even bothered with iPad yet?

[…]

The only upside I can see to this entire endeavor is that some media consumption apps (Netflix, HBO, Hulu) might come to the Mac and be better than what we have now (using their websites, which have no offline access). Anything else I dread.

Jason Terhorst:

It sounds like Apple is willing to sacrifice “what makes a Mac a Mac” for the sake of getting a bunch of new apps for “free”. It’s a focus on quick growth.

Uluroo:

In 2025, what’s going to differentiate macOS from iOS? Why come this close to merging them while denying the Mac its own style and personality?

Addison Webb:

This looks a lot like Microsoft’s strategy with Windows. I’m happy Microsoft is trying it because I want people to try new things, and I don’t use Microsoft products. I’ve long argued that the unified app binary is a misguided goal and thought Apple shared that vision.

Patrick Goley:

Totally agree. We can already share business logic between iOS and macOS just fine. Also, the problem of, if you ship a universal ipa with iPad support, you can never drop support and go back to iPhone only. Imagine adding a macOS app into the mix, maintenance nightmare

Benjamin Mayo:

In an attempt to decipher the Chinese whispers here, I think what this actually means is that this year’s Marzipan system will not let you shrink windows into single-column designs. At a technical level, apps running under Marzipan on macOS 10.15 will not transition to compact width size classes.

Update (2019-02-26): See also: The Talk Show and Steven Sinofsky.

Update (2019-03-05): Jean-Louis Gassée:

We have our skeptics, of course, and they have a valid point as they remind us of the vast amount of time, money, and reputation that other companies have wasted on previous WORA (Write Once Run Anywhere) campaigns. But the doubters overlook the advantages of Apple’s carefully tended Walled Garden. Past WORA adventures foundered because the hardware targets suddenly changed their behavior, thus defeating existing code translations.

Update (2019-03-07): Jeff Johnson:

The Mac App Store has put price pressure on Mac apps, but not as bad as in the iOS App Store. Mac app prices are still generally much higher on average than iOS app prices. Marzipan could change that though.

iOS devs want low-effort Mac ports of their apps. But how much are they going to charge for those ports? Surely they won’t charge more $ for a low-effort “half-native” Mac port than for their fully native iOS app. Who would even pay that much for a low-effort port?

It seems unlikely that Marzipan developers would be able or willing to take advantage of higher Mac app prices. Instead, the Mac suddenly gets a flood of low-price, low-effort ports of iOS app. Accelerating the race to the bottom on the Mac.

“We welcome the competition”, some AppKit devs might say. But do you welcome the prices? You can’t make it up in volume on the Mac. The only reason the Mac has been worth developing for all these years is the relatively high app prices.

Update (2019-03-08): Brent Simmons:

I’m thinking in advance about the things I’d like to know about Marzipan.

My questions, in no particular order[…]

Update (2019-04-05): Curtis Herbert:

From the Bloomberg report, and from Craig and Kristen’s own mouths, this is an ambitious multi-year project to get it to where they want it to be. We’re seeing it, and even going to be able to use it, well before it is Classic-Apple “done.” I fully expect this year’s release to be similar to Swift 1.0: enough to start working with and maybe even ship some stuff with, useful to some but by far not all of us, and those using it will encounter tons of rough edges and tons of things subject to change.

Steve Troughton-Smith:

Great post, but games are the least likely app type to benefit from Marzipan. They’re the only native app type on iOS that can just be recompiled for macOS as-is, today, without a Marzipan. All of the underlying frameworks for games in iOS are already unified with macOS

I totally understand that many Mac users are desperate for Marzipan to mean anything other than iOS apps taking over macOS. If Marzipan were prioritizing games, then you wouldn’t have to worry about your Mac-like apps going away, etc. But Apple Arcade is not here to save you

Previously: Apple Arcade.

Update (2019-04-23): Guilherme Rambo:

Developers porting their iOS apps to the Mac will have access to new APIs that allow their UIKit apps to integrate with Mac-specific features such as the Touch Bar and menu bar (including keyboard shortcuts). UIKit apps on the Mac will also be able to open multiple windows.

Split View apps ported from iOS will have the ability to be resized by dragging the divider and its position reset by double clicking the divider, just like native Mac apps.

Enabling Mac support for an existing iOS app is as easy as checking a checkbox in the target settings in Xcode, much as you would to add iPad support to an iPhone-only app.

Benjamin Mayo:

Don’t worry I’m sure Apple’s Marzipan apps will take full advantage of the platform they run on. Just like their iPad apps right?

The Curiously Recursive Inlinable Switch Pattern (CRISP)

Jordan Rose (via tweet):

When inlinable code switches over a non-frozen enum, it has to handle possible future cases (since it will be inlined into a module outside the standard library). You can see this in action with the implementation of round(_:) in FloatingPointTypes.swift.gyb, which takes a FloatingPointRoundingRule. It looks something like this:

[…]

Making round(_:) inlinable but still have a default case is an attempt to get the best of both worlds: if the rounding rule is known at compile time, the call will compile down to a single instruction in optimized builds; and if it dynamically turns out to be a new kind of rounding rule added in Swift 25 (e.g. .towardFortyTwo), there’s a fallback function, _roundSlowPath(_:), that can handle it.

It looks like the function is calling itself, but it’s actually calling a future version of itself that is guaranteed not to recurse.

Previously: Swift Proposal: Non-Exhaustive Enums.

Waiting for a New iMac

William Gallagher:

The last update was in June 2017 which is long enough ago that the smart money would’ve bet on at least a speed-bumped iMac being released at October 2018’s Apple event. It didn’t come then and current rumors most strongly suggest that neither it nor any Mac hardware at all is coming with the expected March 25 event.

[…]

So while Apple didn’t mind treading on the iMac’s time in the spotlight with a sneak peek of the iMac Pro, it has avoided doing the opposite. Which means that this year, Apple may also avoid sharing that spotlight between a hypothetical new iMac and the guaranteed new Mac Pro.

[…]

For instance, not long after the iMac’s last update, Intel announced eighth-generation Core i7, i5 processors which were pitched as being for Apple portables but versions of them ended up in the 2018 Mac mini.

Previously:

Implementing NetNewsWire Search

Brent Simmons:

When a search starts, swap in a separate timeline and detail view, do the search, and then show the results in these swapped-in views. When the user ends searching, swap those views out, and swap back in the regular timeline and detail views.

[…]

If you look at other apps — Mail, for example — it appears they use solution #1, and state restoration is not always instant. I want it to be instant.

[…]

In the case of the search feature, I spent more time just thinking about how I want to do the UI than on the actual search-in-the-database implementation. And then there’s the UI work itself, which absolutely dwarfs the database work.