Archive for September 2, 2021

Thursday, September 2, 2021

Why Xcode Tools Are Slow After Reboot

Jeff Johnson:

When you attempt to run one of the developer tools, the _xcselect_invoke_xcrun function must look up the actual path of the tool. The paths of Xcode and the developer tools are cached on disk in a database file named xcrun_db located in your $TMPDIR. […]

Perhaps you already see the problem here: the contents of $TMPDIR are emptied on every reboot! Thus, the first time you run a developer tool after reboot, the xcrun_db cache needs to be regenerated.


Why does it take so long to regenerate the cache? While I was reproducing and diagnosing the issue, I noticed that when I ran a developer tool after reboot, the process syspolicyd went crazy and used almost 100% CPU until the command finished. I took samples of syspolicyd when this happened, and the process seemed to be spending a lot of time in the security framework checking code signing.


I discovered a way to accelerate the cache regeneration to around 3 seconds, down from over 10 seconds: disable System Integrity Protection.

Note that this also affects non-Apple tools like Git that are bundled inside of Xcode. The last few macOS releases, and especially since Catalina, it seems like my Mac is always pausing at inopportune times to verify security stuff. Often times the delay is much longer than the 10 seconds reported here, and sometimes one CPU core is pegged at 100% doing syspolicyd or tccd for the duration of what I’m doing. Disabling System Integrity Protection isn’t a great solution because it messes up testing.

Update (2021-09-07): Robin Kunde:

I wonder if this has implications for CI services like Circle CI that spin up a fresh VM every time you run a test suite. By restoring the database from cache, one might be able to work around this issue.

Relaxing Anti-Steering Rules for Reader Apps

Apple (Hacker News, 9to5Mac, MacRumors):

Apple today announced an update coming to the App Store that closes an investigation by the Japan Fair Trade Commission (JFTC). The update will allow developers of “reader” apps to include an in-app link to their website for users to set up or manage an account. While the agreement was made with the JFTC, Apple will apply this change globally to all reader apps on the store. Reader apps provide previously purchased content or content subscriptions for digital magazines, newspapers, books, audio, music, and video.

To ensure a safe and seamless user experience, the App Store’s guidelines require developers to sell digital services and subscriptions using Apple’s in-app payment system. Because developers of reader apps do not offer in-app digital goods and services for purchase, Apple agreed with the JFTC to let developers of these apps share a single link to their website to help users set up and manage their account.

The changes don’t go into effect until “early 2022.” Each month they can be delayed is potentially worth a lot of fees.

John Gruber:

Progress. Apple’s anti-steering provisions are the number one thing I have been clamoring to be changed in the App Store rules. I think this should expand beyond just “reader” apps, but one step at a time.

Do you hear that sound? That’s the sound of a significant amount of antitrust pressure being relieved from Apple.

Steve Troughton-Smith:

I look forward to the App Store Guidelines changing rule by rule in individual press releases brought upon by lawsuits and governmental action 🙄

David Heinemeier Hansson (tweet):

How petty can you get? Why does it have to be a single link? Why can’t the Kindle app link to buy another book by the same author when you finish the one you were reading, without having that mean the general link to the store on the Home Screen has to disappear?


But that’s been Apple’s tactic in all of this: Do barely better than nothing. What’s the absolute least we can get away with? Do that. And from the perspective of a single battle, I guess that makes sense. But I think they’re missing the forest for the trees here. Every time they give barely an inch, they prolong and intensify the overall struggle. Rather than simply getting out of this morass entirely.

Steve Troughton-Smith:

It took the full weight of a national antitrust investigation to make Apple budge by ‘a single link’ for a subset of App Store apps, a policy change that would require no development or code changes on Apple’s part. We’ve got a loooong road ahead of us

James Thomson:

Again with the “let’s add more complicated rules in an effort to stave off antitrust” approach, rather than just ripping off the payment system band-aid[…]

Thomas Clement:

Isn’t it clear enough now that sideloading and alternative stores is the only way? Apple will never let go.

Federico Viticci:

I don’t know friends, these “reader” apps seem pretty suspicious to me. Linking to “the web”? For “account management”? On a “website”? pretty scary stuff

Note that this still doesn’t let you purchase books in the Kindle app.

Joe Cieplinski:

Apple is betting if they give enough concessions to those who can afford lawyers, they won’t have to really change the App Store. They are not wrong.

Indies who haven’t figured out these companies don’t care about them any more than Apple are in for a splash of cold water.

Paul Haddad:

All kidding aside this is great news, awesome to see the small developers come out ahead for once! Congratulations to <checks notes> Amazon, Netflix, HBO, Disney, Google, Hulu, Pandora, Spotify and dozens of others!

Steve Troughton-Smith:

I guess it should be noted that developers & apps don’t self-identify as ‘Reader apps’. Apple decides what is and isn’t a Reader app. And then it will quietly use that as a means to influence how your app works via App Review rejections and opaque addenda to the rules

I could have sworn that during a long-since-past furore Apple introduced the term ‘Reader apps’ out of nowhere as an excuse to give certain apps special exceptions to certain rules

Tim Sweeney:

In Apple’s carefully-worded statement on safety, it’s hard to discern the rationale that this is safe while Fortnite accepting direct payments remains unsafe.

Even more so if Apple deems Roblox, a game from 2006-2021 that became “an experience” mid-trial, a reader app.

Kosta Eleftheriou:

What’s up with “Apple will also help developers of reader apps protect users when they link them to an external website to make purchases”?

What Apple is saying is they want users to keep trusting Apple.

The links will be CLEARLY marked as external links to set boundaries & dissuade users from opening them, and they’re gonna open in a private Safari tab for extra friction - er, I mean privacy.🤷‍♂️

Rob Jonson:

Part of me worries that I might be giving them ideas...

John Siracusa:

Sure, your “reader” app can include one (1) approved link to your website…but will you be allowed to have any text near that link explaining why someone might want to tap on it, or is that still forbidden? This is where we are, mentally, when considering App Store rules in 2021.

David Barnard:

Instead of saying “go to Netflix on the web” the Netflix app can actually link to the account management page on the web. And the sign-in page can actually have a link to create a new account instead of just a sign in button.

It really is that small of a change to a rule that was customer and developer hostile to begin with. It is a big deal, but also not. As with the settlement last week, Apple is very deftly giving the absolute minimum possible. But they are giving.


Update (2021-09-10): Nick Heer:

On its face, this is excellent news, though it is still limited. Apple’s definition of “reader” apps is media-centric, so it seems like this would preclude an app like Hey from offering a link to create a paid account on the web. It also does not apply to in-app purchases generally, so this would not resolve Apple’s dispute with Epic Games over Fortnite. But it should mean that Netflix and Spotify will be able to remove the error messages Apple has required to be vague. I see progress.

Matt Birchler:

I love love loved this segment from @siracusa on ATP this week 😂

It boggles the mind how this debate gets people to argue that e-commerce basically isn’t a thing and the world would implode if anyone but Apple processed a transaction.

Also I’m not sure if people understand that when you use Apple Pay on the web, it’s not Apple processing that transaction, it’s a third party payment processor.

John Gruber:

I heard from one reader in the racket wondering if Apple is going to require these apps to also offer Apple’s IAP to be allowed to include a link to a website. I have another friend, who works on a popular subscription app that does use IAP, who’s wondering if they’re going to be allowed to also have a link to their website now, and doubting it.

That’s how much trust Apple has burned.

Dan Moren:

As always, the devil is in those details. The company has never shied away from spelling out exactly when, where, and how developers can present certain information inside their apps. It’s not at all out of the question that Apple would say, for example, that such a link could only appear on, say, a first-launch splash screen or buried deep in a settings screen.

Joe Rossignol:

Following the announcement, some developers have said Apple’s decision is not good enough.

Benjamin Mayo:

In this case, I am perturbed by the fact that there are lot of words, a lot of paragraphs, surrounding what should be a straightforward policy change: allowing developers to link out to their website on the sign-up screen.


Setting aside Apple’s self-serving and/or contradictory rules around what counts as a reader app, what the heck does a single link mean in a digital world? It’s a hilarious concept.

Joe Rossignol:

Apple said the changes “will help make the App Store an even better business opportunity for developers,” but Morgan Stanley analyst Katy Huberty believes there will be “minimal financial impact” to Apple. In a research note, she said the changes would result in just a 1-2% hit to Apple’s earnings per share in the 2022 fiscal year in a worst case scenario.

The Sub Club Podcast:

On the podcast, we talk with Ben about all things app stores. From Apple’s revolutionary launch of the App Store in 2008 to the monopoly-like powers, both Google and Apple now wield today. With multiple lawsuits filed, government investigations ongoing, and developer sentiment at an all-time low, we take an honest look at the challenges and trade-offs in trying to bring two of the world’s largest companies to heal.