Sunday, March 17, 2024

MsgFiler 4

Adam Tow (Mastodon):

Since WWDC 2023, I was telling long-time MsgFiler customers that I would look into what I could do to support the product in this new era of Apple Mail sans plug-ins. Honestly, I was a bit bummed because I didn’t see a viable path for the app.

[…]

A deep dive into AppleScript support in Mail turned up the reason. If you were trying to file a Gmail message using AppleScript, the Inbox label was not being removed from the message prior to assigning the new mailbox label.

[…]

Targeting the right mailbox using the Accessibility APIs turned out to be nearly impossible if any mailboxes were expanded in the sidebar, so I ultimately nixed this approach.

The irony is that MsgFiler wasn’t really doing the sorts of things that you would expect to need a plug-in API. It should have been able to do its work using AppleScript, except that Mail’s AppleScript API is buggy and slightly incomplete. (SpamSieve also never needed plug-in support in mail clients that had good AppleScript support.) So MsgFiler 4 works around the limitations using System Events.

Adam Tow:

There’s an even bigger problem with updating MsgFiler and that is its use of System Events to send commands and key codes to the Mail application. While MsgFiler has a temporary entitlement to control Apple Mail via AppleScript, it does not have an entitlement for sending AppleScript to System Events. Nor is Apple providing such an entitlement, since that can be a vector for sending arbitrary key strokes and commands to any application.

This sets up a situation, not unlike with Alfred and Screens, where the app is in the Mac App Store, but to get the full functionality you have to download a component from outside the store:

The MsgFiler Filing Script can supercharge your filing experience in MsgFiler 4. It is an AppleScript that can perform numerous functions that MsgFiler alone cannot do, such as:

  • Moving and copying Gmail messages.
  • Navigating Mail using the keyboard from MsgFiler 4.
  • Archiving messages from the keyboard in MsgFiler 4.
  • Selecting the next or previous message in a Message Viewer after filing non-Gmail messages.

MsgFiler 4 is $9.99 a year or $49.99 for a lifetime unlock (for version 4.x).

Also of note is that he rewrote the app from Objective-C and Interface Builder to SwiftUI, and that seems to have gone well.

Previously:

Walmart Selling M1 MacBook Air for $699

Joe Rossignol:

Walmart today announced that it has started selling the MacBook Air with the M1 chip in the U.S., with pricing set at a very reasonable $699. The laptop can be ordered now on Walmart.com, and it will be available soon at select Walmart stores.

[…]

Apple first released the MacBook Air with the M1 chip in November 2020, as one of the first Macs with an Apple silicon chip instead of an Intel processor. The configuration being sold for $699 includes the M1 chip, 256GB of storage, and 8GB of RAM/unified memory, with Gold, Silver, and Space Gray color options available.

Chance Miller (Hacker News):

While Walmart has historically sold Apple devices like the iPhone, iPad, and Apple Watch, it has never sold Macs directly.

[…]

Apple reshuffled its MacBook lineup last week, introducing the M3 MacBook Air starting at $1099 and dropping the price of the M2 MacBook Air to $999. As part of these changes, Apple also stopped selling the M1 MacBook Air, which had previously been available for $999.

John Gruber:

But it looks like Apple is going to keep producing the M1 MacBook Air for this deal with Walmart. These aren’t refurbs, or leftover stock[…] Fascinating example of pricing-as-branding that Apple won’t sell this machine in its own stores, but will through Walmart — which doesn’t sell any other Macs.

Apple did this sort of thing with iPhones, too. The M1 MacBook Air is still a solid Mac. I still wish Apple would design an actual lower cost MacBook, but this is great news nonetheless. I just wonder how long Apple will maintain OS support for it.

nateb2022:

In response to the comments regarding its “excellent value” at $699, Lenovo is currently selling its 14" ThinkPad P14s Gen 3 for $699. It comes with a Ryzen 7 6850U that roughly matches the M1 in performance, 16GB of LPDDR5 and a 512GB SSD.

Previously:

iOS Notarization’s Human Review

Apple:

Notarization for iOS apps is a baseline review that applies to all apps, regardless of their distribution channel, focused on platform policies for security and privacy and to maintain device integrity. Through a combination of automated checks and human review, Notarization will help ensure apps are free of known malware, viruses, or other security threats, function as promised, and don’t expose users to egregious fraud.

This is not a quick automated check like with Mac app notarization. There is a human review step where Apple checks the app against a subset of the App Review Guidelines. There is now a “Show Notarization Review Guidelines Only” checkbox that highlights the relevant guidelines. The list is actually much more extensive than I initially thought. Health-related content is highly regulated. Multitasking and location services are restricted. You can’t use the hardware volume buttons. You can’t scrape data from Apple Web sites. Third-party login services are restricted. You can’t monetize built-in capabilities. You have to treat Apple with respect (Developer Code of Conduct). And, unfortunately, this adds delays and the possibility for human error and corporate stonewalling.

Riley Testut:

lol my clipboard manager Clip was rejected from Notarization because it “requires push notifications in order to function”

(it doesn’t, they’re optional)

This is not just a mistake. It’s a charade because it’s not possible for App Review to accurately detect this, anyway.

Kyle Howells:

Apple’s amazing innovation of bringing the fun, accuracy and unpredictability of App Review to Side Loading.

This is just what the web, the Mac, Windows, and Android have been missing all these years!

Random rejections for things your app doesn’t even do!

Previously:

Friday, March 15, 2024

Default Handler 1.0

Edovia (Mastodon):

We were encouraged to find that approximately 80% of respondents expressed a positive inclination towards adopting Screens 5 as the default [vnc: URL] handler. However, we also acknowledge and respect the opinions of the remaining 20% who expressed a preference for maintaining the existing setup.

[…]

Although APIs exist for setting default handlers at runtime, Apple has opted not to extend access to these APIs for sandboxed applications, a stipulation essential for approval on the Mac App Store.

[…]

So the solution we came up with is an app, called Default Handler. Given that this app operates outside the constraints of sandboxing, it can freely utilize the APIs mentioned earlier.

The URL handler settings are less potentially dangerous than other things that Apple has allowed in sandboxed apps and sometimes gated with TCC or an entitlement. So I don’t see why they aren’t allowed in the Mac App Store. Any API can be abused, and App Review should be able to do something if an app ends up misbehaving.

Another option would have been to provide an Internet Config–style system settings pane. It would be more reasonable to block this functionality from apps if there were a way for the user to set it on their own. This would also be useful in its own right, as users could see the settings and adjust them as needed all in one place.

Instead, Apple just blocked the API, so the user needs to download an app that’s totally unsandboxed. Edovia is a reputable developer, so I don’t have any qualms about Default Handler in particular, but the big picture of Apple’s decisions here makes little sense.

Previously:

Spotify Anti-Steering Stonewalling

Scam apps top the search results, but at least Apple is protecting us from links to Spotify’s Web site (MacRumors):

Spotify says Apple is stonewalling updates issued in compliance with that very ruling. In an email to the European Commission obtained by The Verge, Spotify writes that Apple has “neither acknowledged nor responded to Spotify’s submission” to bring subscription pricing information into the app, preventing it from updating the app at all for its users, even to put out fixes for bugs or add other features.

[…]

The company writes that this is “yet another example of how Apple if unchecked, will seek to circumvent and/or not comply with the Commission’s decision.” It also urges the European Commission to contact Apple and requires that it approve Spotify’s changes. “Given Apple’s track record, Spotify is concerned that Apple’s delay is intentional and is aimed at delaying or avoiding compliance altogether,” the email reads.

Maybe the 10-days-and-counting review time is just a coincidence, but, as Phil Schiller might say, Apple has a history of holding apps it doesn’t like in review purgatory. Maybe the European Commissions should ask for written assurance that it’s acting in good faith.

Previously:

Update (2024-03-17): Kyle Howells:

Apple’s App Review behaving just as designed I see…. allowing it avoid complying with court orders and laws it doesn’t like.

Fake Bitcoin Wallet in the App Store

Even_Fan9110:

I got C$ 150k drained from my all my accounts right in front of my eyes after I put my seed phrase into this fake app from the apple Apple Store. I can’t believe apple lets apps like this on their App Store. Beware people don’t download this.

habeanf (via Maximiliano Firtman):

Earlier today I decided to switch my Android for an iPhone. After moving all my apps I decided to make the jump and move my bitcoin from the android wallet. I searched for ‘bitcoin wallet’ on the Apple App Store, installed the first app I saw (as far as I could tell, looks legit), transferred bitcoin, and it immediately got sent off. Turns out this app was previously reported at least 12 days ago as a scam but its still up there, #1 search result.

I get that I’ve failed to vet the app but honestly, how does a scam app become the #1 organic search result (not promoted) in the app store, topping binance, blockchain.com, and coinbase?

Previously:

Xcode 15: “no platform load command found”

Wade Tregaskis:

Apple’s new linker appears to be much more pedantic than the old one – it warns about a lot of things that the old one didn’t care about. One of these is missing platform load commands:

/Users/SadPanda/Documents/vmaf/libvmaf/ld:1:1: no platform load command found in 'src/libvmaf.a[62](cpuid.obj)', assuming: macOS

This doesn’t technically break anything – assuming it guessed the platform correctly, which I suspect it just takes as being the host’s platform – but it’s super annoying because it’s emitted for every afflicted object file the linker sees (that’s individual files, even if they’re buried in archive files – e.g. libfoo.a). You can have hundreds or even thousands of these warnings for a single library. Worse, they’re emitted when you link against the library, not just when you build it. And with nested static libraries they can propagate up a build chain endlessly.

I’ve been seeing this with the old eSellerate library, which fortunately I won’t need for much longer, as I don’t know how long the -Wl,-ld_classic workaround to use the old ld64 linker will last.

Previously:

Thursday, March 14, 2024

Nitro 2024.1

Gentlemen Coders:

Flexible storage options, camera support, and editing tools unmatched by any app.

[…]

Create smart albums, and organize your Apple Photos library. Nitro reads RAW Power edits. Everything syncs over iCloud!

Prefer to manage your files yourself? You can use Nitro with the file system too. Rate and edit non-destructively using XMP sidecars.

Nik Bhatt:

If you like RAW Power, you’ll love Nitro’s fresh interface and immense power. I have been fielding emails from many of you for some time, asking for features like gradients, brushing, cloning, XMP sidecars, synchronized zoom, and more. All of those (and a lot more) are in Nitro.

[…]

[The] underpinnings of RAW Power have become an obstacle to advancing the app. For example, the RAW Power engine is simply not able to handle features like masking and synchronized pan and zoom. I decided some time ago to start fresh, even though that would take a long time, because it provides the best foundation for a great photo app in the future.

Previously:

DealMachine Subscription Cancellations

John Gruber (Mastodon):

I downloaded the app and signed up; immediately after confirming your email address, you get sent to a screen in the app where you choose from account tiers to begin a free trial. The lowest tier is $100/month, the highest is $500/month. And after making your selection, you get sent to this page on DealMachine’s website to pay using Stripe.

[…]

I don’t think DealMachine is a scam. Stripe is as legit as it gets. But when you handle payments on your own, you handle refunds and subscription cancellations on your own too. […] So DealMachine offers a taste of what our friends in the EU may be getting from marketplace apps soon.

I’m not sure what to think about this. The external payment is apparently allowed here, because of the nature of the service, but he expects Apple to remove the app due to the poor subscription management. I only see two critical reviews mentioning cancellation, so it’s not clear how widespread the problem is. Maybe there’s no real story here. Or maybe this is not exactly a ringing endorsement of the App Store that this has gone on for years and the ratings average 4.7 stars.

Subscription management overall should be easier, but I don’t see the App Store as the place to solve this. And I don’t understand the fear with external payments for apps, specifically. Everyone buys all sorts of stuff on the Web, problems are rare, and the credit card companies already offer a backstop where it’s easy to get your money back if there’s any funny business. In fact, customers already use this for purchases that Apple doesn’t want to refund.

If some company offered consumers a service, where they could pay an App Store–like extra fee to get App Store–like buyer protection features for all the random stuff they buy online, I don’t think people would find that deal very attractive. They’re already paying the credit card companies a few percent for a system that basically works.

Craig Grannell:

Which infers third party marketplaces will by default be bad actors (they won’t) and ignores the fact this app is on the App Store, which has rules (broken here) Apple claims is supposed to protect us and is why we shouldn’t have third-party App Stores.

Dave Nanian:

This is happening in Apple’s own app store, not in some 3rd party store. And 3rd party stores are, themselves, “managed” by Apple. Wouldn’t those 3rd parties have at least the same desire to prevent abuse, if not more, since Apple can deprive them of…everything, with a click.

On top of that, do we find that this is some sort of big problem with, say, macOS or Windows apps? Even those managed by subscriptions?

Steve Troughton-Smith:

Having seen what third-party app marketplaces have to go through just to be approved by Apple, I wouldn’t be surprised if third-party stores end up being safer than the App Store; the App Store is the marketplace full of scams, exploitation and dark patterns, where third-parties can focus much more on curated collections of trusted apps.

Nick Heer:

A few things can be true:

  1. Apple’s in-app purchasing system is a particularly nice way to buy digital goods and manage subscriptions.

  2. Apple requires most developers to use in-app purchases for many types of transaction. It does not compete independently in the market of digital payment systems. This is probably in part because Apple wants a consistent experience in third-party apps. But its 15–30% commission cannot be ignored, and Apple’s mandate implies little faith in IAP’s niceness and familiarity to convince developers to use it.

  3. Easy cancellation of subscriptions can be the domain of consumer protection authorities if you want it to be. You can just pass a law. This sort of stuff is a political slam dunk across the spectrum, except for weird libertarians. It is possible to just require things to be better for everybody regardless of what they bought or how they bought it.

Drew McCormack:

Have seen some pretty scammy practices in apps lately. Straight up tricks to get people to accidentally pay for a subscription they don’t want. And these are apps that Apple accepted into its store. As is, the situation is worse than downloading from a dubious third party store or web site, because most people have learned to be wary there. When you download from the App Store, you just assume it will be fine. You don’t expect to be scammed. It’s the perfect con.

Previously:

Digital Services Act Compliance: App Store

Apple:

You’ll be asked to disclose whether or not you’re a trader under the European Union’s Digital Services Act (DSA) in order to stay compliant across regions when distributing on the App Store. If you’re distributing content as a trader, the DSA requires that you provide certain identification information, including address and contact details, to be displayed on your App Store product pages to consumers in the European Union (EU).

Steve Troughton-Smith:

TL;DR since this is confusing a bunch of folks: If you make money on the App Store, you are a Trader, and under the DSA are required to provide a postal address, email address, and phone number, that will all be displayed publicly on the App Store

Michael Love:

Successfully completed Apple’s DSA verification thing with a newly-created Google Voice number, FWIW - $10/month for up to 10 of them, though if I find a cheaper option I’ll cheerfully switch.

(physical address they got from DUNS, so I couldn’t do much about that, but it’s already in a bunch of other public databases anyway thanks to our government contracting business)

If you’re registered as an individual, Apple lets you specify the postal address directly. If you’re registered as an organization, I guess the only choice for privacy is to use a registered agent for your business. A post office box is not enough because businesses need to list a physical address. It’s unclear to me how much this really matters since in most cases the information is publicly available, anyway, if you know where to look.

See also: Jim Ye, JetBrains, Amy Worrall.

Previously:

Update (2024-03-17): Matthias Gansrigler:

So, I got a new phone number, and a post office box, and now it turns out I cannot complete the “Compliance Requirements” because they fail to send me the SMS confirmation code, and calling doesn’t work either 🤦‍♂️

Matthias Gansrigler:

Days I could have spent working. But no, I have to deal with this bureaucratic EU nonsense (and Apple’s forms don’t work).

Jeff Johnson:

The irony is that even if I published my phone number and home address in the App Store for EU consumers, it’s impossible for me to offer them a refund, because Apple does not allow that. App Store developers don’t even have individual customer transaction information.

See also: Brent Simmons and John Gruber.

DMA Compliance: Google

Google:

Changes to Search results: We have now implemented more than 20 product changes, including the introduction of dedicated units and chips to help users find comparison sites in areas like flights, hotels and shopping. We have removed some features from the search results page which help consumers find businesses, such as the Google Flights unit.

Choice screens: When you use an Android phone, you can easily switch your search engine or browser. Under the DMA, we will show additional choice screens, which are built on user research and testing, as well as feedback from the industry.

[…]

The DMA requires gatekeeper operating systems to allow users to use third-party apps and app stores. Through Android, we already do this.

[…]

User-choice billing (known as UCB) has allowed app developers to offer their own billing system alongside Google Play’s billing. This is the fairest way to offer alternative billing, as it puts the user fully in control of their preferred transaction method, and we’re expanding the program to game developers this week.

[…]

While Google Play already allows developers to communicate freely with customers outside their app about offers or lower-cost options available on a rival app store or the developer’s website, we are adding additional options in compliance with the DMA.

John Gruber (Mastodon):

The DMA has crippled Google Search in the EU […] I presume people in the EU can still go to the dedicated Google Flights page, but just typing “PHL to SFO” on Google’s homepage or in your browser’s location field is what most people expect to work.

Robert Watkins:

Correction: Google has crippled search in the EU in response to the DMA, because they don’t want to find a way to comply with the DMA that doesn’t cripple it.

• • •

Steve Dent:

Now, Google has revealed that it will indeed charge developers even if they don’t use the Play Store, just like Apple did with the App Store. Per new details found in the Play Console help section, the company will charge two new fees:

  1. An initial acquisition fee of 10% for in-app purchases or 5% for subscriptions for two years. This represents the value Play provided in facilitating initial user acquisition.

  2. An ongoing services fee of 17% for in-app purchases or 7% for subscriptions. This covers ongoing Play services like parental controls, security, fraud prevention, and app updates.

Developers can opt out of ongoing fees after two years if users agree, but ongoing Play services will no longer apply. “Since users acquired the app through Play with the expectation of services such as parental controls, security scanning, fraud prevention, and continuous app updates, discontinuation of services requires user consent as well,” Google stated.

Michael Love:

Google’s version of DMA compliance demonstrates how much easier life is for them because they don’t restrict sideloading and third-party stores. They can treat their DMA fees as a referral commission for Google Play finding you new customers - something that’s reasonable / familiar, both in software and in many other industries - rather than as the price of shipping on Android at all.

I’m not 100% on board with this, to be clear - my company name appears in pretty much all of my top search terms on Google Play, and I suspect a very large portion of my Google Play customers were not, in fact, referred to me by Google - but it’s nevertheless far far less obnoxious than Apple’s approach.

Tim Sweeney:

Google announced its malicious compliance plans for the European DMA law: The scare screens continue, and it looks like their illegal anti-steering policy will be replaced by a new Google Tax on web transactions.

The biggest travesty is Google’s deceptively-named “user choice billing” and “developer choice billing”, designed to ensure no developer would possibly want to use them. Here, Google imposes a 27% junk fee on transactions they aren’t involved in processing.

No gatekeeper should be allowed to impose fees for services not provided. It’s a transparent exercise in self-preferencing and monopoly rent extraction.

Neither Apple nor Google has a monopoly, as normally defined, but there’s not enough competition to make them do right by customers and developers.

Tim Sweeney:

Here is the most disgusting pro-monopoly thesis yet, put forth by Apple and Google funded Chamber of Progress: government should support Big Tech monopoly maintenance, because Apple and Google can more strongly reinforce US control over information than a competitive market.

Simply put: if Apple and Google maintain absolute control over apps and channels of information dissemination, then they can act as agents of the state to control it. Whereas, if users have freedom and control over their own devices, then government censorship is harder.

• • •

Google:

Google will make the following changes to comply with its DMA obligations requiring it to show choice screens: (i) introduce a new browser choice screen during initial device setup in addition to a search choice screen on Android smartphones and tablets; and (ii) show a search choice screen on Chrome on non-Android platforms.

John Gruber:

Not clear to me why Apple did this in a software update for all eligible iPhones, but Google is only doing it for newly-sold ones.

Previously:

DMA Compliance: Custom External Link Designs

Apple:

Developers who’ve agreed to the Alternative Terms Addendum for Apps in the EU have new options for their apps in the EU:

  • Alternative app marketplaces. Marketplaces can choose to offer a catalog of apps solely from the developer of the marketplace.
  • Linking out to purchase. When directing users to complete a transaction for digital goods or services on an external webpage, developers can choose how to design promotions, discounts, and other deals. The Apple-provided design templates, which are optimized for key purchase and promotional use cases, are now optional.

John Gruber:

The second is a bigger concession — effectively, the elimination of mandatory Apple-designed scare sheets for link-outs to the web. It sounds like the second truly eliminates anti-steering provisions for developers who opt into the new EU rules.

[…]

That link-out screens may now contain promotional and pricing information, and don’t need to follow Apple’s templates — that’s a mere policy change too, but one I suspect Apple does begrudge. And it’s obviously something developers would want. Do you want a very plain-looking, totally unbranded screen, that emphasizes more than anything that you’re leaving the safe confines of the Apple ecosystem? Or would you like to design your own screen, in your own style, with your own emphasis? This, to me, reeks of a change at the behest of the EC.

US developers will still have to use Apple’s scare sheets.

Previously:

Wednesday, March 13, 2024

DMA Compliance: Web Distribution of iOS Apps in EU

Apple (MacRumors, 9To5Mac, Hacker News, Slashdot):

Web Distribution, available with a software update later this spring, will let authorized developers distribute their iOS apps to EU users directly from a website owned by the developer. Apple will provide authorized developers access to APIs that facilitate the distribution of their apps from the web, integrate with system functionality, back up and restore users’ apps, and more.

Apple:

Apps offered through Web Distribution must meet Notarization requirements to protect platform integrity, like all iOS apps, and can only be installed from a website domain that the developer has registered in App Store Connect.

[…]

If you’re interested in using Web Distribution, please review the requirements to qualify. Later this spring, the Account Holder of your Apple Developer Program membership can request access for Web Distribution.

[…]

Be enrolled in the Apple Developer Program as an organization incorporated, domiciled, and or registered in the EU (or have a subsidiary legal entity incorporated, domiciled, and or registered in the EU that’s listed in App Store Connect).

[…]

Be a member of good standing in the Apple Developer Program for two continuous years or more, and have an app that had more than one million first annual installs on iOS in the EU in the prior calendar year.

I see this as potentially more attractive than App Marketplaces because you don’t have to depend on another middleman. But it’s far from true sideloading. Most developers will not even be eligible, and you still have to pay the Core Technology Fee (CTF).

Benjamin Mayo:

The rules as originally written were specifically orchestrated by Apple to offer “sideloading” without offering sideloading. The rules prevented the obvious, straightforward, approach of letting a developer host a binary on their website for users to download directly to their device. Instead, A developer wanting to offer their software outside of the App Store was forced to partner with an intermediary, an alternative app marketplace in which to list their app, and then would have to somehow explain to their customers how to install said marketplace in order to install said app. It induced business relationships and a whole bunch of complexity that didn’t really have a justification to exist other than frustrating the process.

Tom Warren:

That’s a lot of hoops for developers to jump through, and it appears that Apple is limiting this to big developers only thanks to the 1 million installs requirement. Having a good standing developer account for two years may also rule Epic Games out of this particular distribution method.

Jesper:

Let’s list the additional changes that would make this offer something less than sideloading but still ultimately be somewhat palatable.

Steve Troughton-Smith:

It looks like Apple is rapidly finding out all the ‘and/or’s in the DMA were ‘ands’ not ‘ors’. Apple had bet their entire compliance plan on those being ‘ors’.

It seems like they’ve been working on this for a while but hoped they wouldn’t have to ship it.

Jason Snell:

Apple suggested that it made these changes after consultation with developers, which, okay, sure. But let’s be clear: this is very obviously the result of European regulators nudging Apple and telling the company that it hadn’t gone far enough and wasn’t honoring the spirit of the DMA.

And now we can fully see Apple’s strategy of incremental compliance, brought into action: The company announced the minimum possible and then waited to be told what else it needed to do. Now it will begin modifying those policies, as required, in order to satisfy regulators while still doing the minimum required of it, presumably hoping that it won’t get nudged by the regulators all that often.

Dave Wood:

The funny thing here is that for nearly 2 decades, Apple has driven the cost of apps down to pretty much zero. Normal users don’t want to pay for apps, and expect them to all be free. But now Apple wants to charge developers €0.50 per install!

Dan Moren:

These rules also mean that many small and independent developers likely won’t be able to opt in to web distribution—that one million threshold is still pretty high. Do those shops deserve to be restricted from developing their apps on the web?

Sarah Reichelt:

I’m not in the EU but I’m hoping for side-loading everywhere for distribution of in-house apps. This one million installs is a ridiculous requirement.

Thomas Clement:

So still not possible to make a small app and share it with friends and family :(

David Meyer (via Hacker News):

The EU’s Digital Markets Act has been in place for less than five days, and its enforcers have already pushed Apple into two humiliating U-turns. If Apple has been trying to test how much it can throw its weight around in its increasingly hilarious hissy fit over the new Big Tech antitrust law, it’s had its answer now.

Michael Love:

The requirements around this are onerous, but I actually view it as a positive sign because now instead of requiring Apple to allow sideloading and having Apple hem and haw about how tricky that is, the EU just has to tell Apple to drop the minimum download count and fee.

And the whole business about requiring at least 1M installs but then charging you after 1M installs is clearly designed to both lock out smaller developers and make this financially onerous for big ones, so I’m hopeful they do make those adjustments (and in the meantime am going to start paperwork on an EU subsidiary).

Steve Troughton-Smith:

Apple’s new clutch at malicious compliance is its requirement to “Be a member of good standing […] for two continuous years or more, and have an app that had more than one million first annual installs on iOS in the EU in the prior calendar year.”, which it has applied to web-based sideloading.

I’m sorry Apple, but my rights under the DMA don’t disappear if I have less than a million EU users on the App Store, or if I have an ‘individual’ developer account. This restriction simply won’t work.

Drew McCormack:

One thing you can say for sure about Steve Jobs is that he loved to keep things simple. 30% tax on sales. Apps, books. Simple. The latest efforts to handle DMA would make him squirm. You seriously need a decision tree to understand all the options.

Previously:

Update (2024-03-14): xroissance:

It takes 15 clicks to install an app from the web using the newly proposed Apple flow. Here’s the journey[…]

[…]

I’m amazed how Apple has intricately woven 15 actions into what appears as two straightforward sentences. The complexity hidden within simplicity often goes unnoticed.

John Gruber:

The eligibility requirement of having an app with over 1 million annual installations in the EU is a high barrier. The intention, obviously, is to limit web distribution to ostensibly trustworthy developers. But it’s sort of a catch-22: the entire feature is by definition intended for developers who want to distribute their apps outside Apple’s App Store (or anyone else’s EU app marketplace) — but the only way to qualify is to have at least one very popular app in the App Store or an app marketplace.

If this change is at the behest of the EC, via back-channel feedback, the EC is seemingly only concerned with large developers. And to me it makes no sense that this change — a huge one — came from anywhere but back-channel communications with the EC.

[…]

That it will only be available to longstanding developers with at least one million-EU-downloads app may well be completely compatible with the DMA. There’s nothing at all in the DMA about the interests of small or indie developers.

[…]

So my gut feeling is that we’re seeing Apple adopt changes in response to unofficial feedback from the EC. If so, that suggests that the things Apple isn’t changing — like the Core Technology Fee — are either OK with the EC, or, if not, that Apple is willing to fight for them.

Riley Testut :

IMO the funniest thing about these Web Distribution requirements is that I’m not eligible to distribute @delta this way…but I AM eligible to distribute an entire app store

Mark Meador:

When Apple said sideloading would lead to a bad user experience, it apparently meant that it would make it a bad user experience.

Tim Sweeney:

Compare this freak show of executive-mandated bad design to the App Store, where amazing designers make installs as easy as possible.

[…]

If developers are scared into silence while Apple and Google have literally hundreds of lobbyists employed by dozens of front organizations secretly advocating for their positions and giving money to political candidates, how do smartphone users and app developers have a chance?

David Barnard:

I genuinely think it’s lost on Apple just how scared developers are of them and of App Review. And then how that shapes the entire mobile app industry.

Downie’s Anti-Piracy Scare Tactic

dario (Reddit):

It is being reported on Reddit that Downie 4 (a video downloader app developed by Charlie Monroe Software) contains code for a popup that claims to have deleted random files on the computer as a ‘punishment’ for allegedly using a pirated/cracked version.

Here’s what it looked like.

Charlie Monroe (tweet):

During this time, I was receiving reports from people running cracked versions of my apps and it was hurtful to me and my efforts. I’ve always tried to contact those users and try to convince them to use a genuine version. Many of such users do not see the effort behind the development and that it is (in the early years) matter of survival for the company.

There were, however, users running cracked versions of Downie that used fake email addresses for their reports and even included insults in their messages. Unfortunately, my mind came up with the idea that Downie would include a list these email addresses and would show a message to these users. In what you can call lack of judgement, I’ve included a message that suggested that Downie may have deleted random files, appended with a “Or am I kidding?” question. It was meant in jest (though it was very irresponsible of me) – I would never dare touch the user’s files, no matter whether genuine or cracked version. This is a line I would never cross, whether you believe it or not.

Years have gone by and I haven’t touched this code with this message in many many years now. It was a mistake ever adding it, but it was there and I simply did not think about it anymore. If a thief keeps passing your house and you set up a booby trap and the thief stops coming around, it is entirely possible that you just forget to remove the booby trap until a visiting friend falls in.

Unfortunately, one user entered the email address 1@1.com into Downie as their email address. This email address was used in one such fake-email report. This user, however, was using a genuine version, but unfortunately, the booby trap was triggered.

Piracy is a real problem. Not only do you lose revenue (some would never pay, but some would), but part of your limited time is spent troubleshooting with users who will not pay and whose support issue may in fact have been caused by whatever was done to crack the app. On the other hand, any kind of countermeasure could accidentally ensnare a genuine customer. I believe Downie’s developer that no actual harm was ever intended, but obviously even empty threats (or jokes that might be interpreted as such) are a mistake.

Previously:

Most Subscriptions Apps Do Not Make Money

Hartley Charlton (Mastodon):

The “State of Subscription Apps” report comes from RevenueCat (via TechCrunch), a prominent mobile subscription toolkit provider. With nearly 30,000 apps utilizing its platform for monetization management, RevenueCat is able to provide a reliable overview of the subscription app landscape thanks to its data collection capabilities. The analysis delves into data from over 29,000 apps and 18,000 developers, collectively responsible for more than $6.7 billion in revenue and over 290 million subscribers.

RevenueCat found that while the top-performing 5% of subscription apps amass revenue 200 times greater than those in the bottom quartile, the median monthly revenue for apps after one year is less than $50. Only 17.2% of apps cross the $1,000 monthly revenue mark.

Paul Haddad:

Pretty sure “most app do not make money”, is also a valid headline.

Ben Sandofsky:

When I read “17% of subscriptions apps make > $1,000 a month,” I just assumed that pay-once apps are at 1%.

Nick Lockwood:

consumers have some amazing misconceptions about how software is made. I’ve seen several reviews for mobile apps over the years that claimed that since Apple/Google pay the developers to make apps anyway (?) they should be free for end users

Christian Tietze (Mastodon):

That got me thinking – my family doesn’t quite understand that I’m creating apps for e.g. Apple platforms without being an Apple employee, either.

Randy Saldinger:

Even as someone who gives software away for free, I still get comments from users who take umbrage when I don’t want to add a feature they ask for, “after I paid all that money to Apple.” It’s not often stated that clearly, but the subtext is often there.

This misconception certainly isn’t helped by Apple’s framing of App Store updates at WWDC. “Apple has paid developers 70 billion dollars!” Not “developers have earned 70 billion dollars selling on the App Store.” Not “developers have earned 100 billion dollars and Apple scraped 30 billion off the top.” But “Apple has PAID developers.”

Previously:

Update (2024-03-14): Sebastian Aaltonen:

Yeah. Technically Apple is handling the billing, but billing is not equal to making money. You don’t say that Mastercard is making your money either.

The devs are making the money and devs are paying Apple 30% cut. That’s what’s really happening.

Tuesday, March 12, 2024

Mac Stuck in Recovery After Login

After writing on my report card that all my Apple hardware was working reliably, I’ve now started having what may be hardware trouble with my 2019 Intel MacBook Pro. Sometimes, whether I’m using it or it’s just sitting there, it will let out the sneeze sound and kernel panic. This Mac has always done that, but it used to be rare and seemingly without consequences..

Now, I’ve had multiple instances where the SSV was reported as damaged and so I had to reinstall macOS.

Other times, after entering my password at the login screen, instead of logging me in it will go to Recovery. Once that happens, future boots on that same partition will keep going to Recovery. I can only log in using a different partition. The kernel panic logs show a variety of problems, from “possible memory corruption” to “panicked task” to possible Touch Bar issues, and the active processes range from WiFiAgent to WebKit.

Reinstalling macOS does fix this login problem, but it takes a long time, and eventually the problem comes back. Oddly, I’ve also found that a safe boot also temporarily fixes the problem. This was surprising to me because:

But the safe boot does allow the Mac to boot, though (until I reinstall macOS) logging in will continue to fail unless I do a safe boot every time. As I said, the login items seemed innocuous, but after manually unchecking all of them in System Settings I could then boot the Mac without safe mode. I haven’t yet bothered to bisect and figure out which login item is triggering the problem, which at root I believe to be a hardware issue.

With this workaround in place, the MacBook Pro seems to still be usable for testing the Intel versions of my apps, but I no longer really trust it as a backup Mac.

Unfortunately, it’s now gotten to the point where I have to do a safe boot every time, even with all the login items disabled. And it won’t install the macOS 14.4 update. Either with Software Update or a manually downloaded installer package, will report the update as damaged. I suspect there’s some sort of internal SSD damage, which is a shame because that’s not easily serviceable. It does work fine with semi-clean macOS installations on an external SSD, so my next step is to get a larger external SSD and make a clone.

Previously:

Microsoft Ending Windows Subsystem for Android

Microsoft (via Hacker News, 9to5Mac):

Microsoft is ending support for the Windows Subsystem for Android™️ (WSA). As a result, the Amazon Appstore on Windows and all applications and games dependent on WSA will no longer be supported beginning March 5, 2025.

Steve Troughton-Smith:

Never depend on Microsoft for anything.

Alan Miller:

This seems like the nichest of niche products since Microsoft no longer even has Android devices of its own and most Android installs run on a different cpu architecture than most Windows installs.

Michael Love:

Glad I didn’t waste time supporting the Amazon AppStore for this. (meanwhile the case for a dedicated Windows port grows)

Also maybe helps to explain Apple’s lack of enthusiasm for Catalyst, since I assume they’re seeing some of the same apathy towards blown-up-mobile-apps-on-desktop that led Microsoft to make this decision.

Previously:

Features Lost Across Versions of macOS

Michael Schmitt:

Article Do You Use It? How TidBITS Readers Install macOS Updates - TidBITS says that “Some people even wait until Apple announces or even releases the next macOS version, under the theory that it somehow isn’t fully baked until then.”. I wait until the next major release, but not under that theory.

It used to be one reason to wait was that macOS updates have become so time consuming that I’d wait until there were just the faster security updates left. But now with the sealed system volume even the security updates are a pain.

So that leaves my primary reason: I used to look forward to classic Mac and OS X updates. That ended with OS X Lion. I think every OS X/macOS version since Snow Leopard has been worse than the one before. So, I put off the pain of lost functionality as long as possible.

You think I’m joking? Just look at what we’ve lost in each upgrade since OS X 10.6 Snow Leopard[…]

I think this is a bit harsh because each version brings improvements, too. I’m more sore about the bugs than most of the lost features. But I don’t think I’ve ever seen them laid out like this before. It’s quite a list.

Previously:

Monday, March 11, 2024

PopChar 10

Ergonis Software:

  • An improved user interface that balances classic functionality with modern aesthetics
  • Enhanced magnifier providing improved information and shortcuts for characters, making inspection and insertion of special characters more intuitive
  • New insertion modes with a single click, including support for Swift code
  • Spanish language support, broadening the tool’s international usability
  • Full compatibility with Unicode 15
  • New and easier navigation concept

PopChar 10 is priced at $34.99 for new purchases, is discounted by 50% for those with previous licenses, and is available for free for those who purchased on or after September 1, 2023.

Previously:

How AirPort Changed Everything

The Serial Port (via David Kopec):

“No wires.” This simple phrase from Steve Jobs during Apple Airport’s debut in 1999 contained more than a decade of history behind it. Follow along as we chart the perilous and unbelievable journey of wireless networking, and hear from the people that were there during it all.

Apple got them to reduce the cost of the AirPort card from $1,500 to $50 and then sold it for $99. The AirPort base station initially didn’t work because Jony Ive had selected a metallic paint, which created a Faraday cage.

Previously:

Amazon Buy Box May Not Offer the Best Deal

Ashley Belanger (via Slashdot):

Amazon rigged its platform to “routinely” push an overwhelming majority of customers to pay more for items that could’ve been purchased at lower costs with equal or faster delivery times, a class-action lawsuit has alleged.

The lawsuit claims that a biased algorithm drives Amazon’s “Buy Box,” which appears on an item’s page and prompts shoppers to “Buy Now” or “Add to Cart.” According to customers suing, nearly 98 percent of Amazon sales are of items featured in the Buy Box, because customers allegedly “reasonably” believe that featured items offer the best deal on the platform.

[…]

Authorities in the US and the European Union have investigated Amazon’s allegedly anticompetitive Buy Box algorithm, confirming that it’s “favored FBA sellers since at least 2016,” the complaint said. In 2021, Amazon was fined more than $1 billion by the Italian Competition Authority over these unfair practices, and in 2022, the European Commission ordered Amazon to “apply equal treatment to all sellers when deciding what to feature in the Buy Box.”

These investigations served as the first public notice that Amazon’s Buy Box couldn’t be trusted, customers suing said. Amazon claimed that the algorithm was fixed in 2020, but so far, Amazon does not appear to have addressed all concerns over its Buy Box algorithm. As of 2023, European regulators have continued pushing Amazon “to take further action to remedy its Buy Box bias in their respective jurisdictions,” the customers’ complaint said.

See also: Nick Heer.

Previously:

Mac Dialog in Auto Layout vs. SwiftUI

Christian Tietze (Mastodon):

On Mastodon, we had a discussion about whether you are more or less productive with SwiftUI or UIKit/AppKit. Der Teilweise (@teilweise@layer8.space) chimed in with an actual, measurable benchmark: a flexible-width window, with reflowing text, and equal-size buttons. Doable in 10 minutes. Can SwiftUI beat this?

[…]

Here’s the reference implementation on GitHub.

[…]

  • Richard Kolasa got pretty far in 6mins, but the default SwiftUI window has too much free movement :)
  • Mike Apurin points out that window resizing is hell (Code).
  • Ryan Lintott shared a solution that reflows the text and increases window height properly (Code). Uses his FrameUp library to help with the layout.

Mike Apurin:

Debating whether SwiftUI is “production-ready” in 2024 is an eye-roll argument, though. It has, limitations, sure, but what doesn’t?

“Production-ready” is probably not the right question. It is clearly being used in production. But you could look at how easy it is to make standard Mac layouts that were straightforward with the old system. In this particular example, it seems like sort of the anti-Perl: easy things made hard but possible. If you look at the SwiftUI layouts in Apple’s apps, they generally don’t sweat these details. SwiftUI started on watchOS, which doesn’t really have resizable windows and where buttons are usually full width and stacked vertically. On the other hand, there are certain types of layouts and data flow that are easier in SwiftUI.

Mike Apurin:

Sadly, the way windowResizability works makes it impossible to implement this without a GeometryReader or a Layout, and even then it’s a bit janky. SwiftUI needs something like the compression resistance priority here.

Der Teilweise:

Today I’d say SwiftUI has its pros and cons. I still doubt that it is better than UIKit/AppKit. It’s (just) different.

I like the good things about Autolayout more than I like the good things in SwiftUI. And I hate the bad things in SwiftUI passionately while I have made peace with the bad things in UIKit.

(We all thought Autolayout errors were the worst possible …)

Isaiah Carew:

there is, of course, no way to build a UI that changes with content using springs and struts. it’s all top-down constraints.

that said, here’s my quick UI:

  • keeps the buttons the same size.
  • maintains correct spacing.
  • margins don’t scale, just buttons.

there’s not much to it, so it went pretty fast.

Steve Troughton-Smith:

I added an AppKit target to the @broadcastsapp codebase just to experiment, and of 245 source files only 11 are portable All the pre-existing SwiftUI code is uncompilable, because even basic things like size classes don’t have a macOS equivalent or translation. I continue to believe that the AppKit SwiftUI target is simply a dead end and needs to be rolled into the Universal app platform instead. I don’t want to continue with this bringup experiment at all.

Jaanus Kase:

Another thing that “should be easy in macOS SwiftUI but isn’t”:

Reopening a window after closing it, with the correct position, size and split view pane sizes.

It works correctly if I quit the app and restart. Window is restored with previous metrics (automatically stored in UserDefaults).

It does not work correctly if I close the window and click on the Dock icon which opens a new window. I expect the new window to have same metrics as the one I just closed, but nope.

Khoa:

This same code runs fine on Mac but causes severe hangs on iOS

Marcin Krzyzanowski:

Not me implemented 90% of functionality with the new SwiftUI API, only to learn the missing 10% is impossible because it’s missing configuration, and now rewriting it to something else.

it’s just annoying that SwiftUI API is so very closed. one can rarely add missing piece without reimplementing a thing from the ground. That aspect is very much the opposite of UIKit etc.

I would say it’s “make easy things easy, and hard things impossible” philosophy

John Siracusa:

My SwiftUI view and its containing NSHostingView/NSWindow are not getting along, and I think it’s an Apple bug.

Marco Arment:

Seems like everyone here is stumped, just like I was.

Does SwiftUI REALLY not support basic table-cell animation after four years? I assume it’s me, not the framework…

Tanmay:

SwiftUI is terrible when it comes to reliability for building any custom interactive component. Random things just break in the next release. If you want to build fluid, interactive designs for iOS that are rock stable, stick with UIKit.

Mario Guzmán:

Still experimenting with SwiftUI for Macintosh layouts because some of the toolbar item placement options and controls just don’t have the flexibility they do in AppKit.

Luc Vandal:

Keyboard shortcuts for toolbar items not showing when holding the ⌘ key on iPad: am I doing something wrong or is it just another “not yet supported in SwiftUI” thing?

So of course the solution was obvious (sarcasm)! Adding .labelStyle(.titleAndIcon) to the Label is the way to go. So many SwiftUI dark patterns…

Jordan Morgan:

In my previous snip, I used a cheeky Threads knockoff interface to demonstrate the subject matter. It occurred to me how crazy it is that I can even do this. SwiftUI has done away with so much work that used to be pervasive in interface programming, interface builder or not.

Christian Beer:

SwiftUI is awesome for starters… just until you get some strange error on a ForEach: “Cannot convert value of type ‚[XYZ]‘ to expected argument type ‘Range<Int>’” that worked perfectly until you wrote the wrong action code in a Button somewhere.

Krzysztof Zabłocki:

So many weird bugs in SwitUI, e.g. adding contextMenu steals all touches from the underlying view instead of just around that view, thus making overlay components break underlying UI interactions…

Oskar Groth:

No macOS SwiftUI component has let me down as much as List. Just when you think you’ve got it working well, there is always some tiny issue relating to reorder, DisclosureGroup expansion, highlight or layout.

Matt Massicotte:

I’ve been doing some experimentation with SwiftUI on macOS 14. Things are working amazingly well. I have yet to find anything weird, broken, or nonfunctional. Interop with AppKit world is excellent.

Craig Hockenberry:

Here’s a surprisingly hard thing to implement in SwiftUI: a panel that contains a resizable image that looks right on both iOS and tvOS..

Collin Donnell:

Things are easier in SwiftUI, except debugging, debugging sucks.

John C. Welch:

I’ll be adding to this post as I go along as a way of documenting some of the “fun” bits of SwiftUI[…]

Clarko:

Really frustrating to spend the day reworking on macOS UI, getting it really responsive and snappy, and then the exact same SwiftUI code on iOS and iPadOS runs like sludge.

Steffan Andrews (Reddit):

Apple completely removed the ability to open the SwiftUI Settings scene using legacy NSApp.sendAction() method using the showSettingsWindow: (macOS 13) or showPreferencesWindow: (macOS 12 and earlier) selectors. The only available method of opening the Settings scene (apart from the App menu → Settings menu item) is to use the new SettingsLink view.

This presents two major restrictions:

  1. There is no way to detect when the user has clicked this button if additional code is desired to run before or after the opening of the Settings scene.
  2. There is no way to programmatically open the Settings scene.

BenedictC:

I blame the annual cycle in part for the fundamental problems in Swift and SwiftUI. There’s a proposal to add a feature for property specific inits (a bonkers idea). It exists to patch a problem with macros, which fixed a problem with property wrappers, which were added to allow SwiftUI to subvert value type semantics. I believe if Apple had spent more time dog fooding SwiftUI it would be very different. No amount of pausing to fix bugs will allow Apple to fix the fundamentals.

Christian Beer:

I still can’t get over the fact that in SwiftUI you can’t create a Table with a dynamic set of columns. And I don’t mean reordering or resizing. I mean: you can‘t use if or ForEach when creating table columns. ☹️

Christian Beer:

We’re in year 4 of SwiftUI and building a good multiplatform document based app is still hard to impossible.

Building a VERY simple document based app, with DocumentGroup and TextEditor, like the sample is easy. But doing more than that is hard: DocumentGroup with NavigationSplitView? Forget it. Customizing document creation? Forget it…

Christian Tietze:

Today is the day on which I realize:

I like working in SwiftUI more than I like building programmatic interfaces in AppKit.

It’s not even close. I’m really annoyed by all the wiring[…]

Dandy Griffin:

This chain speaks to me so much! I’m in the process of reducing SwiftUI usage in my only macOS app because it just seems to fall apart. I find AppKit tedious, but reliable, and there’s ~always~ a solution. Even hacky solutions in AppKit/UIKit never feel as fragile or hacky as SwiftUI hacks.

Sam Rowlands (tweet):

SwiftUI has really helped make Mac development more exciting (for me), and further cements how far outa the race Xojo is. At this point, I don’t think there is anything Xojo can do to catch up, but I believe they know that already.

Sure it’s not without it’s downfalls, adapting some of the work flows to the SwiftUI way, can be a massive paradigm shift, and sometimes feels like hacky spaghetti code. Alerts for instance feel unnatural, but I can see why they’ve done them this way.

Marco Arment:

Sometimes, I wonder if I’ve made a huge mistake by tackling a giant rewrite of my 10-year-old ObjC/UIKit app in Swift/SwiftUI that’ll probably end up costing me ~1.5 years of development time.

Then I try to do ANYTHING with ANY new API in the old codebase from Objective-C and UIKit.

It quickly becomes apparent that this rewrite was not much of a choice — it’s a necessity.

Sam Rowlands:

SwiftUI Mac, changing focus from one TextField to another marks the document as “Edited”, even when the text wasn’t changed in either TextField.

Christian Beer:

We achieved a lot more stable code with Swift (in comparison to Objective-C; I know it’s discussable)… but we lost so much with SwiftUI!

SwiftUI/EnvironmentObject.swift:90: Fatal error: No ObservableObject of type BottomBarViewModel found. A View.environmentObject(_:) for BottomBarViewModel may be missing as an ancestor of this view.

Christian Beer:

Theoretically SwiftUI previews in Xcode are a good idea. But if it takes A LOT longer to just view this preview than to start the app and navigate to that view, or even “Failed to launch app “XCPreviewAgent.app” in reasonable time“… it’s just not helpful.

Der Teilweise:

One of the things I hate about SwiftUI is the crappy visual editor. It’s light years behind what we had for Storyboards. It’s not even as good as the original Interface Builder was.

Even in Visual Studio (201x!) editing of Windows Forms is way better. And that, too, parses code to build the UI! Change a line of code in the *.Designer.cs, switch the view: Boom, there’s you UI.

Marcin Krzyzanowski:

I didn’t expect that, but SwiftUI.TextEditor lagging on edit for relatively short text. I can feel it lag while I’m typing letters.

Sam Rowlands:

I came to the conclusion that SwiftUI.textEditor refreshes the entire content each time, I think the same happens for TextField also. Wrapped NSControls don’t suffer from the same problems.

Marcel Weiher:

Well, refreshing everything each time is kind of the underlying model.

See also: Accidental Tech Podcast.

Previously:

Update (2024-03-14): See also: If Not Nil.

Friday, March 8, 2024

App Marketplaces Will Stop Working If You Travel Outside the EU

Benjamin Mayo (AppleInsider, MacRumors):

iOS 17.4 in the European Union brings Apple’s first operating system release that complies with the regulatory framework of the Digital Markets Act. This includes support for alternative app stores — or as Apple calls them, ‘alternative app marketplaces’ — which allows iPhone users to download apps from outside the walls of the Apple App Store for the first time.

The availability of functionality is geo-restricted to the EU only, and Apple has detailed for the first time how it detects this. But perhaps more surprisingly, it also turns out that existing app marketplaces you have downloaded to your device will stop working if you leave the EU for too long.

[…]

As long as your Apple ID origin is one of those countries, and you physically reside in them, the app marketplace features will be available.

Mysk:

This is not the case for the App Store. A German account can install apps and purchase content from the German App Store even if you’re gone for “too long”

klabb3:

IIUC this is a deliberate act of aggression by Apple - which is important to note. Apple already has regional accounts, so the infrastructure for this is in place already, for preexisting reasons. My Apple ID is still within US after months of being in the EU. They have not “kicked me out” yet.

[…]

Optically, this is the behavior you’d expect from companies that stopped innovating and are clinging onto power with the power of lawyers. It seems like an incredibly small hill to sacrifice your reputation on.

Are their long term ambitions to live off the 30% cut? Because it sure as hell appears like they’re fighting an existential battle, which doesn’t inspire confidence in their visionary leadership. Perhaps the best thing for Apple is to take away their comfort blanket, so they’re setting sights on innovation again.

Dare Obasanjo:

Apple’s VP of Malicious Compliance has been firing on all cylinders when it comes to “compliance” with the DMA.

Eric Schwarz:

Apple really doesn’t want you using alternative app marketplaces[…]

Kirk McElhearn:

Currently, you can get app updates even if you’re not in the country where your Apple ID is registered. If they shut that off, that’s very dangerous.

Peter Steinberger:

Apple will not block apps from alternative app stores, just disable updating, making it fail slowly and making it look like the vendor is bad. 👍

Jeff Johnson:

What if the app needs a security update? Apple claims this is all about security, but it’s obviously a lie.

John Gruber:

What a confusing mess this is shaping up to be.

Juli Clover:

Apple today clarified that iPhone users in the European Union can continue to update and use apps from alternative app marketplaces for a 30-day period when leaving the EU.

Oliver Haslam (Hacker News):

Whether or not that will be something the European Commission takes issue with, remains to be seen. After all, an EU citizen is an EU citizen even after they leave the EU.

Previously:

Update (2024-03-11): SheriefFYI:

“On your 31st day of international travel you lose access to security updates for some apps” is an actual threat to the security of EU users of iPhones and there’s no way to spin this as anything else.

Apple Tweaks New EU App Store Business Terms

Apple (MacRumors):

To make it easier for more developers to sign up for the new terms, we’ve removed the corporate entity requirement that the Addendum must be signed by each membership that controls, is controlled by, or is under control with another membership.

[…]

To help reduce the risk of unexpected business changes under the new terms, such as reaching massive scale more quickly than anticipated, or if you simply change your mind, we’ve created a one-time option to terminate the Addendum under certain circumstances and switch back to Apple’s standard business terms for your EU apps.

[…]

To make it easier for developers who want to create alternative app marketplaces, we’ve added a new eligibility criteria that lets developers qualify without a stand-by letter of credit.

Apple:

Do either of the following: (1) Provide Apple a stand-by letter of credit in the amount of €1,000,000 from a financial institution that’s at least A-rated or equivalent by S&P, Fitch, or Moody’s, and maintain that standby letter of credit as long as your alternative app marketplace is in operation; or (2) be a member of good standing in the Apple Developer Program for two continuous years or more, and have an app that had more than one million first annual installs on iOS in the EU in the prior calendar year.

Jeff Johnson:

Not sure how (2) is much better than (1).

Ryan Jones:

Apple just effectively lowered their commission to 20%/13% in the EU, until you’re over 1M EU downloads/year.

Steps: Opt-in. Stay in App Store. Use IAP. Pay 20%/13% instead of 30%/15%. Switch back right before you hit 1M EU downloads/yr. 🤔

Kosta Eleftheriou:

Apple warns users that they may find certain apps on alternative marketplaces that wouldn’t be allowed on the App Store, while simultaneously telling developers they’d reject such apps for any store.

Which is it, Apple?

Previously:

DropDMG 3.6.7

DropDMG 3.6.7 is a maintenance update to my app for creating and working with Mac disk image files. This version improves the reliability of positioning icons on the mounted .dmg file and includes various documentation and Sonoma updates.

Some interesting bugs were:

audioOS 17.4

Juli Clover (release notes):

With HomePod Software 17.4, Siri is able to learn what a user’s preferred media service is, eliminating the need to set a third-party app as the default or include an app name when asking Siri to play content.

[…]

Apple has removed the Home app option that let users select a default media service as a result of the new feature addition. The change brings the HomePod in line with the iPhone and the iPad, which already offer the option to provide a default music service selection to Siri when making a song request for the first time.

Previously:

tvOS 17.4

Juli Clover (release notes, security):

tvOS 17.4 updates are often minor in scale, focusing on bug fixes and other small improvements. We did not find new features during the tvOS 17.4 beta testing process.

Previously:

Thursday, March 7, 2024

macOS 14.4

Juli Clover (release notes, security, developer, enterprise, full installer, IPSW):

With macOS Sonoma 14.4, Apple is introducing new emoji characters and adding support for reading Podcast Episode text in full with search support. There are new features for Business Updates in Messages, along with a toggle for showing only icons for websites in the Safari Favorites Bar.

It seems to fix the bug I reported with Swift Regex hanging.

Pierre Igot:

Much to my relief, updating from macOS 14.3.1 to macOS 14.4 was NOT as painful as the previous couple of (minor) updates. Unlike them, it did NOT force me to restore all kinds of “privacy and security” settings.

However, after the restart, it still greeted me with the following two modal dialogs.

I have no idea what Microsoft is up to, and I’ve only been using Apple Music daily for the past SEVERAL YEARS. But whatever.

See also: Mr. Macintosh and Howard Oakley.

Previously:

Update (2024-03-08): See also: Howard Oakley.

Daniel Jalkut:

There appears to be an AppleScript regression in Safari 17.4. References to documents aren’t resolved correctly[…]

Mario Guzmán:

This is weird. As of macOS Sonoma 14.4 (23E214), Music’s Settings window now animates in like how document-based view apps do. Hey Apple… ytho?

Here I open Settings from the menu and by using the keyboard shortcut a few times after to illustrate this incorrect animation.

Jesse Squires:

Someone broke the “monochrome” style for desktop widgets on macOS 14.4

They are just black now

They used to be like a “frosted/blurred material”

Update (2024-03-14): Amber Neely:

macOS to Sonoma 14.4 is causing some USB hubs embedded in monitors to stop working and there doesn't seem to be a clear fix.

Geoff Duncan:

I am so sick of macOS and it’s inability to consistently manage any sort of peripheral.

Normally I just bitch that it can’t remember anything about my monitor setup. Now it will only communicate with USB or Thunderbolt peripherals if they’re connected and powered on when the Mac starts up. Turn them on after that? Nope, Mac won’t talk to it. Connect them after the Mac starts up (maybe connecting a flash drive or connecting to an iOS device? Nope, Mac won’t talk to it.

FWIW, this is new as of Sonoma 14.4. Connecting peripherals worked as expected in previous versions.

Roman Loyola:

As reported by MacRumors, users have also posted about their problems on the Apple Support Community, Reddit, and on social media. While many users are having problems with USB hubs, others find that any connected USB device (mouse, keyboard, etc.) stopped working.

luckman212 (via Hacker News):

14.4 (23E5180j) seems to have gimped the fileproviderctl command again. This happened before where they completely broke the command on 13.6. Feels like there’s ONE guy whose job it is to compile and keep this tool updated, and he’s on vacation half of the year.

Pierre Igot:

My problem with Sonoma and slow mounting of external volumes at startup/login seems to be getting worse. It used to be random. Now (since 14.4) it seems to be systematic. At startup/login, the Finder launches BEFORE the volumes are fully mounted, which means that if I had windows showing the contents of folders on these external volumes left open in the Finder, these do NOT get reopened.

And toolbar buttons to folders on these volumes turn into… question marks.

Update (2024-03-15): Amber Neely:

Now, it looks like macOS Sonoma 14.4 is breaking printers, too.

Reports have begun rolling in on Reddit and the Apple Community forums, where users note that after updating their Macs, they no longer could print.

According to a post on Reddit, it seems that macOS Sonoma 14.4 removes the core CUPS software, leaving no way for the printer and Mac to interface.

It may be related to Microsoft Defender.

iZotope:

Apple has recently released the macOS 14.4 Sonoma update, which has resulted in compatibility issues for plug-ins protected by PACE / iLok with Audio Units host DAWs, such as Logic Pro, on Apple silicon Macs. Users have reported encountering problems with these plug-ins following the installation of the update, including DAW crashes.

Update (2024-03-17): Roman Loyola:

While many users are having problems with USB hubs, others find that any connected USB device (mouse, keyboard, etc.) stopped working.

Some users were able to fix the problem by going to System Settings > Privacy & Security > Allow accessories to connect, and then setting it to Always. Others have suggested switching to Always and then switching it to Ask every time. Before performing these steps, you may have to disconnect all USB devices, and then after adjusting the setting, the Mac needs to restart. After that, connect the devices, which should trigger a confirmation prompt and the devices may work again.

Oracle (Hacker News, MacRumors):

An issue introduced by macOS 14.4, which causes Java process to terminate unexpectedly, is affecting all Java versions from Java 8 to the early access builds of JDK 22. There is no workaround available, and since there is no easy way to revert a macOS update, affected users might be unable to return to a stable configuration unless they have a complete backup of their systems prior to the OS update.

The issue was not present in the early access releases for macOS 14.4, so it was discovered only after Apple released the update.

[…]

The Java Virtual Machine generates code dynamically and leverages the protected memory access signal mechanism both for correctness (e.g., to handle the truncation of memory mapped files) and for performance. With macOS 14.4, programs that attempt this will now terminate instead of having the opportunity to handle the signal.

Peter Steinberger:

There are no tests, are there.

[…]

Like you build an OS, you will have basic tests to check if stuff like Java, Python etc still runs…?

Marcel Weiher:

Changing a signal that can be caught to one that cannot be caught…

Who could have predicted that would break anything?

macOS 13.6.5 and macOS 12.7.4

Apple (full installer):

This document describes the security content of macOS Ventura 13.6.5.

Apple (full installer):

This document describes the security content of macOS Monterey 12.7.4.

Previously:

EagleFiler 1.9.13

EagleFiler 1.9.13 makes lots of improvements to my multipurpose Mac app for organizing files, archiving e-mails and Web pages, writing notes, etc. EagleFiler has long been able to import from Evernote, converting your notes to the standard RTF file format. This version is better at extracting attached files that are embedded in the notes and preserving their metadata. With Nitter no longer working, EagleFiler no longer uses it to import Twitter URLs. Instead, when you press the capture key in Safari it will import the text of the tweets. There remain other ways to import and preserve the images and rich text from tweets.

Some interesting bugs were:

Previously:

iOS 17.4 and iPadOS 17.4

Juli Clover (release notes, security, developer):

With iOS 17.4, Apple introduces sweeping changes to the way the App Store and apps function in the European Union, paving the way for alternative app marketplaces on iPhone, alternative payment systems on iOS and iPadOS, third-party browser engine support, and NFC access for banks and third-party payment providers. These features are limited to the EU, and the changes are not applicable in other countries.

Apple did, however, make worldwide changes to gaming apps. Apple is now allowing cloud gaming apps like Xbox Cloud Gaming and Nvidia GeForce NOW. Mini games, chatbots, and plug-ins are also now able to use the in-app purchase system.

In addition to these App Store-related updates, iOS 17.4 adds new emoji characters, transcripts for podcasts in the Podcasts app, Stopwatch Live Activities, improvements to battery health reporting on the iPhone 15 models, and more.

Juli Clover:

In this article, we've rounded up everything new in iOS 17.4.

Juli Clover:

iPhone and iPad owners may want to update to iOS 17.4 and iPadOS 17.4 in the near future, as the updates address two security vulnerabilities that may have been exploited to gain access to user devices.

Rui Carmo:

Reading through this makes me realize there has been no real progress on app distribution or improvements in Apple’s App Store ecosystem regarding openness over the part decade, and that besides these changes flying in the face of EU requirements, real, live, actual sideloading is still a pipe dream–there is absolutely no way it’s become feasible for the individual user, and new app stores and browser engines are still hampered by various restrictions.

Simon B. Støvring:

With iOS 17.4 released, you can go to Settings → Face ID & Passcode → Stolen Device Protection and make the security delay required even when you are at a familiar location.

You likely have way more familiar locations than you might think, in which cause you’ll probably want the security delay to always be required.

Previously:

Wednesday, March 6, 2024

Apple Terminates Epic Games’ Developer Account Again

Epic Games (Hacker News):

We recently announced that Apple approved our Epic Games Sweden AB developer account. We intended to use that account to bring the Epic Games Store and Fortnite to iOS devices in Europe thanks to the Digital Markets Act (DMA). To our surprise, Apple has terminated that account and now we cannot develop the Epic Games Store for iOS. This is a serious violation of the DMA and shows Apple has no intention of allowing true competition on iOS devices.

[…]

Apple said one of the reasons they terminated our developer account only a few weeks after approving it was because we publicly criticized their proposed DMA compliance plan. Apple cited this X post from this thread written by Tim Sweeney. Apple is retaliating against Epic for speaking out against Apple’s unfair and illegal practices, just as they’ve done to other developers time and time again.

Phil Schiller:

We welcome all developers to the Developer Program so long as they follow the rules. Those rules, including the DPLA and the App Store Review Guidelines, are intended to protect the integrity of the ecosystem, developers large and small, and - most importantly-users. Accordingly, developers who are unable or unwilling to keep their promises can’t continue to participate in the Developer Program.

In the past, Epic has entered into agreements with Apple and then broken them. For example, you testified that Epic Games, Inc. entered into the Developer Program with full understanding of its terms, and then chose to intentionally breach the agreement with Apple. You also testified that Epic deliberately violated Apple’s rules, to make a point and for financial gain. More recently, you have described our DMA compliance plan as “hot garbage,” a “horror show,” and a “devious new instance of Malicious Compliance.” And you have complained about what you called “Junk Fees” and “Apple taxes.”

Your colorful criticism of our DMA compliance plan, coupled with Epic’s past practice of intentionally violating contractual provisions with which it disagrees, strongly suggest that Epic Sweden does not intend to follow the rules. Another intentional breach could threaten the integrity of the iOS platform, as well as the security and privacy of users.

You have stated that allowing enrollment of Epic Games Sweden in the Developer Program is “a good faith move by Apple.” We invite you to provide us with written assurance that you are also acting in good faith, and that Epic Games Sweden will, despite your public actions and rhetoric, honor all of its commitments. In plain, unqualified terms, please tell us why we should trust Epic this time.

Tim Sweeney:

Epic and its subsidiaries are acting in good faith and will comply with all terms of current and future agreements with Apple, and we’ll be glad to provide Apple with any specific further assurances on the topic that you’d like.

Mark A. Perry:

Apple recently reached out directly to Mr. Sweeney to give him an opportunity to explain why Apple should trust Epic this time and allow Epic Games Sweden AB to become an active developer.

Mr. Sweeney’s response to that request was wholly insufficient and not credible. It boiled down to an unsupported “trust us.” History shows, however, that Epic is verifiably untrustworthy, hence the request for meaningful commitments.

[…]

Given the past and current conduct of Epic, Apple cannot allow Epic Games Sweden AB to be part of its ecosystem.

Please be advised that Apple has, effective immediately, terminated the Developer Program membership of Epic Games Sweden AB.

This is now the second time Apple has said they would let Epic have their account back if they agreed to follow the rules, Epic agreed, and Apple reneged, saying it didn’t believe Epic. In this case, it seems like Apple ignored Sweeney’s offer to provide “specific further assurances,” so unless there are key parts of the communication omitted it seems like Apple’s offer was not made in good faith. There is nothing in the rules saying that you can’t criticize Apple.

Joe Rossignol:

Apple shared the following statement with MacRumors:

Epic’s egregious breach of its contractual obligations to Apple led courts to determine that Apple has the right to terminate “any or all of Epic Games’ wholly owned subsidiaries, affiliates, and/or other entities under Epic Games’ control at any time and at Apple’s sole discretion.” In light of Epic’s past and ongoing behavior, Apple chose to exercise that right.

Zac Hall:

In short, Apple is leaning on a court ruling from 2021 that upholds its ability to terminate developer accounts that violate its guidelines. That’s the legal basis for which Apple is relying upon globally — not just in the EU. As recently as last month, Epic Games accepted existing rules of the Apple Developer Program like all other developers.

Note that this ruling was in the US, and the Swedish account had not violated the guidelines.

Michael Love:

If Apple doesn’t want to have to have a business relationship with Epic, a great way to achieve that would be to do what every other platform maker has done for decades, and allow companies to distribute apps without going through Apple.

But if you insist that everything go through you then you’re obligated to treat everyone equally, even those that criticize you.

Steve Troughton-Smith:

Putting Phil Schiller in charge of the App Store is going to be a hundred billion dollar mistake that all-told leaves Apple with a pile of legal, perhaps criminal, liability and a raft of draconian regulations around the world that massively compromise the iOS experience. This was clear years ago; it is unimaginable that he’s still calling the shots.

Previously:

Update (2024-03-07): Kyle Orland:

Apple told Ars that Epic Games Sweden’s access to a developer account was granted through a “click through” agreement that was not evaluated by Apple management. Now that Apple management is aware of that approval, the company says it has terminated that agreement following the same logic that led the company to deny a 2021 request by Epic for reinstatement to the iOS developer program.

Gergely Orosz:

Dare criticize Apple and they can (and, sometimes, will!) remove you from their platform as a developer. They just did this w Epic!

I cannot remember even Microsoft being this much of a bully back in the 90s.

Apple became the very thing they fought against in 1984.

Gergely Orosz:

Apple’s explanation: Epic broke rules before. Apple gave back Epic’s dev account. But then Sweeney tweeted something. So now they are taking it back.

This is the type of reasoning I see children apply. Waiting for when the adult steps in (aka regulator).

Steve Troughton-Smith:

“But Epic broke the rules” is not a defense of Apple’s behavior. As per the EC, Apple’s developer agreement contains clauses that are now and always have been illegal. Epic ‘broke’ the terms of an illegal contract in order to, among other things, test its legality in court and in regulation. We have our answer now: Apple’s terms were illegal. Epic was right to break them. I care nothing for how much money Epic makes, how its leadership tweets, or how Epic’s deals with console makers are worded.

We are all, as developers, signed up to and subject to Apple’s illegal agreement, to the detriment of us, our families, our products and our users. And almost none of us have the resources to challenge any part of that developer agreement without risking all of the above.

Peter van Broekhoven:

Seems more like, “But Epic might break the rules in the future.”

Which is bonkers. Did we stumble into the Minority Report universe? Wait until they do, then react.

Damien Petrilli:

Apple leadership is so untrustworthy that I am starting to think that making native App is dangerous.

If Apple can kill your business for a tweet, they went from mafia level to dictatorship level.

George Broussard:

It’s clear that Apple’s actions against Epic are punitive and meant to make an example of Epic. Apple moves from benevolent overlord to Tyrant. By stepping on Epic, Apple is saying “You could be next. You will be next.” therefore silencing developers and any form of dissent.

Agence France Presse (MacRumors, Hacker News):

Apple must explain its decision to halt Epic Games’ effort to develop a competing app store for its devices, EU regulators said Thursday, as they consider whether the iPhone-maker violated any laws.

[…]

The spokesperson for the commission said it was “also evaluating whether Apple’s actions raise doubts on their compliance” with two other EU laws regulating digital players.

[…]

Apple compliance with the DSA -- a content moderation law -- means any decisions to suspend or terminate accounts must be “proportionate and in due regard to fundamental rights,” the spokesperson said.

James Thomson:

Can I simultaneously think that Epic are a bunch of chancers, while also really disliking Apple’s handling of them? Yes.

John Gruber (Mastodon):

That Tim Sweeney tweet cited as an example doesn’t seem out of line to me. It’s strident, to be sure, but we know Sweeney endorses a regulatory structure that would legally require Apple to treat the iPhone as a platform more or less as open as the Mac. We know Apple disagrees, vehemently, with that — but I don’t see how stating that viewpoint ought to disqualify Epic from obtaining a developer account.

[…]

Citing recent tweets, like Sweeney’s, that are simply critical — even scathingly critical (or to borrow Schiller’s term, “colorful”) — just makes it look like Apple’s policy is that if a developer criticizes the App Store’s rules, Apple will punish them for speaking out. I don’t think that’s Apple’s policy at all, but some people think it is, and this situation with Epic just reinforces that.

[…]

But why not take an opportunity to look magnanimous? Apple shouldn’t be expected to grovel, but this looks like they’re going out of their way to look vindictive. I really thought it would be a clever bit of public relations jujitsu to make nice with Epic, even if, in Cupertino, it was through gritted teeth.

Francisco Tolmasky:

Something missing in the Apple vs. Epic discourse is the actual customer perspective. I’m sure you don’t play Fortnite (I don’t either), but apparently it’s… pretty popular. So what matters really isn’t whether you’d “also tell them to fuck off,” but whether you want an ecosystem where what seem to be increasingly personal disputes result in products not appearing in markets. I don’t want to not be able to use Procreate if they get into a fight with Apple, regardless of who’s “right.”

Update (2024-03-08): See also: Accidental Tech Podcast.

Zac Hall (Hacker News):

After a whirlwind of events, Epic Games says Apple has reinstated their App Store developer account. The move clears the way for Epic to bring its Epic Games Store to the EU, avoiding the App Store structure altogether.

Dan Moren:

Apple, for its part, issued a terse statement, saying only, “Following conversations with Epic, they have committed to follow the rules, including our DMA policies. As a result, Epic Sweden AB has been permitted to re-sign the developer agreement and accepted into the Apple Developer Program.”

Khaos Tian:

Yeah it definitely has nothing to do with the Commission’s inquiry 😛

John Gruber (Mastodon):

Theory B: Apple is flailing erratically trying to deal with their loss of autonomy.

I vote B, because to me the real win for Apple would have been just let Epic use their Swedish subsidiary to open an iOS games store without the back-and-forth. If Apple had gone that route, the European Commission could still have taken credit for proof of the DMA’s effectiveness, and Apple would look like they’re complying graciously with the law. But the way things actually played out makes clear they’re complying begrudgingly, and, worse, plays into the worst assumptions about Apple’s institutional arrogance and vindictiveness.

[…]

How was a “priority” investigation by the EC not going to happen the way Apple played this? If Apple had just let Epic proceed from the start, they’d have looked magnanimous. They even had Tim Sweeney calling it “a good faith move”. But as it stands, Apple looks bitter, and from the EC’s perspective, in need of close policing.

Steve Troughton-Smith:

Apple’s reversal on the Epic situation is all well and good, but it doesn’t prevent this kind of thing from happening again to a smaller developer who doesn’t have a ton of PR or the ear of the EC. And it does highlight that Apple still has all the control to do whatever it wants, with little oversight, under its proposed DMA plan. They have forcibly inserted themselves in between third party app stores/payment providers and those services’ users, free to turn the screws as they wish

Update (2024-03-14): Tim Sweeney:

There weren’t any other communications on the topic between Epic and Apple either directly or thru counsel during this episode, nor between then and when Apple notified the commission they were relenting.

John Gruber:

Per Sweeney, responding to a question from me tonight on Twitter/X, that was Friday, February 9, and their account was approved on the following Monday, February 12. Epic made their public announcement that they intended to create an Epic Games Store for iOS in the EU on Friday, February 16.

That announcement, seemingly, was in fact the first time Epic’s plans came to the attention of Apple’s leadership.

[…]

The “colorful” tweets Schiller quoted and which Apple’s attorney cited were mentioned as proof that Epic hadn’t changed, not as the reason for revoking the new account.

[…]

The bottom line remains as I concluded Friday: Apple played this whole thing terribly. The automated developer program enrollment form — the one that gave Epic the impression they’d been granted express permission to proceed with building an iOS marketplace for the EU — is Apple’s. The whole App Store bureaucracy is Apple’s. (Or as Sweeney aptly called it tonight, “Apple’s App DMV”.)

Update (2024-03-17): Francisco Tolmasky:

So let me get this straight, Apple, the company that “simply didn’t realize Epic had made a new account,” is supposed to keep us safe on the AppStore?… Apple’s not even trying to pretend to be the vigilant protector of the end user anymore, huh? Once again proving that the AppStore is as “curated” and “safe” as a strip mall dollar store.

ToothFairy 2.8.4

ToothFairy 2.8.4 is a maintenance update of my Bluetooth menu bar utility. The focus is on better handling of a variety of edge cases to improve the battery level, sound quality, and connection features. The macOS Bluetooth APIs don’t always correctly connect a device (e.g. may not update the sound output device), so ToothFairy will detect this and try to fix things for you. Sometimes this can take a while, and this version improves the way the app works during the fixing process. Also, you’ve long been able to set ToothFairy to run a script when a device is connected or disconnected, and the documentation now includes an example of how you can use this to run a shortcut, so you can automate things without writing any code.

HP All-In Plan

Scharon Harding:

HP launched a subscription service today that rents people a printer, allots them a specific amount of printed pages, and sends them ink for a monthly fee. HP is framing its service as a way to simplify printing for families and small businesses, but the deal also comes with monitoring and a years-long commitment.

[…]

But HP enforces an Internet connection by having its TOS also state that HP may disrupt the service—and continue to charge you for it—if your printer is not online.

The All-In-Plan privacy policy also says that HP may “transfer information about you to advertising partners” so that they can “recognize your devices,” perform targeted advertising, and, potentially, “combine information about you with information from other companies in data sharing cooperatives” that HP participates in. The policy says that users can opt out of sharing personal data.

Wes Davis (Hacker News):

Which printer you get depends on the plan you choose. They start at $6.99 per month for 20 pages’ worth of prints and whatever the current HP Envy model is, and go all the way up to a $35.99-a-month affair that gets you an OfficeJet Pro and 700 pages. If you go over your page allotment, HP will add more for a dollar per block of 10–15 pages.

[…]

The subscription, like HP’s recent ad campaign promoting its printers as “made to be less hated,” trades on the idea that printers are frustrating commodities. The company’s configurator page mentions bonuses like “continuous printer coverage” and “next-business-day printer replacement,” for instance. That way, if a firmware upgrade blue-screens your printer, at least you have some recourse that doesn’t involve driving to a store to buy a whole new one.

Previously:

Update (2024-03-07): Karl Bode (Hacker News):

Paying for the same several-hundred dollar printer for all eternity is precisely the sort of concept Lores has been pushing for a while. The problem is it’s not clear that anybody actually wants this. It’s also not really clear that paying up to $36 for a printer you never really own makes much value sense. Printers inherently aren’t that expensive. And ink isn’t either, if companies aren’t being restrictive tyrants.

[…]

Once they’ve established renting a printer as a norm, they’ll just steadily jack the rental price skyward as they make the underlying value proposition steadily worse. Ultimately the business becomes less and less about making popular quality products, and more and more about making unnecessarily convoluted subscriptions with creative restrictions and ever-skyrocketing monthly prices.

Swift 5.10

Holly Borla (Mastodon):

Swift 5.10 accomplishes full data isolation in the concurrency language model. This important milestone has taken years of active development over many releases. The concurrency model was introduced in Swift 5.5 including async/await, actors, and structured concurrency. Swift 5.7 introduced Sendable as the fundamental concept for thread-safe types whose values can be shared across arbitrary concurrent contexts without introducing a risk of data races. And now, in Swift 5.10, full data isolation is enforced at compile time in all areas of the language when the complete concurrency checking option is enabled.

Full data isolation in Swift 5.10 sets the stage for the next major release, Swift 6. The Swift 6.0 compiler will offer a new, opt-in Swift 6 language mode that will enforce full data isolation by default, and we will embark upon the transition to eliminate data races across all software written in Swift.

[…]

When building code with the compiler flag -strict-concurrency=complete, Swift 5.10 will diagnose the potential for data races at compile time except where an explicit unsafe opt-out, such as nonisolated(unsafe) or @unchecked Sendable, is used.

[…]

Previously:

Update (2024-03-07): Rob Jonson:

Swift 5.10 with full concurrency checking warns for most of the @MainActor failures I have found in the past.

But you can still accidentally call a @MainActor function from a background thread if you use ObjectiveC or Framework code like Notifications.

Jesse Squires:

Swift classes with isolation annotations behave differently when inheriting from an ObjC superclass.

Donny Wals:

With Swift 5.10, Apple has managed to close some large gaps that existed in Swift Concurrency’s data safety features. In short, this means that the compiler will be able to catch more possible thread safety issue by enforcing actor isolation and Sendability in more places.

Let’s take a look at the two features that make this possible.

Wade Tregaskis:

I really wish Swift releases would stop having major regressions in the ability to parse non-trivial expressions. The installation of a new version of Xcode – with a corresponding new Swift version & toolchain – should be a joyous occasion, not one I increasingly dread.

Update (2024-03-08): Rob Napier (Mastodon):

In the following simplified code, we’re getting stuck with MainActor being both forbidden and required. We have a ViewModifier that observes a ObservableObject. Therefore it must be MainActor (and in fact, becomes MainActor automatically due to the ObservedObject wrapper).

However, it is used within a ButtonStyle. ButtonStyle requires a non-isololated makeBody method. But if it’s nonisolated, then it can’t access the ViewModifier. Under “complete” concurrency, the following either generates “Call to main actor-isolated initializer ‘init()’ in a synchronous nonisolated context” or “Main actor-isolated instance method ‘makeBody(configuration:)’ cannot be used to satisfy nonisolated protocol requirement.”

Holly Borla:

Yeah, the recommended way to do this is using MainActor.assumeIsolated.

Xcode 15.3

Apple (direct download):

Xcode 15.3 includes SDKs for iOS 17.4, iPadOS 17.4, tvOS 17.4, watchOS 10.4, macOS Sonoma 14.4, and visionOS 1.1. The Xcode 15.3 release supports on-device debugging in iOS 12 and later, tvOS 12 and later, watchOS 4 and later, and visionOS. Xcode 15.3 requires a Mac running macOS Sonoma 14 or later.

[…]

You can now use API Notes to add attributes to C++ APIs declared in a C++ namespace.

[…]

Schemes provide a new “Override Architectures” build option, which controls the set of architectures that will be built for all targets in the workspace, including Swift packages. The recommended option (and default for new schemes) is “Match Run Destination”. Full details are available by clicking the information icon next to the “Override Architectures” setting on the scheme build options sheet in Xcode.

[…]

If an Objective-C or C++ exception is thrown on a background thread, including those owned by the Swift runtime, it will now be recorded as a test failure before the test process terminates.

Previously:

Update (2024-03-08): Scott Anguish:

Xcode 15.3 seems like a backslide in a bunch of cases.

I’m seeing lots of “Build service could not create build operation: unknown error while handling message: unknownSession(handle: "S0")” failures that require closing and reopening the project.

And Previews in SPMs no longer actually preview (Update Failed)

Jonathan Wight:

Yeah I am getting a ton of random failures ("please try compiling again) with 15.3 too.

Update (2024-03-15): Damien Petrilli:

March 2024 and the replace container feature of Xcode 15 which has been broken since the first beta is still NOT fixed despite being acknowledged by Apple.

Tuesday, March 5, 2024

MacPad: Hybrid Mac-iPad Laptop and Tablet

Federico Viticci (Hacker News):

The concept behind the video was fascinating: if a Vision Pro can provide you with a virtual display for your Mac, can you physically remove the display from a MacBook and continue using it in “headless” mode with a Vision Pro or other external monitors? The answer is yes.

That video planted an idea in my brain that I couldn’t get rid of. I could see myself working with that type of accessory; removing the screen from my MacBook Air would make it even lighter to carry around and put on my lap; it would also mean I could get rid of the standalone Magic Keyboard and Trackpad on my desk and just use the remaining part of the MacBook Air for input with my Studio Display.

[…]

You see, I’d been thinking about creating a headless MacBook Air and relying on Universal Control, but I was only considering one side of the story – the Mac-to-Vision Pro side. It was only when I remembered that Mac-to-iPad Universal Control and Sidecar also existed that everything clicked:

I didn’t just want to make a headless MacBook anymore. I had to figure out how to combine the MacBook Air and iPad Pro into a single machine.

Previously:

Keyboard Control of Messages.app

With macOS Catalina, Apple replaced the Messages app, which had been based on iChat, with a version derived from the iOS Messages app. This brought some new features such as effects but dropped others such as conversation archiving. (You can’t even Select All to copy the text of a conversation.) Messages is often held up as a successful use Catalyst, but under macOS Sonoma the keyboard shortcuts still don’t work properly. The Page Up, Page Down, and Home/End keys don’t do anything in either the conversions list or the messages list. Nor does tabbing between the different panes work. With the text field active, pressing Tab actually inserts a tab character, and holding down a modifier doesn’t help. Granted, being able to transfer keyboard focus isn’t very useful because there isn’t much you can do with it: scrolling messages with the arrow keys is broken, and you can’t use the arrow keys to select a conversation. Oddly, Messages uses Control-Tab to do that.

Previously:

Emulation on iPhone

Mike Rockwell:

Last year I wrote an about retro gaming on iOS. I’ve had a lot of fun playing games on the platform, especially through emulation. Much of what I wrote last year is still applicable today, but I thought I’d revisit the topic with a focus on the state of emulation on iOS and all of the software and accessories you’ll need to get started.

[…]

Apple, being the restrictive little platform vendor that they are, doesn’t allow emulators on the App Store. In order to install them on your device, you’ll have to utilize sideloading. AltStore is the best method for installing and managing sideloaded applications on iOS.

What if you want to run a retro iOS game?

Alfonso Maruccia:

There’s a new iOS emulator in town, and it wants to bring 32-bit gaming apps back into a working state on modern machines and operating systems. touchHLE is specifically designed to run games “from the early days of iOS,” with a focus on iPhone/iPod touch apps for iPhone OS 2.x.

[…]

Born as a “full-time passion project” by a single developer in December 2022, touchHLE is radically different from traditional low-level emulators (like QEMU) as it is based on a “high-level emulator” design: the program’s simulated CPU only runs the code from an app binary and some needed iOS libraries. touchHLE takes the place of iOS, the developers explain, providing its own implementations of the system framework components like Foundation, UIKit, OpenGL ES, OpenAL, etc.

Hikari_no_yume:

But then in 2017, Apple released iOS 11: the first iOS version not to support 32-bit apps. All those ancient games became unplayable on modern hardware. Nobody could buy them any more, either. Locked away with DRM, they might die with the devices that could still run them.

[…]

Anyway, I wanted to play it again. But of course, I couldn’t, not without an ancient device, which I didn’t have. And I thought, oh no, I love this game, but nobody coming after me will have the chance to.

Filipe Espósito:

Surprisingly, the tool works very well, and I was able to test it myself on my M1 MacBook Air. It was great to be able to interact with a game that took me back to the days of the iPhone 3G and the launch of the App Store.

[…]

I have been extremely careful during this project, perhaps more careful than most people would be, not to violate Apple’s copyrights so far as I can. I don’t use any code written by Apple, I have been careful to avoid reverse engineering iPhone OS itself. And in order to use the project, in order to use the code I’ve written, you don’t have to violate Apple’s copyrights. You can download the project, and it doesn’t contain anything that like, isn’t legal to distribute.

Alas, running iOS apps on a Mac doesn’t feel the same. I have not seen a way to emulate iOS on an actual iPhone.

Previously:

Update (2024-03-06): Craig Grannell:

it’s quite something that we’ll be blue to run old iPhone games on an Android phone but not on an iPhone.

Matt Leidholm:

Depending on how strictly one defines “emulator”, there is at least one great one in the iOS App Store: ScummVM, the excellent reimplementation of adventure game engines from the likes of LucasArts, Sierra On-Line, and Coktel.

Update (2024-03-07): Mike Rockwell:

Wouldn’t it be nice if Apple built a “Classic” mode that was built in to iOS that emulated older versions of the operating system for the purposes of running older software?

Nintendo v. Yuzu

Chris Brandrick (Hacker News):

Nintendo is taking action against the creators of the popular emulator tool Yuzu.

The copyright infringement filing, from Nintendo of America, states that the Yuzu tool (from developer Tropic Haze LLC) illegally circumvents the software encryption and copyright protection systems of Nintendo Switch titles, and thus facilitates piracy and infringes copyright under the Digital Millennium Copyright Act (DMCA).

[…]

The official Yuzu website suggests that the tool is to be used with software you yourself own: “You are legally required to dump your games from your Nintendo Switch” — but it’s common knowledge, that this is not how these tools are primarily used.

Sean Hollister (Hacker News):

Now, it appears that Yuzu will give up without a fight — and give Nintendo everything it wanted. And it affects the Nintendo 3DS emulator Citra, too.

According to a joint filing, Tropic Haze has not only agreed to pay $2,400,000 to Nintendo but also says Yuzu is “primarily designed to circumvent and play Nintendo Switch games.” The company agrees to be permanently enjoined from working on Yuzu, hosting Yuzu, distributing Yuzu’s code or features, hosting websites and social media that promote Yuzu, or doing anything else that circumvents Nintendo’s copyright protection.

Oh, and it will surrender the yuzu-emu.org domain name to Nintendo, agree to delete not only its copies of Yuzu but also “all circumvention tools used for developing or using Yuzu—such as TegraRcmGUI, Hekate, Atmosphère, Lockpick_RCM, NDDumpTool, nxDumpFuse, and TegraExplorer,” and hand over any “physical circumvention devices” and “modified Nintendo hardware” to Nintendo.

Update (2024-03-07): Sean Hollister:

The developer of popular Nintendo DS emulator Drastic just made its app completely free on Android (previously $4.99), and it intends to pull it down for good. Exophase wrote on its official Discord that “I want to make it clear that I don’t have any kind of financial incentive” and that Nintendo’s move simply “made the whole process more urgent”[…]

[…]

Meanwhile, a popular Discord server for the Steam Deck has at least temporarily shut down its entire emulation channel, writing, “We are not equipped to deal with potential legal repercussions of hosting discussions on Yuzu or emulation at this time” and apologizing for “the need to censor.”

Via NeoNacho:

Seems like the chilling effect of the Yuzu lawsuit is pretty bad already. The fact that emulators for the DS/3DS (which Nintendo abandoned last year) are affected will be significant blow to game preservation.

Monday, March 4, 2024

M3 MacBook Pro Multi-Display Support via Software Update

Zac Hall:

Both the M3 MacBook Air and the M3 MacBook Pro offer support for one external display with up to 6K resolution at 60Hz when the display is open, and with the update, the M3 MacBooks will also be able to power two 5K external displays with a resolution of up to 60Hz. That is equivalent to the Studio Display, so users can expect to be able to run two of Apple’s 5K displays in clamshell mode.

[…]

Apple has confirmed to 9to5Mac that a software update for the 14-inch MacBook Pro will gain the ability to drive two external displays with the lid closed. The feature will work identically to how it works with the new M3 MacBook Air.

Apple:

One external display with up to 6K resolution at 60Hz

Close the MacBook Air lid to use a second external display with up to 5K resolution at 60Hz

So I think this means you can have one external 6K and one external 5K.

Juli Clover:

The higher-end M3 Pro and M3 Max MacBook Pro models are already able to drive multiple displays, so this change only applies to the 14-inch MacBook Pro that has the M3 chip. This machine replaced the prior-generation 13-inch MacBook Pro, which Apple has now done away with.

Mr. Macintosh:

The M2 Mac mini can support 2 monitors. Was 2 monitor support (for laptops) built into the M3 chip? If not, can the M2 & M1 also run 2 monitors with a software update?

Joe Rosensteel:

It is interesting that this is something that could be controlled in software … all this time … and won’t come to the M1 or M2 machines. I wonder what discussions happened to get this concession. Did the dings in reviews matter? Product returns? Qualtrics surveys?

Matt Birchler:

I have no idea how it is in the wider world, but IT at my work has been hit up by nearly every person who was issued a an M1/M2 device asking why they can’t get both their monitors to work. “Even my crappy Dell could do it,” is not an uncommon reaction when they’re told what’s up.

Previously:

Update (2024-03-07): Eric Schwarz:

In my day job, I see plenty of lower-end business PC laptops connected to USB-C docking stations driving dual 1080p monitors, yet it requires a much more expensive Mac to do the same thing. While an M1 MacBook Air probably doesn’t have the horsepower to drive dual 5K monitors, I think if two external displays work with the internal one off or lid closed, this is something Apple should bring to all their Apple Silicon-based MacBooks. If the M1 Mac mini could do that why not open it up to other Macs?

Update (2024-03-08): Hector Martin:

Apple introduced this capability into the M2 already. It’s why the M2 Mac Mini supports two displays over Type C/Thunderbolt, while the original M1 Mac Mini does not, and requires one display to be on HDMI. The laptops are logically equivalent to a Mac Mini with the HDMI port hardwired to the internal panel.

The only reason this wasn’t enabled on M2 laptops so far is that it requires extra firmware support to disable the internal panel and reconfigure the primary display pipe for external mode. The firmware has lots of special support for the internal panel, so it’s not “just” another screen connected to the system, and there’s a lot of stuff that has to be done properly to make this work as intended.

Now the question is whether Apple will backport this to M2 or not. DCP firmware nominally has an identical interface synced between all platforms, so it should be a common codebase, so it should be easy to do. But they might explicitly lock it out, because I suspect Apple have a habit of not wanting to admit something was unavailable on a given machine due to software/firmware not being ready on time, and they’d rather just pretend its not supported…

[…]

Technical details: the M1 has one primary display controller hardwired to eDP and one external display controller connected to a crossbar that leads to the Type C DP PHYs and the Thunderbolt packetizer. The M2 moves the primary controller to the crossbar too, so it can be repurposed to output via the Type C ports too. M3 is presumably identical. All baseline chips still only have 2 display controllers total, and this is cost driven and not easy to increase without a major die size increase since the display controllers are huge. The change to the crossbar, on the other hand, is essentially “free” and makes perfect sense to do.

MacBook Air 2024

Apple (MacRumors, Hacker News):

With M3, MacBook Air is up to 60 percent faster than the model with the M1 chip and up to 13x faster than the fastest Intel-based MacBook Air. And with a faster and more efficient Neural Engine in M3, MacBook Air continues to be the world’s best consumer laptop for AI. The 13- and 15-inch MacBook Air both feature a strikingly thin and light design, up to 18 hours of battery life, a stunning Liquid Retina display, and new capabilities, including support for up to two external displays and up to 2x faster Wi-Fi than the previous generation. With its durable aluminum unibody enclosure that’s built to last, the new MacBook Air is available in four gorgeous colors: midnight, which features a breakthrough anodization seal to reduce fingerprints; starlight; space gray; and silver.

[…]

MacBook Air with M3 now supports up to two external displays when the laptop lid is closed — perfect for business users, or anyone who requires multiple displays for multitasking across apps or spreading out documents at the same time.

[…]

The 13-inch MacBook Air with M3 starts at $1,099 (U.S.) and $999 (U.S.) for education, and the 15‑inch MacBook Air with M3 starts at $1,299 (U.S.) and $1,199 (U.S.) for education.

[…]

The 13-inch MacBook Air with M2, available in midnight, starlight, silver, and space gray, now starts at $999 (U.S.) and $899 (U.S.) for education.

Dan Moren:

The new 13-inch model comes in three basic configurations: all three feature an 8-core CPU with 4 performance cores and 4 efficiency cores. While the $1099 base configuration includes an 8-core GPU and 256GB of storage, the $1299 and $1499 versions include a 10-core graphics processor and a 512GB SSD—you can get up to 2TB of storage on any model. Just to mix it up a bit, the two lower configurations start with 8GB of memory, compared to the highest model’s 16GB—all are configurable with up to 24GB of memory at max.

Benjamin Mayo (tweet):

The headline feature of being able to connect two displays at once does come with a slight gotcha … it only works when the laptop lid is closed. That means you can now have a MacBook Air desk setup with two external displays, but the laptop must stay in clamshell mode. If the lid is open, the Air screen is on and you can only have one active external display, just like the previous M1 and M2 models.

This is an improvement for the Apple Silicon era of MacBook Air, but still trails what used to be possible on the Intel Airs.

Adam Engst:

It wouldn’t have been surprising if Apple had introduced M3-powered versions of the Mac mini alongside these MacBook Air updates, but new Mac minis can’t be far behind. The Mac Studio and Mac Pro will undoubtedly join the M3 party later this year once Apple completes the M3 Ultra chip.

[…]

Speaking as someone who is still pondering the best Apple silicon replacement for a 27-inch iMac with 5K display and a secondary 27-inch Thunderbolt Display, this improvement extends the choices for a base-level Mac with two matched displays. Previously, I was weighing the differences between a Mac mini and an M3 Pro 14-inch MacBook Pro, both outfitted with a pair of Studio Displays. Now the M3 MacBook Air becomes portable competition for the Mac mini in that comparison. The M3 Pro 14-inch MacBook Pro offers more performance, a third screen, and a built-in keyboard and trackpad, but it costs a lot more and would require me to modify my standing desk to hold it.

[…]

Don’t misunderstand—there’s nothing wrong with Wi-Fi 6E, whose support for the 6 GHz band can be welcome if you’re in an area where the 5 GHz band is too crowded. But you need Wi-Fi 6E-capable gear to take advantage of it, and unless you have to replace an old router right away, it might be better to wait for prices to fall for Wi-Fi 7 gear, which was ratified recently. Plus, faster Wi-Fi won’t improve the Internet experience for most people, given that the bottleneck is usually the Internet connection, not the local Wi-Fi network.

John Gruber:

Apple’s Newsroom post announcing the speed-bumped M3 MacBook Airs has an entire section about “AI”[…]

Steve Troughton-Smith:

In other Apple news, it seems like they’re actively adopting the term ‘AI’ this year, having ignored it previously. The seal now broken, I imagine ‘AI’ will be used heavily in iOS 18’s marketing.

Stephen Hackett:

It sounds like the fingerprint-happy Midnight finish is now getting the same coating the Space Black MacBook Pro gets to help reduce smudges.

[…]

Wi-Fi 6E support is sweet.

Joe Rossignol:

Apple today discontinued the MacBook Air with the M1 chip, which launched in November 2020 as one of the first Apple silicon Macs.

Mr. Macintosh:

Farewell MacBook Air wedge design👋

2008-2024 🪦💐

Previously:

Update (2024-03-05): Jack Brewster:

The 14" M3 MacBook Pro, configured with the same RAM and SSD as the 15" M3 MacBook Air, is only $100 more. 🤔

13" MBA is a bigger difference at $300.

Update (2024-03-06): Benjamin Mayo:

The “Compare MacBook Air with M3 to your current MacBook Air” tool conveniently forgets the M2 Air existed.

I don’t mind that the press releases focus on comparisons to Intel models or whatever, but I wish they’d at least publish the last-generation-ago compare on the site somewhere.

Update (2024-03-07): Collin Donnell:

Apple needs to stop selling Macintosh computers with 8GB of ram. It’s a stingy amount for even relatively light use. Run a few Electron apps for work (which everyone does) and you’re already bumping up against it. Ridiculous.

Apple products are supposed to be a premium experience. There is nothing premium about paying $1100 for a machine with a 256GB SSD and 8GB of ram. That was a stingy amount like eight years ago. Today it just feels gross.

Scott:

Tech reviewers need to start demanding 8GB/256GB review units from Apple, along with the 16/512 units Apple sends out, to compare performance, or refuse to do the reviews.

Doing ‘rave’ reviews on Apple’s most expensive units destroys credibility, as most buyers don’t benefit.

Jason Snell:

My reaction is pretty much the same as the one I had to the MacBook Pro: Apple hasn’t “cured” fingerprints. It is absolutely possible to put fingerprints all over the midnight MacBook Air. I managed to cover it in streaks in a couple of minutes. It might be a little more resistant than the old model, and it might be easier to wipe the surface clean, but after a day’s use, the M2 and M3 midnight Airs in my house looked more or less the same.

It’s worth noting that the MacBook Air’s 1080p FaceTime camera is passable but not amazing—I wish Apple would tuck a nicer camera up there.

[…]

On my home Internet connection, I was able to get 931 Mbps down and 813 MBps up via Wi-Fi, which is more or less the same speed as my wired connection to my router. In the same spot, my M2 Air could only manage 618 up and 700 down. I wouldn’t buy a new laptop just to have faster Wi-Fi—and keep in mind that you need to upgrade your router and possibly your home internet to take advantage of these speeds—but that’s the fastest Wi-Fi connection I’ve ever experienced.

Update (2024-03-11): Tyler Stalman:

I have a theory that 90% of people who by the base MacBook Air are totally happy with 8GB of ram

But 100% of the people who watch YouTube videos about MacBooks hate it

Sam Rowlands:

I have to disagree… Seen too many people I know get really disappointed with new MacBooks. “My old Mac only had 4GB and could do these things without the spinning pizza and memory popups”. What makes ’em ANGRY is having to buy a New Mac to add RAM.

The last one I dealt with only used Safari, Mail, Pages and Keynote. Which worked all fine with a 4GB MacBook.

What people don’t understand is many old Macs had dedicated GPUs, now they lose 1~2 GB of RAM for the GPU. macOS needs more RAM, apps need more RAM…

Snazzy Labs:

The real problem is the ludicrous price to upgrade away from that 8GB.

Tim Hardwick:

The debate over whether 8GB of RAM is sufficient for a Mac has long been a topic of contention. The controversy goes back to at least 2012, when Apple launched the first MacBook Pro with Retina display, which started with 8GB of RAM.

[…]

While the overall result of this integrated SoC architecture is better performance and efficiency, the downside is that Apple's unified memory is fixed at the point of purchase and cannot be upgraded at a later date.

Opting for more unified memory is not cheap either. For instance, going from the base 8GB of unified memory to 16GB or 24GB costs an extra $200 and $400, respectively. Therefore, it's important when buying a new Mac that you choose the right amount for your individual needs.

EU Fines Apple $2 Billion Over Anti-Steering Rules

Foo Yun Chee (European Commission, Hacker News, MacRumors):

Brussels on Monday fined Apple, opens new tab 1.84 billion euros ($2 billion) for thwarting competition from music streaming rivals via restrictions on its App Store, the iPhone maker’s first ever penalty for breaching EU rules.

A basic penalty of 40 million euros was inflated by a huge lump sum included as a deterrent - a first for the European Union’s antitrust authorities.

The European Commission charged Apple last year with preventing Swedish streaming service Spotify, opens new tab and others from informing users of payment options outside its App Store, following a 2019 complaint by Spotify.

Apple:

The primary advocate for this decision — and the biggest beneficiary — is Spotify, a company based in Stockholm, Sweden. Spotify has the largest music streaming app in the world, and has met with the European Commission more than 65 times during this investigation.

Today, Spotify has a 56 percent share of Europe’s music streaming market — more than double their closest competitor’s — and pays Apple nothing for the services that have helped make them one of the most recognizable brands in the world. A large part of their success is due to the App Store, along with all the tools and technology that Spotify uses to build, update, and share their app with Apple users around the world.

[…]

Since the App Store launched more than 15 years ago, Apple has had two simple goals: creating a safe and trusted marketplace for our users, and an incredible business opportunity for developers.

[…]

Today, developers compete on a level playing field on the App Store.

[…]

We’ve even flown our engineers to Stockholm to help Spotify’s teams in person.

It’s not level between developers and certainly not between Spotify and Apple Music.

Isaiah Carew:

It’s difficult to tell whether this is marketing spin, legal CYA, or if there are executives at apple who actually believe this obvious laughable disinformation nonsense.

I used to wonder the same thing when they made statements about the cursed butterfly keyboard.

Benjamin Mayo:

Apple says the EU has found no evidence of consumer harm, and “ignores the reality of a market that is thriving, competitive and growing fast”. In a statement, Spotify welcomed the judgement and its effective implementation.

[…]

The fine is the culmination of an EU investigation that has spanned more than a decade, with Spotify first filing a formal complaint in 2019. The $2bn fine amount is proportionate to Apple’s global revenues and “necessary to achieve deterrence”, according to the EU commission ruling.

[…]

It’s unclear whether the current incarnation of App Store rules are still considered to be in breach of the law, in the eyes of the EU.

Eric Schwarz:

Spotify’s corporate communications tend to come across as “entitled brat” more often than not, including their response not taking the win with class (I’m pretty sure using the word ‘monopoly’ is inaccurate at this point in time, but I don’t see the EC telling Spotify to watch their language).

Apple brags:

Music app developers can even include information about other offers available outside of their app, along with a link directing users to a website to create and manage their account.

This is quite limited and not available to all app types in all regions.

We introduced the reader rule years ago in response to feedback from developers like Spotify.

Nick Heer:

Is less than two years really “years ago”?

Apple seems to be taking credit for announcing that it would add the rule in 2021, but it didn’t actually do so until March 30, 2022.

Peter Steinberger:

Apple playing hurt baby. The App Store helped Spotify so much!! We provide all the API!!1!

Nobody would buy iPhones without support for apps. It’s in their own best interest to provide a dev toolkit and support.

Craig Grannell:

I’m quite taken aback by this latest press release, which appears to infer certain companies are freeloading, deriving their value primarily from Apple’s platform. But without those apps, the iPhone wouldn’t have much value itself – witness Windows Phone.

And, really, Apple arguing it created value for Spotify by way of Apple’s app review team reviewing 421 versions of the Spotify app so said Spotify app can end up on Apple’s own App Store? Really?

Ian Betteridge:

Oh god I’m going to have to a line by line examination of that stupid Apple statement about the European Commission fine, aren’t I?

Jason McFadden:

Apple’s EU statement almost reads as if the App Store was solely responsible for Spotify’s success, largely ignoring how much the Android platform (Google Play Store) contributes as well.

Steve Troughton-Smith:

Apple’s EU fine today shows why the DMA is important, too — it took Spotify eight+ years to challenge a single clause of Apple’s developer agreement, and only for a single category of app (music players).

It shows just how much other developers would have to fight to make these improvements available to every app through individual legal actions, and how infeasible it is.

Previously:

Update (2024-03-06): Dion Almaer:

This just shows how Apple has gotten too big for their boots. A healthy platform recognizes that you are investing for your JOINT users.

Many Spotify users want to use iOS, iOS is better because of Spotify.

Yet Apple shows that they think they are so important that everyone should pay for every part of their investment.

Maximiliano Firtman:

Apple has helped Spotify in the same way electricity and audio companies have helped.

Spotify also helped Apple sell devices and services. They needed Spotify for marketing many products and services as something useful.

Dare Obasanjo:

This is interesting because Apple as a platform provider benefits from having Spotify in the App Store.

Yet, Apple hasn’t acted as if it’s in a symbiotic relationship with developers for years. Instead it acts like a feudal lord and developers are serfs.

Gergely Orosz:

Imagine this logic extended to other platforms:

“Spotify has accessed Windows APIs X trillion times and pays nothing”

“Spotify has been downloaded on Android N billion times and pays nothing.”

“Spotify has been opened in Chrome N billion times and pays nothing.”

Ridiculous.

Kristoffer:

There are plenty of companies that would happily pick up the tab for running their own infrastructure if Apple would let them.

Apple: You HAVE to use our store and it’s super expensive for us ;_;
Industry Fat Cats: We could run our own…
Apple: You ungrateful sob!

Baldur Bjarnason:

Much like roaming, App Stores let private companies subdivide and control the single market to their own financial gain. When much of the digital economy is taking place on phones, tablets, and various other devices that are largely limited to App Stores, this is effectively ceding the single market to a fragmented market that’s entirely under corporate control.

This is against the core operating theory behind the EU. They would be institutionally against this even if the companies in question were European. Many, if not most, of the mobile phone operators affected by the roaming regulations were European. That didn’t earn them a pass on compliance.

[…]

It shouldn’t be a surprise to anybody that the EU is very concerned about preserving the single market in digital services and software. That means they have to do something about Apple’s control over the iOS App Store and exclusion of competing web browsers. From their perspective, they don’t really have a choice.

[…]

To Apple, the App Store is a side line. To the EU, the single market is the foundation of its existence.

Thom Holwerda:

And because Apple and its tech punditry refuse to try and understand the party they are dealing with, they get caught looking like childish idiots every time they open their mouths about it.

Eric Schwarz:

I hope this serves as a wake-up call and Apple starts looking at the regulatory environment in each of its primary markets and how it can be a good citizen instead of letting its hubris rack up fines, ultimately doing even more damage to the company and its shareholders.

David Heinemeier Hansson:

After all the malfeasance and self-preferencing Apple employed to help Apple Music unfairly gain ground against Spotify. It's truly an incredible document. One that I hope marks the sad high water point for Apple's hubris. One we'll point to once this cast of executives currently steering the ship finally depart their positions.

Because I've increasingly come to the conclusion that nothing will fundamentally change at Apple until they have the kind of leadership transition that unlocked so much value at Microsoft. Until they find their Nadella to replace their Ballmer, we should expect more indignant press releases, more threats, more evasion, more malicious compliance.

See also: Dithering, Kosta Eleftheriou.

Update (2024-03-07): BEUC (via Hacker News):

The Commission decided Apple abused its dominant position in the distribution of music streaming apps through its App Store in breach of the EU Treaty antitrust rules’ ban on abuse of monopoly power by preventing consumers from making informed choices in favour of alternative cheaper options. It is an important step that the Commission decided to pursue an ‘exploitative abuse’ case, where a dominant company exploits its market power to impose unfair trading conditions on others to the detriment of consumers.

Mike Masnick (Hacker News):

It’s no secret that I’m often skeptical of antitrust actions, many of which feel like bureaucrats doing a “general punishment” for disliking a successful company, rather than an actual response to abusive, anti-competitive behavior by a large company. However, that does not mean that there is no place for antitrust enforcement. It’s just that it should be in response to actual evidence of companies abusing their market position to make anti-competitive moves in an unfair manner.

And, I’d argue that Apple’s efforts to prevent companies like Spotify from even telling users that they can subscribe directly for less by going to Spotify’s website, seems like… exactly that.

[…]

Apple offers its own competing music service that is a 1-to-1 replacement for Spotify. But, in Apple’s case, it doesn’t have to pay that same 30% fee, since it’s the same company.

And it’s that factor that makes this anti-competitive. It’s using its own market leverage over the app market to force a competing service to pay a much higher fee than it has to pay itself. That seems like a classic situation for antitrust.

Jesse Squires:

This press release has such a massive “bitch and moan” cry baby vibe.

Serious question: What’s the point of publishing something like this? Apple just wants to have the last word?

Seems like a lot of energy was put into this that could be put to better use.

Nick Heer:

Apple’s response to this decision is barely restrained and looks, frankly, terrible for one of the world’s largest and most visible corporations. There is no friendly soft-touch language here, nor is it a zesty spare statement. This is a press release seasoned with piss and vinegar[…]

[…]

Apple is making its familiar claim that iOS software avoids its in-app purchase model is basically freeloading, but it is very happy for any developer’s success. Happy, happy, happy. Real fuckin’ happy. Left unsaid is how much of this infrastructure — hosting, updates, developer tooling, and so on — is required by Apple’s policies to be used by third-party developers.

[…]

This [reader rule] change was not made because of developer requests [as Apple said]. It was agreed to as part of a settlement with authorities in Japan in September 2021.

Casey Liss:

I think the thing I find most offensive about Apple of 2024 is this conviction that Apple not only gifts us developers a platform, but also we will always and forever owe them for it. With zero acknowledgement that their platform is equally reliant on us to be competitive.

Jeff Johnson:

In the past, Apple acknowledged that 3rd party software sells Apple hardware. That was the basis of their relationship with developers from the start with the Apple II and continued with the Macintosh.

After releasing iPhone without 3rd party software, Apple quickly realized they actually needed it and even went so far as to advertise “There’s an app for that” as a selling point for iPhone.

Yet today, Apple talks as if 3rd party software adds no value other than via direct payment extraction.

Dan Moren:

But there’s a scale-tipper there: how companies accomplish getting that bigger slice does matter. And while it might not connect as clearly to the profit and loss statements in black and white, you can see its effect no more clearly than in the fact that Apple published a 1500-word essay on its website about why the EU’s contentions are so wrong. Because the question its existence prompts is: who exactly is the intended audience?

[…]

No, this piece is for the public and the press (who will relay said arguments to the broad swath of the public that hasn’t consumed them firsthand). It’s there to point out all the great things that Apple does and cast it as the one being targeted unfairly by Europe. Apple’s just here making the world a better place! Fundamentally, Apple wants you to be party to its point of view here: that it’s the one being taken advantage of.

But that argument falls a bit flat when you boil the argument down to its essence.

[…]

And nowhere are these anti-steering clauses more questionable than when they intersect with things like digital books and, yes, streaming music—markets in which Apple itself is a competitor. To drag optics into this once again, it certainly doesn’t look good when your competitors in a space are subjected to restrictions because they’re doing business on one of your platforms—restrictions your own competing offering doesn’t have.

Sarah Perez (via Nick Heer):

That’s the overall vibe emerging from Apple’s desperate attempt at clinging onto IAP (in-app purchase) revenue by any means necessary[…]

[…]

Essentially, Apple is now claiming that the platform offering developers distribution is not, in fact, the App Store, but rather the entirety of iOS. And developers should surely have to pay tribute to access iOS and its myriad APIs and frameworks, or so Apple believes. (The fact that developers already do so as part of their Apple Developer annual fee seems to be ignored.)

[…]

IAP is arguably the best way to buy things on iPhone and gives Apple a huge competitive advantage. It could stand up to competition, but Apple is behaving as if it could not.

William O’Connell:

The business model where you sell cheap (ish) hardware and then secretly take a cut out of every transaction made on that device seems inherently anti-consumer to me. Your Netflix, etc. costs more than it otherwise would because the money is going to Roku, Google, Apple and as a user you have no idea what those agreements look like so there's no way to make an informed decision. Apple in particular has fought to keep users in the dark.

Francisco Tolmasky:

It’s even worse than that, since Apple also helps entrench other monopolies. Prime Video is a good example, since they have a sweetheart deal with Apple where they pay way less for IAP. This means that Amazon, a company that needs zero help, gets a huge boost in the AppStore, making it harder to make an startup to compete in the online video space.

Update (2024-03-08): See also: Accidental Tech Podcast, Ryan Jones, Peter Steinberger.

Thoughts on Apple’s DMA Compliance

Juli Clover:

Spotify, Epic Games, Deezer, Paddle, and several other developers and EU associations today sent a joint letter to the European Commission to complain about Apple’s “proposed scheme for compliance” with the Digital Markets Act (DMA).

The 34 companies and associations do not believe Apple’s plans “meet the law’s requirements.” Apple’s changes “disregard both the spirit and letter of the law” and if left unchanged, will “make a mockery of the DMA,” according to the letter. Several specific components of Apple’s plan are highlighted, including the Core Technology Fee, the Notarization process, and the terms that developers must accept.

Juli Clover:

Apple today published a whitepaper [PDF] detailing the privacy and security protections that it is implementing in the European Union to keep users as safe as possible while also complying with the requirements of the Digital Markets Act.

[…]

Apple says that it has received numerous emails from European users and government agencies that are concerned with the risks of alternative app marketplaces, and Apple promises to “work tirelessly” to protect users “to the extent possible under the law.” There is no way for users to opt out of the DMA changes, and Apple suggests that some people may have to use alternative apps against their will. Employers and schools may require an app that is only available through a marketplace, for example.

The e-mails to Tim Cook from concerned users show how successful Apple’s marketing has been.

Steven Sinofsky:

This is precisely what is known and for me it is frustrating that people keep saying security and privacy are not risks or problems. As one example, Apple highlights that Google strongly discourages side loading for “important” accounts on Android. My view: all accounts are important and that is the iPhone value proposition being attacked by the DMA. We have lost choice not gained choice. An ecosystem is only as strong as the weakest link and weakening it on purpose is anti-choice, anti-privacy, anti-security.

For me, it is frustrating that people keep assuming that security and privacy are not risks or problems with Apple’s App Store. Why should we believe that Apple’s intentions are the reality today and its FUD will be the reality tomorrow?

Google is not a neutral observer. It obviously has its own interest in discouraging sideloading—while still trying to make sideloaded apps secure. There does not seem to be an epidemic of Android users being forced to sideload harmful apps.

The “choice” rhetoric only makes sense with his framing that iOS and Android are roughly equivalent except that one is safe and one is open, which I don’t think is the case at all. The space of comparison points is multi-dimensional. The DMA doesn’t change the fact that we get to “choose” from essentially two package deals. It just slightly changes what’s in one of them.

Previously:

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

The DMA will provide a nice empirical refutation of the ridiculous but also ridiculously common claim that consumers buy iPhone because it prevents sideloading.

Let’s see how many EU iPhone owners dump their devices after March 7.

Apple:

Apple’s Non-Confidential Summary of DMA Compliance Report

Steve Troughton-Smith:

Apple’s public DMA compliance report leaves out all the details of their noncompliance, naturally; (there is a private report as part of this submission that may or may not go into greater detail)

Nick Heer:

Apple’s DMA compliance report is set in Arial, in case you are still wondering how things are going.

Friday, March 1, 2024

Should Game Porting Toolkit Be Built-In?

Dan Moren (Mastodon):

What a difference eight months makes. That’s in no small part due to Whisky, an app that wraps both Wine, the tool that translates Windows API calls to their Unix-like equivalents, and Apple’s game porting toolkit into one very friendly interface. That removes pretty much all of the work out of the process, to the point where all I had to do was download Whisky and drag it into my Applications folder. It installed all the necessary under-the-hood software, leaving me with nothing but time on my hands.

So I grabbed the standalone installer for Dark Forces that I’d purchased from GOG.com and simply ran it. Less than ten minutes later, I was running around blasting pixelated stormtroopers. I even connected the Xbox controller I keep in my office and it worked seamlessly, with no additional setup (I was surprised to see that even Dark Forces’s in-game UI knew I was using an Xbox controller and changed to reflect that).

[…]

If Apple really wants to jumpstart gaming on the Mac, it should bake the underlying technologies of the game porting toolkit directly into the system. Make installing and running a PC game as easy as if it were a Mac native title.

[…]

In the end, I’d argue that the potential benefits outweigh the risks: running PC games on the Mac at all is a pretty big coup, to say nothing of them running pretty well. If Apple’s really worried about a bad experience reflecting poorly on its products, it can throw up a splash screen disclaimer—come on, you guys love splash screen disclaimers!

And Apple is fine with Catalyst and iOS apps on Mac. Even games that are actually ported to the Mac don’t really feel platform-native, anyway.

Matt Birchler:

The Steam Deck was my favorite new thing in 2022 and its OLED successor is a beast as well. But the Steam Deck doesn’t run Windows, it runs Linux. Basically none of the games I’ve ever bought run on Linux, so why do I like my Steam Deck so much? Well, just like Moren suggests Apple do, Valve has built a tool called Proton that translates basically any Windows game (or app) to run flawlessly on Linux. And it’s not just for Steam hardware, anyone on Linux can use it!

And don’t think of it as some sort of complex tool for nerds; I’d compare it to using Rosetta 2 on the Mac.

Previously:

Leap Year Bugs

Deborah Pickett:

Kazakhstan, which has not observed daylight saving for 20 years, is turning the clocks back at 0:00 on 1 March 2024, to 23:00 on leap day February 29 2024.

Definitely playing time zones on Hard Mode, Kazakhstan. Thanks for doing some QA on stacked edge cases for us all!

Greg Titus:

OH SURE, let’s do a daylight savings change right at midnight on a leap day. AND combine two time zone regions into one at the same time.

Rebecca Sloane:

today is the day that separates the haves read the calendar / date documentation from the have-nots read the docs but my custom logic works so I’m shipping it

Sami Samhuri:

It’s a great day to check your date math for bugs. Foundation’s calendar is forgiving and you might not want that. Using DateComponents to ask for 29-02-2023 will give you 01-03-2023.

Rachel Kroll:

Only half of the fun of a leap year happens on February 29th.

The rest of it happens in ten months, when a bunch more code finds out that it’s somehow day 366, and promptly flips out. Thus, instead of preparing to party, those people get to spend the day finding out why their device is being stupid all of the sudden.

Scharon Harding (Hacker News):

As reported by numerous international outlets, self-serve pumps in New Zealand were unable to accept card payments due to a problem with the gas pumps’ payment processing software.

See also: Did you encounter any leap year bugs today?.

Previously:

Time 1.0.0 Swift Package

Dave DeLong:

Four years ago I introduced Time 0.9.0. It is appropriate that today, on its first birthday, it finally graduates to 1.0.0!

[…]

All “fixed values” keep track of their calendar, locale, and time zone, enabling you to easily work with calendar values from around the world with the knowledge that their relative calculations are correct.

Beyond this, Time has numerous other capabilities, including:

  • Creating clocks in any combination of calendar, locale, or time zone
  • Creating clocks that move faster or slower than real time to facilitate testing time-dependent code
  • Adopting the RegionalClock protocol to create your own clocks for controlling time
  • Listening for time changes via a Combine publisher or AsyncSequence
  • Retrieving the Range<Instant> for any calendar value
  • Converting calendar values between time zones, locales, and calendars
  • Truncating calendar values to get their containing units
  • Finding differences between calendar values
  • Offsetting (adjusting) calendar values by specific amounts

It’s built on Foundation.

Dave DeLong:

Well, the main reason for the delay is that I was working at Apple, where it’s extremely difficult to get permission to work on open source projects. I left that job about 3 weeks ago, so the past couple of weeks have been me frantically getting the 1.0 version ready for today.

Previously:

How the Swift Compiler Knows That DispatchQueue.main Implies @MainActor

Ole Begemann (Mastodon):

A bit of experimentation reveals that it is in fact a relatively coarse source-code-based check that singles out invocations on DispatchQueue.main, in exactly that spelling.

[…]

Fun fact: since this is a purely syntax-based check, if you define your own type named DispatchQueue, give it a static main property and a function named async that takes a closure, the compiler will apply the same “fix” to it. This is NOT recommended[…]

[…]

The biggest benefit of Swift’s concurrency model over what we had before is that so many things are statically known at compile time. It’s a shame that the compiler knows on which executor a particular line of code will run, but none of the tools seem to be able to show me this. Instead, I’m forced to hunt for @MainActor annotations and hidden attributes in superclasses, protocols, etc. This feels especially problematic during the Swift 5-to-6 transition phase we’re currently in where it’s so easy to misuse concurrency and not get a compiler error (and sometimes not even a warning if you forget to enable strict concurrency checking).

Doug Gregor:

The @MainActor attribute is the general thing, and if DispatchQueue.main returned a MainDispatchQueue type whose async method took a @MainActor closure, we’d be all set. The problem with this specific case is that DispatchQueue.main already has a type (DispatchQueue), and you can’t change that type without affecting source compatibility. So you would need some generalization that tries to carry MainActor-ness along with the value. I suspect that such a generalization would generalize to, basically, just this API, so I didn’t pursue it. Given the choice between breaking source compatibility for DispatchQueue.main (which is everywhere), inventing a bespoke feature for these cases alone, or allow-listing this pattern to help more code “just work”… I think this was rhetorical right call. Maybe we should have also deprecated this pattern over to move to an API that does take a @MainActor closure, so the allow-list would become irrelevant over time.

Holly Borla:

You might be interested in this pitch which replaces @_inheritActorContext with a proper, non-underscored @inheritsIsolation attribute, including replacement in Task.init.

Der Teilweise:

Everything about warnings is completely broken in Xcode.

When I turn on the concurrency warnings in 15.3ß3, I get ~40 warnings that disappear half a second after I click them (and come back when I switch away from the file).

Previously:

Where View.task Gets Its Main-actor Isolation From

Ole Begemann:

SwiftUI’s .task modifier inherits its actor context from the surrounding function. If you call .task inside a view’s body property, the async operation will run on the main actor because View.body is (semi-secretly) annotated with @MainActor. However, if you call .task from a helper property or function that isn’t @MainActor-annotated, the async operation will run in the cooperative thread pool.

[…]

  1. The View protocol annotates its body property with @MainActor. This transfers to all conforming types.

  2. View.task annotates its action parameter with @_inheritActorContext, causing it to adopt the actor context from its use site.

Sadly, none of these annotations are visible in the SwiftUI documentation, making it very difficult to understand what’s going on. […] To really see the declarations the compiler sees, we need to look at SwiftUI’s module interface file.

[…]

When used outside of body, there is no implicit @MainActor annotation, so task will run its operation on the cooperative thread pool by default. (Unless the view contains an @ObservedObject or @StateObject property, which somehow makes the entire view @MainActor. But that’s a different topic.)

Der Teilweise:

Swift concurrency is a mess.

Every software framework that tries to automagically do “the right thing” is doomed to break your code in the most unexpected way.

Add a new member variable and it changes execution of unrelated parts from concurrent to serial. How wild is this?

BJ Homer:

Currently, we can infer @MainActor on an entire type based on the presence of certain property wrappers within that type. TL;DR: I’m making a case that that’s a bad idea, and we should reconsider it if possible.

Previously:

Thursday, February 29, 2024

FineWoven iPhone Cases and Watch Bands

Stephen Robles:

Hands-on with Apple’s new FineWoven iPhone 15 Pro Max case in Taupe and Cypress Green Silicone Case! Apple’s announced at the Wonderlust event that it will no longer make any leather products, with FineWoven replacing the higher end material.

John Gruber:

I spent time in the hands-on area playing with both the new phone cases and watch straps, and I like the FineWoven material. The keynote emphasized only the ethical angles, vis-à-vis leather: carbon impact and animal rights. But for the iPhone cases at least, I think FineWoven is just plain nicer than the old leather ones. I personally like nice leather goods, but I always felt like the leather Apple used to produce iPhone cases was, at best, OK. In particular I don’t think it weathered well, and I have never been a heavy user of iPhone cases, generally carrying mine un-cased. Put all the ethical issues aside and pretend that Apple were still selling leather iPhone cases alongside these new FineWoven ones, and I’d rather buy a FineWoven one. I’m not entirely sold on the FineWoven Apple Watch straps based on my hands-on experience, but at worst, they seem pretty nice.

[…]

Pre-orders for the new cases have already begun arriving, and reactions to the new material are mixed. I’m curious how it’s going to weather over time, especially the watch straps, but my first impression is that this is a quality upgrade over Apple’s leather products, not just an ethical one. I don’t think the FineWoven material is nicer than fine leather, but I do think it’s nicer than the leather iPhone cases Apple made, and perhaps on par with their own previous leather watch straps. And one thing that it’s not is faux leather. As Jony Ive might describe it if he were still at Apple, it’s unapologetically fabric.

Allison Johnson:

Folks, what you’ve heard so far is true. Apple’s new FineWoven iPhone cases and accessories are bad. Like, really bad. I’ve been puzzling over them for the past week, looking at them from different angles. Picking them up, setting them down, petting them. Seven days later, I still can’t make sense of them and have no other choice but to say it out loud: FineWoven is very bad.

[…]

FineWoven is very much not the premium material that leather is. When I popped the MagSafe wallet out of its box, I could clearly see some places where it was already showing wear along the edges. Little bits of lint immediately caught on the fabric, too. And then there’s the fingernail test.

John Gruber:

One fingernail scratched across one of Apple’s leather cases or wallets will leave a permanent mark too. Perhaps it’s the case that such wear looks good on leather but bad on FineWoven.

Judging from my inbox, third-party leather case makers are very excited about Apple’s decision no longer to use it.

Eric Schwarz:

I think Apple needs to be called out for these, not because some folks preferred leather, but because these cases aren’t going to hold up. I ordered one alongside a new iPhone and the case arrived Monday. While I kind of liked the feel of it, just removing it from the box led to a permanent scratch on the inside from the cardboard. I initiated the return process almost immediately, giving that the record of the shortest time I had an Apple product in my possession.

Matt Birchler:

To each their own, but I find this change to be quite un-Apple-like. Usually when Apple makes a change for moral or legal reasons, they come out with something better than before and make it look like an upgrade that just made sense.

Tim Hardwick:

The quality of the iPhone cases in particular seems to have riled some customers, with several MacRumors forum members stating they have returned the cases. “After holding it in person”, said poster inducecurrent, “it feels more like a $10 cheapo case from Amazon rather than Apple-quality, especially at this price point.”

“Received and returned,” said another forum member. “Felt cheap almost like cardboard.” EvanEiga replied: “The case itself is nice IMO, but I’m not sure if the premium cost is worth it. Leather cases felt so much nicer. I am all for mother nature but when it comes to bang for the buck, FineWoven case is just subpar.” Most respondents to a MacRumors forum poll thus far seemed to agree.

Positive customer reactions are just as hard to find on Twitter (X). “I’ve been using Apple’s cases for my phones since the iPhone 7,” said X user @eggbutspam, “but I’ve never returned a case so fast like I did with the FineWoven case I preordered last Friday. FineWoven looks like absolute trash.”

Juli Clover:

Given the criticism of the FineWoven case, teardown site iFixit obtained one of the accessories and decided to take it apart to get a closer look.

Using a digital microscope, iFixit viewed the FineWoven fabric at 52x and 490x magnification, confirming that it is indeed made up of bundles of tightly woven fibers. Each fiber is much smaller than a strand of hair, measuring in at about six microns thick.

Groups of the individual fibers make up threads that are around 150 microns thick, and iFixit says the microtwill material that Apple is using is not too far off from high-end jackets from companies like Patagonia and Arc’teryx.

When the FineWoven fabric is scratched, the fibers don’t break, but the scratch does cause the affected fibers to reflect light irregularly, which means there’s a visual mark. The softness of the material also means that items in the pocket with the case can leave an indentation.

Joe Rossignol:

In a 512 Pixels blog post on Sunday, Relay FM co-founder Stephen Hackett shared a photo of his FineWoven case with a misaligned USB-C port cutout, resulting in the pentalobe screw on the right side of the USB-C port being partially exposed.

[…]

In addition, Parker Ortolani and MacRumors editor Hartley Charlton shared photos of FineWoven cases with visible damage on display at Apple Stores. An anonymous, alleged Apple Store employee mentioned likewise in a post on X, formerly Twitter.

Chance Miller:

Apple’s new FineWoven cases for iPhone 15 are a huge swing and miss. They suck. Apple should remove them from sale and refund everyone who’s already bought one. You could pretty much stop reading the story at this point, but I’ll offer a few pieces of supporting evidence for my claims.

Basic Apple Guy:

The $59 price tag (equal to Apple’s leather cases) was also scorned. Leather is a known quantity, and Apple’s leather cases were generally well regarded for their quality. FineWoven isn’t striking people for being as premium as leather, yet Apple is pricing it as a premium case. It feels something akin to high-grade paper or soft denim. Some people disliked the edges’ feel, which looks plastic but is a modified compressed FineWoven texture.

Basic Apple Guy:

I don’t care for it as much as I did Apple’s leather cases, but I also don’t think it deserved the full force of the vitriol it received. Here’s my argument for why the FineWoven case is fine.

[…]

But here we are, a month since Apple’s FineWoven cases first debuted, and honestly, it has been weeks since I have heard about these cases. A Google Trends graph supports this, with FineWoven searches now being down to a tenth of their peak volume in mid-September. We’ve moved on, some to other cases, others to different topics, but some of us learned that FineWoven wasn’t as bad as the outrage made it seem.

[…]

I have been fine with this case’s durability and cosmetic quality. As okay as I am with the FineWoven case, I still prefer a leather option from an aesthetic, tactile, and perceived value standpoint.

John Gruber:

I actually like Apple’s FineWoven cases. I spent a week vacationing in Florida with my iPhone 15 Pro in one. (I go caseless most of the time, but like using a case while traveling, when I’m more likely to be taking a lot of pictures with my phone. An encased iPhone feels more like a camera to me, with better grippiness.) The dealbreaker for me is not the FineWoven material, which I actually kind of like. Rather, it’s the bottom lip. If Apple’s FineWoven cases had a cutout along the bottom, that would probably be the only case I’d use.

M.G. Siegler:

Look, the world doesn’t need yet another post piling on to the new iPhone 15 leather-replacement cases. But here I am anyway. I just can’t help myself. My initial gut reaction upon receiving the case a couple weeks ago still stands. The “FineWoven” cases are bad. Well, that’s not fair. They’re not bad bad, but they are bad relative to expectations for Apple products. And they’re worse than both the leather cases that preceded them and the silicone variety which not only still exist, but are cheaper. What was Apple thinking here?

Rui Carmo:

As someone who has used leather covers for two iPhones now (both of which are still perfectly usable and actually look better slightly worn out), the prospect of paying for a premium case that stains this easily isn’t appealing at all. I wonder why they didn’t explore actual leather substitutes instead of overcharging for this porous polyester crap.

Zac Hall:

The one exception to the third-party-retailers-don’t-want-to-deal-with-FineWoven rule is the AirTag key ring. Perhaps that’s the finest FineWoven product of them all. The one nice thing about third-party retailers at least selling FineWoven accessories online? The reviews. See those for an idea of why brick-and-mortar stores are steering clear of the replacement for leather cases.

NickyValentine:

So yea this is normal use after two months and this is how it looks?

Aaron Pearce:

My FineWoven case is seemingly staining my Belkin MagSafe charger… awesome.

Aaron Pearce:

Have to wonder with how the response is to Finewoven… did it really benefit the environment? Seemingly a lot of people are just going to buy one, be disappointed then get a second case, probably leather anyway.

I’m now looking to get a Leather case myself. Finewoven is too slippery in my hands. I can see myself dropping my phone even more than I do now.

Joanna Stern:

There it is, everyone. My iPhone 15 Pro Max’s FineWoven case after five months of use. The edges are peeling, the fabric is scratched up like an old CD and it’s browning like a rotten banana. I’ve been waiting for the CDC to show up at my house to declare it a biomedical concern.

[…]

The company does provide advice for cleaning the FineWoven material with laundry detergent and water. It did help but the thing is still scratched and peeling.

John Gruber (Mastodon):

But it really does seem, five months in, that FineWoven is a failure, durability-wise, compared to Apple’s previous leather cases. And I am repulsed by Apple’s FineWoven Apple Watch straps — I wish I’d bought a spare leather Magnetic Link strap while they sold them.

Ben Lovejoy:

The combined results of three social media polls show that 53% describe the case as “a piece of junk,” while only 21% considered it has held up well …

Tim Hardwick:

Despite the continued bad publicity almost six months on from the cases’ debut, Apple still appears unwilling to admit that its leather alternative material is a letdown. But in the court of public opinion, all the evidence suggests this is an open and shut case: FineWoven is just bad.

Fortunately, the iPhone 15 Pro works great caseless.

Previously:

Update (2024-03-01): Christina Warren:

But what gets me legit angry is that this solipsistic decision to eschew leather for a less-durable material means that it’s almost impossible to buy a legit Apple-made leather watch band that isn’t a counterfeit. Because if the phone cases look this bad, the $150 watch bands are going to be worse

[…]

Recycled plastic, but plastic that won’t ever biodegrade nonetheless. That’s why I call it solipsistic.

Chance Miller:

It turns out they are so bad that Amazon had to add a warning label to FineWoven accessories to caution buyers that they are “frequently returned.”

Why Quora Isn’t Useful Anymore

Nitish Pahwa (via Hacker News):

Today’s Quora, however, hardly meshes with those utopian aims. The once-beloved forum is now home to a never-ending avalanche of meaningless, repetitive sludge, filled with bizarre, nonsensical, straight-up hateful, and A.I.–generated entries along with a slurry of all-caps non-questions like “OMG! KING CHARLES SHOCK the WORLD with ROYAL BAN ON PRINCE HARRY AND MEGHAN MARKLE. SAD?”

[…]

First, an anonymous former Quoran told me, the site started “shortening the length of questions.” The professed reason was to increase Quora’s visibility on Google, but that brevity came with a cost: It also made it difficult for users to ask the types of complex questions that could be addressed by specialists, including extremely specific business-related queries of the type Hanks would answer.

[…]

When Quora started putting ads on the site in 2016, Williams and other Top Writers suggested that there be some sort of creator revenue-sharing program, she told me. As a result, higher-ups created “the Quora partner program, which I joined myself,” Williams said. But that “was all about trying to come up with questions that would draw in more views and more people,” she said—not about incentivizing high-quality answers. It was all about adding webpages of individual questions, for SEO purposes.

[…]

To top it all off, after Quora began using A.I. to “generate machine answers on a number of selected question pages,” the site made clear the possibility that human-crafted answers could be used for training A.I.

Tyler Glaiel:

this is actually hilarious. Quora SEO’d themselves to the top of every search result, and is now serving chatGPT answers on their page, so that’s propagating to the answers google gives

[…]

its not fixed if you search “can you melt eggs” instead of “can you melt an egg”

Previously:

Tumblr and WordPress to Sell Users’ Data to Train AI Tools

Samantha Cole (tweet, Slashdot):

Tumblr and WordPress.com are preparing to sell user data to Midjourney and OpenAI, according to a source with internal knowledge about the deals and internal documentation referring to the deals.

[…]

The internal documentation details a messy and controversial process within Tumblr itself. One internal post made by Cyle Gage, a product manager at Tumblr, states that a query made to prepare data for OpenAI and Midjourney compiled a huge number of user posts that it wasn’t supposed to. It is not clear from Gage’s post whether this data has already been sent to OpenAI and Midjourney, or whether Gage was detailing a process for scrubbing the data before it was to be sent.

[…]

  • private posts on public blogs
  • posts on deleted or suspended blogs
  • unanswered asks (normally these are not public until they’re answered)
  • private answers (these only show up to the receiver and are not public)

Jason Koebler:

here’s a podcast where we discuss what’s happening and why

Dare Obasanjo:

Access to training data & GPUs is going to be key in AI wars.

The key question is how startups can compete against big tech since both the ability to pay for access to data or model training costs aren’t cheap. This battle favors incumbents.

Previously:

Update (2024-03-01): Tumblr (via Mike Rockwell):

Proposed regulations around the world, like the European Union’s AI Act, would give individuals more control over whether and how their content is utilized by this emerging technology. We support this right regardless of geographic location, so we’re releasing a toggle to opt out of sharing content from your public blogs with third parties, including AI platforms that use this content for model training. We’re also working with partners to ensure you have as much control as possible regarding what content is used.

Update (2024-03-06): Jason Koebler and Samantha Cole (tweet):

In September 2023, WordPress.com quietly changed the language of a developer page explaining how to access a “Firehose” of roughly a million daily WordPress posts to add that the feeds are “intended for partners like search engines, artificial intelligence (AI) products and market intelligence providers who would like to ingest a real-time stream of new content from a wide spectrum of publishers.” Before then, this page did not note the AI use case.

[…]

The truth is that Automattic has been selling access to this “firehose” of posts for years, for a variety of purposes.

[…]

This firehose appears to be distinct from any direct data sharing deal with Midjourney and OpenAI, in part because the documentation makes clear that data being sold via this firehose is not limited only to posts on WordPress.com, but also can include posts on self-hosted WordPress.org websites that use Jetpack, a wildly popular plugin that millions of sites use and that users are encouraged to install when setting up a WordPress site.

[…]

After this article was published, Automattic told 404 Media that it is “deprecating” the Firehose: “SocialGist is rolling off as a firehose customer this month and the remaining customers are winding down in the coming months[…]

Nick Heer:

I am not particularly surprised to learn that public posts on WordPress.com blogs are part of a massive feed, but I am shocked it is not as obvious that self-hosted WordPress sites with Jetpack installed are automatically opted into it as well.

[…]

The New York Times comprehensively blocks known machine learning crawlers, which you can verify by viewing its robots.txt file; the crawlers we are interested in are listed near the bottom, just above all the sitemaps. That is also true for Tumblr. But when I checked a bunch of WordPress.com sites at random — by searching “site:wordpress.com inurl:2024” — I found much shorter automatically generated robots.txt files, similar to WordPress’ own. I am not sure why I could not find a single WordPress.com blog with the same opt-out signal.

Wednesday, February 28, 2024

Making Friends With AttributeGraph

Saagar Jha:

If you’ve used SwiftUI for long enough, you’ve probably noticed that the public Swift APIs it provides are really only half the story. Normally inconspicuous unless something goes exceedingly wrong, the private framework called AttributeGraph tracks almost every single aspect of your app from behind the scenes to make decisions on when things need to be updated. It would not be much of an exaggeration to suggest that this C++ library is actually what runs the show, with SwiftUI just being a thin veneer on top to draw some platform-appropriate controls and provide a stable interface to program against. True to its name, AttributeGraph provides the foundation of what a declarative UI framework needs: a graph of attributes that tracks data dependencies.

Mastering how these dependencies work is crucial to writing advanced SwiftUI code. Unfortunately, being a private implementation detail of a closed-source framework means that searching for AttributeGraph online usually only yields results from people desperate for help with their crashes.

[…]

Shortly before a view’s body is computed, it goes through and sets the _location on all relevant State variables, so that they are ready for dependency tracking. Typically, a property wrapper does not have the ability to grab context from outside of itself (for example, by looking up who owns it). SwiftUI can use reflection much like we did to discover State members that it needs to install _location on, sidestepping this issue. To discover State in nested types, it needs a little bit of help: this is why we had to add a DynamicProperty conformance earlier. In that case, it uses reflection to look for DynamicProperty members instead and then does a search for State inside of those.

Previously:

Apple Cancels Car Project

Juli Clover (Mark Gurman, Hacker News, Slashdot):

Apple has canceled all plans to release an autonomous, electric vehicle, reports Bloomberg. Apple has been working on an Apple Car for more than a decade and invested millions of dollars into development before deciding it was not a viable project.

Apple’s Chief Operating Officer Jeff Williams today told approximately 2,000 employees working on the Apple Car that the project was canceled, and the information reportedly came as a surprise.

Apple surely spent billions on it, not millions.

John Gruber (Mastodon):

Kevin Lynch took over leadership of Project Titan back in September 2021, but remained in charge of Apple Watch, too. In hindsight that makes me wonder if Lynch’s mission wasn’t to ship a car, but more to assess what technologies the group had created could be used to create other products. Whatever progress Apple has made with “autonomy” ought to be applicable to robots, for example. Making intelligent robots feels more like something Apple should be doing than making cars.

Hartley Charlton:

Founder and chairman Lei Jun today posted on Weibo that he was “very shocked” by the news of Apple’s decision to cancel its EV. He added that he “knows deeply how difficult it is to make cars,” but Xiaomi has made an “unshakeable strategic choice” to move into EVs. He Xiaopeng, chairman of Chinese EV maker Xpeng, expressed similar disbelief that Apple is abandoning its car plans.

Adam Engst:

Perhaps the most interesting part of Gurman’s piece is the claim that many of the Project Titan employees will be shifted to Apple’s artificial intelligence division to focus on generative AI projects. Siri could use the help.

Mr. Macintosh:

The rumored Apple Car was one of most embarrassing projects in Apple’s history.

NO ONE WANTED AN APPLE CAR!!!!!

Imagine if all the wasted billions of dollars was instead put into the Siri team!🤦‍♂️

Benjamin Mayo:

Self-driving or nothing has been the Apple Car mission since the beginning. It seems they finally resigned themselves to the former not being possible.

Kontra (Mastodon):

Apple’s problem with Titan was not complicated, almost singular: like everyone else, they found out L5 was/is not achievable and there really was no point introducing a car without it in mid-2020s.

Eric Schwarz:

Over the last couple of years, it has started to feel like Apple is spread too thin at times and while the employees working on the car won’t jump over to go fix That Bug You Hate™ in iOS now, I think it removes a notable distraction for the company.

Demetrio:

They couldn’t afford to develop a bog standard calculator app, they were busy not making a car.

Jeff Johnson:

But I so wanted a car that demanded 30% of every shopping trip and refused to travel to destinations unapproved by the manufacturer.

Joanna Stern:

I was actually really looking forward to what they were going to do in this space—and flipping my car over to charge it.

Whole Mars Catalog:

It pains me to announce that I was fired from Apple today.

I was the engineer responsible for designing the charge port at the bottom of the Apple car.

Brandon Butch:

Was looking forward to the Apple iLift for making charging easier

Tony Fadell:

Apple doesn’t have any real technology or UI advantage in autos (& TVs).

That’s why Apple doesn’t make TVs (only AppleTV) & it’s same reason it shouldn’t make typical cars/EVs (iPhones + CarPlay is fine enough)

Florian Mueller:

Instead of making a car, Apple will just leverage its platform power to tax car makers and their customers.

Previously:

Update (2024-03-01): Juli Clover:

Apple spent more than $10 billion working on the Apple Car over the last decade, according to a report from The New York Times that details the issues the project faced during development. Apple first launched the project in 2014 and let it flounder for more than a decade before calling it off earlier this week.

Money was spent on research and development, along with the thousands of Apple engineers and car experts that worked on the project. Some employees within Apple are said to have suspected that the endeavor was likely to fail from the beginning, and they referred to the car as “the Titanic disaster” instead of its “Project Titan” codename.

Brian X. Chen and Tripp Mickle (Hacker News):

It had just finished the Apple Watch, and many engineers were restless to begin work on something new. Tim Cook, Apple’s chief executive, approved the project in part to prevent an exodus of engineers to Tesla.

[…]

Despite having a vote of confidence from Apple’s chief executive, members of the team knew they were working against harsh realities, according to the six employees familiar with the project. If it ever came to market, an Apple car was likely to cost at least $100,000 and still generate razor-thin profit compared with smartphones and earbuds. It would also arrive years after Tesla had dominated the market.

[…]

The group developed an array of new technologies, including a windshield that could display turn-by-turn directions and a sunroof that would feature special polymer to reduce heat from the sun.

[…]

One day, in the fall of 2015, Mr. Ive and Mr. Cook met at the project’s headquarters in Sunnyvale, Calif., for a demonstration of how the car might work. The two men sank into the seats of a cabinlike interior. Outside, a voice actor read from a script of what Siri would say as the men zoomed down the road in the imaginary car.

The article has a “struggled to develop new products in the years since Steve Jobs’s death” angle, which I disagree with with.

Juli Clover:

The Apple Car is one of the longest running rumors that we’ve been reporting on without a product materializing, so we thought we’d take a look back at some of the key moments in the Apple Car ‘s history to provide some insight into what went wrong.

dagw:

I knew a few people who worked for one the traditional car manufacturers back when Apple made the first big car announcement and apparently 'everybody' there sent in their CVs to Apple. The only people who heard back were the people from either design departments or who worked with electronics or software. People who actually work with engineering and building the actual cars, as in chassis, suspension, engines and other stuff made out of metal heard nothing. That was when it became clear to me that Apple had no real interest in ever actually building a car.

Bloomberg (2017, via Kontra):

Cook Says Apple Is Focusing on Autonomous Car Systems

Nick Heer:

Much reporting during its development was similarly bizarre due to the nature of the project. Instead of leaks from within the technology industry, sources were found in auto manufacturing. Public records requests were used by reporters at the Guardian, IEEE Spectrum, and Business Insider — among others — to get a peek at its development in a way that is not possible for most of Apple’s projects. I think the unusual nature of it has broken some brains, though, and we can see that in coverage of its apparent cancellation.

Steve Troughton-Smith:

The Apple Car project is something the company can come back to in the future; right now, there is an AI sea change happening that could obviate whole categories of technology, and it seems like it's worth playing that out before trying to return to autonomous vehicles. The artificial driver of the future may be sparked by advancements completely out of left field that don't come directly from traditional or legacy machine learning

See also: Dithering.

Update (2024-03-07): Mark Gurman and Drake Bennett (MacRumors, Hacker News):

Most important, the Bread Loaf would have what’s known in the industry as Level 5 autonomy, driving entirely on its own using a revolutionary onboard computer, a new operating system and cloud software developed in-house. There would be no steering wheel and no pedals, just a video-game-style controller or iPhone app for driving at low speed as a backup. Alternately, if the car found itself in a situation that it was unable to navigate, passengers would phone in to an Apple command center and ask to be driven remotely.

[…]

Field, who’d been hired away from Tesla Inc. to oversee the project, proposed scaling back the self-driving goals to Level 3, which requires a human driver to be ready to take over at a moment’s notice, not watching TV or FaceTiming in a backward-facing seat. But Field’s bosses wanted Level 5.

[…]

The front and the back were identical, and the only windows were on the sides, a design choice with potentially dire consequences in the event that a human needed to do any driving.

[…]

Within the company, it was difficult to find spare engineering talent, with attention focused on preparing for the upcoming Apple Watch release and, later, the iPhone X, but Riccio managed nonetheless to poach several dozen engineers from other projects. […] The infighting began almost immediately. Maestri, the CFO, remained a skeptic, as did Craig Federighi, Apple’s software engineering chief, who had to donate personnel to what he considered a vanity project.

[…]

For Field, Mansfield and others on the team, Cook’s indecision was frustrating. “If Bob or Doug ever had a reasonable set of objectives, they could have shipped a car,” says someone who was deeply involved in the project. “They’d ask to take the next step, and Tim would frequently say, ‘Get me more data, and let me think about it.’”

Jason Snell:

Sounds like a lot of people inside Apple knew this project was a disaster, and that Tim Cook failed to provide a vision and decisive leadership. Though I do appreciate the internal argument about why to start the project in the first place: “Would you rather compete against Samsung or General Motors?”

Update (2024-03-11): Marcin Krzyzanowski:

7 years ago Apple contacted me because somebody noticed my past experience work at Nissan Automotive 🚙. They didn’t want to say the exact team they’re recruiting to. After 7 months long interview process (rly, 13 rounds) I’ve got ghosted eventually.

Today I think that was Apple Car

Mark Gurman:

The Apple car’s circa-2020 design resembled the Canoo Lifestyle Vehicle — a futuristic van with rounded edges — but it had dark black windows with an adjustable tint. There was all-glass sunroof, a pure white exterior and whitewall tires with a black center. The front and back were identical, so it would always look like you were driving forward. It looked like no other mass-produced vehicle — and was optimized for full, Level 5 self-driving.

[…]

The car’s last major design — still a variation on the original Bread Loaf idea — traded in a sliding van door for gull-wing doors like on a Tesla Model X. Even more so than with prior iterations, it wasn’t designed for a traditional driver: The vehicle featured a front and back with such dramatic pinched curves that there was little room for front or rear windows. When Apple ultimately decided to switch from Level 5 autonomy to something around Level 2, the company needed to add back a steering wheel and pedals, as well as front and back windows. By the end, the car had two seats facing forward that could swivel.

FastScripts 3.3

Red Sweater:

This update includes a major new premium scripting addition, facilitating mouse automation by providing a variety of new scripting commands, including a powerhouse for synthesizing clicks and drags[…]

[…]

When automating mouse events, the clicks, drags, and releases can happen so fast that it confuses or overwhelms some interface components. For this reason, FastScripts imposes a short delay between the generation and delivery of each individual event that makes up a requested automation command. I’m calling this delay the event cadence, and it can be overridden with a longer or shorter cadence by supplying a parameter to the click mouse command, or for the duration of a whole script by setting this property[…]

[…]

Finally, there are two new properties for querying the state of the mouse and keyboard:

  • current mouse position
  • current keyboard modifiers

See also: PreFab Player.

Previously:

Tuesday, February 27, 2024

The “everything” NPM Package

Feross Aboukhadijeh (Hacker News):

Just when we thought we’d seen it all, an npm user named PatrickJS, aka gdi2290, threw us a curveball. He (along with a group of contributors) kicked off the year with a bang, launching a troll campaign that uploaded an npm package aptly named everything. This package, true to its name, depends on every other public npm package, creating millions of transitive dependencies.

[…]

The “everything” package, with its 5 sub-packages and thousands of dependencies, has essentially locked down the ability for authors to unpublish their packages. This situation is due to npm’s policy shift following the infamous “left-pad” incident in 2016, where a popular package left-pad was removed, grinding development to a halt across much of the developer world. In response, npm tightened its rules around unpublishing, specifically preventing the unpublishing of any package that is used by another package.

Ironically, this policy trapped PatrickJS in his own web. Upon realizing the impact of his prank, he attempted to remove the everything package but was unable to do so. He reached out to the npm support team for help, but the damage was done.

Previously:

Reddit AI Training Data and IPO

Ben Lovejoy:

It’s being reported that a deal has been struck to allow an unnamed large AI company to use Reddit user content for training purposes …

The deal is said to be worth around $60M per year, and comes at a time when the company is seeking to maximize its value in the run-up to an IPO.

Emma Roth:

Google is getting AI training data from Reddit as part of a new partnership between the two companies. In an update on Thursday, Reddit announced it will start providing Google “more efficient ways to train models.”

[…]

The partnership will give Reddit access to Vertex AI as well, Google’s AI-powered service that’s supposed to help companies improve their search results. Reddit says the change doesn’t affect the company’s data API terms, which prevent developers or companies from accessing it for commercial purposes without approval.

Dare Obasanjo:

Called it. Only question is whether the deal is exclusive or if there’s an option to make it exclusive since $60M is relatively low for exclusivity.

Jonathan Vanian:

Social media company Reddit filed its IPO prospectus with the Securities and Exchange Commission on Thursday after a yearslong run-up. The company plans to trade on the New York Stock Exchange under the ticker symbol “RDDT.”

[…]

Reddit said it had $804 million in annual sales for 2023, up 20% from the $666.7 million it brought in the previous year, according to the filing. The social networking company’s core business is reliant on online advertising sales stemming from its website and mobile app.

Via Dare Obasanjo:

It was valued at $10B in its last funding round and Sam Altman owns an 8.7% stake.

A few surprises in Reddit’s financials are that it’s still unprofitable in its nineteenth year of existence and if it does list at $5B as rumored then it will be a down round relative to its series F funding round.

Emma Roth (via Matthew Cassinelli):

In an unusual twist, Reddit is also giving an unspecified number of its top users, including moderators and those with high karma scores, the chance to buy shares in its IPO. That’s a privilege usually reserved for professional investors who want to buy stock at a theoretically lower price before everyone else gets to purchase it on the public market.

Previously:

Update (2024-03-11): Amy Or, Priya Anand, and Ryan Gould (via Hacker News):

Reddit Inc. disclosed further details of what is set to be one of the year’s biggest initial public offerings, with the company and some existing shareholders seeking to raise as much as $748 million.

Slow Swift Macro Compilation

Vatsal Manot:

Folks, if you’re also frustrated with the state of Swift Macros (w.r.t. compile times), please engage on the forums thread here.

I can’t think of any other language where such a fundamental feature is dependent on a heavy source package that needs to be recompiled every clean build.

John Bushnell:

Prior to adding macros one xcframework takes 257.7 seconds (4.3 minutes) to build. After adding macros it takes 2004.5 seconds (33.4 minutes). This is a 7.76x increase. This is with one macro implemented in one location in code, so it’s not related to how many times the macro is used.

This speed decrease makes the macros support currently unusable for us.

[…]

There’s also a secondary issue, which because of the speed issue I don’t really need to take it further at this point, but it’s that tests do not support these macros for some reason when run from the command line.

Wade Tregaskis:

Same story as everyone else, in a nutshell - I saw some nice-looking package (swift-foundation-extensions, in this instance), added it to my project, and then saw my builds suddenly taking way longer. Then noticed the dreaded “SwiftSyntax” named in the build logs.

What was a clean build time of about fifteen seconds became several minutes.

(“how often do you do clean builds, though, really?” - ugh, a lot. I’m using Xcode and it’s got some bugs regarding detecting changed sources, not to mention its infamous bugginess regarding stale compiler errors)

John McCall:

The LSG is aware that there are build-system issues causing a lot of pain for macro adopters and their downstreams. From an abstract language perspective, I don’t think any of those problems are particularly challenging to the point of requiring an overall design change to macros; the project just needs to put in the work to fix them. I can’t tell you when that will happen, though, which I know is not a satisfying answer.

Vatsal Manot:

Be aware of the fact that you’re adding ~38,000 LoC of Swift source code to your project. This cost is forwarded to anyone consuming your Swift packages.

Be aware of the fact that SPM currently fetches the entire git history of the SwiftSyntax repo. This is a separate but, in my view, not unrelated issue as it directly factors into the cost of adopting macros.

Just adding SwiftSyntax can potentially add up to 12 minutes to your build time on Xcode Cloud as noted by @Ignacio_Soto.

It’s peculiar enough that a core language feature is tied to a still-maturing package manager riddled with performance/build-systems issues, but what I find extremely disappointing is that these issues aren’t mentioned anywhere in any official documentation/release notes.

Previously:

Update (2024-02-28): Martin Pilkington:

A clean build of my CoppiceCore framework & tests now takes 2m36s, only about 10s of which is my code

Apple really needs to switch to Macros linking against a pre-build version included in Swift distributions if they want Macros to be a feature many people use

Update (2024-03-01): alloca:

I feel like I’ve seen clean build times increase by maybe 30-60 seconds on my M1 Pro when adding macros. Am I missing something? How are people getting several minute increases?

Stephen Celis (via Helge Heß):

Introducing SwiftSyntax to a project immediately incurs an additional 20 second debug build cost to a project, which may not seem like much, but that’s an extra minute for every 3 cleans. Things get much slower when building for release with whole module optimization: over 4 minutes just for SwiftSyntax. This issue from January highlights the problem, but there isn’t a lot of discussion around how it might be addressed.

[…]

Beyond build times, SwiftSyntax is a complex project to depend on, and it’s unclear how to version a project that depends on it. I started this discussion a few days ago and was hoping for guidance there, but I’ll restate the problem here. Because SwiftSyntax is a moving target and versioned alongside Swift releases, how can a library adopt macros and be compatible with multiple Swift versions at the same time?

Update (2024-03-11): Vatsal Manot:

Friendly reminder that there’s still no ETA on when the massive compilation time issue for Swift Macros will be fixed.

I’d personally recommend holding off on adoption until there’s an official update from the team on this.

Saagar Jha:

As I watch complaints mount about swift-syntax compile times, I wonder if Apple remembers the time when them ignoring the concerns of impatient developers led to the infection of hundreds of millions of iOS devices in one of the most successful supply-chain backdoor attacks ever

Nobody’s going to do the whole Reflections on Trusting Trust thing but the longer it takes for your project to build the easier it gets for me to offer you my precompiled binaries instead. And interestingly enough these binaries happen to have direct control of code generation…

Monday, February 26, 2024

Avast Fined for Selling Browsing Data

FTC (via Lina Khan):

The Federal Trade Commission will require software provider Avast to pay $16.5 million and prohibit the company from selling or licensing any web browsing data for advertising purposes to settle charges that the company and its subsidiaries sold such information to third parties after promising that its products would protect consumers from online tracking.

In its complaint, the FTC says that Avast Limited, based in the United Kingdom, through its Czech subsidiary, unfairly collected consumers’ browsing information through the company’s browser extensions and antivirus software, stored it indefinitely, and sold it without adequate notice and without consumer consent. The FTC also charges that Avast deceived users by claiming that the software would protect consumers’ privacy by blocking third party tracking, but failed to adequately inform consumers that it would sell their detailed, re-identifiable browsing data. The FTC alleged Avast sold that data to more than 100 third parties through its subsidiary, Jumpshot.

Emma Roth:

A joint investigation from Motherboard and PCMag first brought attention to Avast’s data privacy practices in 2020. Avast shut down its data harvesting arm, called Jumpshot, shortly after the reports emerged. Although Avast said it removed identifying information before selling user data, the FTC found it “failed to sufficiently anonymize consumers’ browsing information.” Instead, it sold data with unique identifiers for each browser, revealing websites visited, timestamps, the type of device and browser used, and location.

[…]

The FTC has been cracking down on poor data privacy practices in recent weeks. In January, the FTC reached a settlement with Outlogic (formerly X-Mode Social) that prevents the data broker from selling information that can be used to track users’ locations. It banned InMarket from selling precise user locations as well.

Previously:

Update (2024-02-28): Nick Heer:

What people with Big Business Brains often like to argue about the unethical but wildly successful ad tech industry is that it is not as bad as it looks because your individual data does not have any real use or value. Ad tech vendors would not bother retaining such granular details because it is beneficial, they say, only in a more aggregated and generalized form.

The problem with this argument is that it keeps getting blown up by their demonstrable behaviour.

[…]

Avast paid a $16.5 million penalty and said it would not use any of the data it collected “for advertising purposes”. The caveat makes this settlement feel a little incomplete to me.

Apple Arcade’s Uncertain Future

Neil Long (2023, Slashdot, MacDailyNews):

In the 15 years since it launched the App Store, Apple has proved again and again that it cares very little about games – though it is happy to make billions from them. I should know: I was an App Store games editor for seven years.

[…]

The woefully understaffed team of app reviewers couldn’t handle the volume of games coming through – and seemingly still can’t today.

[…]

Meanwhile, some brazen clone sails through the app review process no sweat. It’s been happening for years. In 2016, a hilariously fake “Minecraft 2” was approved for sale by the App Review team and made it all the way into the Top 10 chart before it was pulled from sale. Brazen Pokémon rip-offs make it through surprisingly often too.

[…]

So perhaps, once those huge App Store profits are under genuine threat, we’ll see Apple start to take its role as a mobile game platform more seriously. It has the excellent Apple Arcade subscription service, sure, but it’ll take more than that to help rescue mobile gaming’s reputation.

Neil Long (MacRumors, AppleInsider, The Verge, Hacker News):

Multiple mobilegamer.biz sources have voiced their concern for Apple Arcade’s future, citing a glut of cancelled projects and ever-declining developer payouts.

[…]

Payouts for titles on Apple Arcade have been falling for years, our sources said, and following a shift in strategy very few original games are being greenlit unless they are attached to a big family-friendly IP.

Apple is often aloof or difficult to work with too – though as one developer noted, “that’s nothing new”. While some described their relationship with Apple as very positive (and lucrative), others said that Apple is “famously vindictive” and “spiteful” in its dealings with developers – especially once the tech giant discovers that you have signed a deal with Netflix’s rival service.

[…]

One studio boss told us that after months of glowing feedback on one particular game, the Arcade team suddenly withdrew its interest in the title, citing a change in strategy. When the developer asked for feedback and offered to reduce the budget and re-tool the game to better fit Apple’s needs, the Arcade team simply stopped responding to their emails.

Previously:

Update (2024-03-01): John Voorhees (Mastodon):

The details of mobilegamer.biz’s story that I think are most interesting are the ones about the business terms Apple has struck with game developers. Those are details that developers seem to be contractually prohibited from talking about. I know because I’ve asked developers about how it works before. However, according to mobilegamer.biz, Arcade developers are paid an up-front fee and from a ‘bonus pool’ based on something called ‘qualifying sessions’[…]

Brendon Bigley:

it is SO wild to me that apple has such strong leverage here that they can get developers to commit to payout deals that are this opaque

Jack Wellborn:

My sense on Arcade is that while it does address the casinofication of iOS games, it doesn’t really address the fundamental problem -- that mobile games aren’t considered worth paying for. My thinking is that Apple should create a whole new category just for premium games at premium prices, regardless of whether its pay once or a subscription fee.

Craig Grannell:

Sad but unsurprising given that Apple doesn’t have gaming baked into its DNA and at some level thinks they are unserious (unless wheeling a AAA title out for a tech demo).

Brendon Bigley (via John Voorhees):

Arcade was phenomenal in its launch window, with titles like Sayonara Wild Hearts and Fantasian immediately hitting all-timer status in my eyes, but I’ve noticed a waning faith in the player end of things as much as Long also outlines the developer discontent. Take this post on Reddit, for example, filled with subscribers lamenting the loss of Cozy Grove, a game notably making its way to Netflix Games and whose lineup includes a treasure trove of “best of” indie titles from the past decade. This internal strategy pivot towards more family-friendly games feels like a clear play for the iPad-kid market, but how valuable that ends up being long-term is unclear and in the short-term is clearly hurting both player and developer relations.

[…]

I think it would be an unfortunate pivot, as Arcade has brought me a huge amount of joy via inventive titles from smaller teams, but you can practically see the boardroom conversations that would lead to such a decision.

Eric Schwarz:

While Arcade has plenty of excellent titles, it never clicked with me to keep it beyond any trial (I have a handful of purchased favorite iOS games and even those don’t get played that often). It reminds me a lot of Apple News, a great idea on paper, but the execution has been lacking.

[…]

Unfortunately, unless they continue to add excellent games through cultivating great developer relationships, everyone doing worthwhile stuff will walk away, leaving buggy or lazy ports, along with derivative franchise releases as the main options on the service.

Steve Troughton-Smith:

Apple is optimizing its developer base for ‘people who only care about money’ and I’m sure that’s not going to come back to bite them at all 😛

Update (2024-03-05): Craig Grannell (Mastodon):

[While] I thought it was a weird decision, I’m nonetheless glad it exists. Because it’s objectively good. Sure, people who claim the only ‘real games’ are AAA (and who even attempt to dismiss the Switch, let alone mobiles) won’t give it a chance. But there are loads of fun titles, even if much of the service’s strength now lies in ‘+’ fare (existing App Store releases minus ads/IAP) rather than exclusives. It’s superb for kids who like mobile games (again: no ads; no IAP). And there are still interesting new things to play. (I mean, Arcade added a pinball game at one point. And pinball is pretty niche!)

For me, the main error Apple Arcade made was during its launch. It offered too much, too soon. It was simultaneously overwhelming and somehow yet made people think they could blaze through everything and instantly demand more. And more didn’t come for a long while, and so users felt they weren’t getting good value, even though Arcade at the time cost only five bucks per month.