Apple App Store: Difference between revisions

Kirb (talk | contribs)
Epic Games, clearer wording
Emayeah (talk | contribs)
m Flatpak just makes code distribution easier by bundling dependencies. Docker is a better example of sandboxing.
 
(6 intermediate revisions by 3 users not shown)
Line 40: Line 40:
{{hatnote|See also: [[wikipedia:Epic Games v. Apple|Epic Games v. Apple]] and [[wikipedia:Epic Games v. Google|Epic Games v. Google]]}}
{{hatnote|See also: [[wikipedia:Epic Games v. Apple|Epic Games v. Apple]] and [[wikipedia:Epic Games v. Google|Epic Games v. Google]]}}


[[Epic Games]] is a video game developer and publisher, known for games such as [[Fortnite]] and [[Unreal Tournament]], the [[Unreal Engine]], and the [[Epic Games Store]].
[[Epic Games, Inc.]] is a video game developer and publisher, known for games such as [[Fortnite]] and [[Unreal Tournament]], the [[Unreal Engine]], and the [[Epic Games Store]].


In 2018, Epic Games launched Fortnite on the iOS and Android platforms. The company made the unusual decision to not release the app on the [[Google Play Store]] - rather, it was made available as a standalone [[wikipedia:apk (file format)|Android app package]] file (.apk), which must be installed by following a series of manual steps.<ref>{{Cite web |last=Statt |first=Nick |date=3 Aug 2018 |title=Fortnite for Android will ditch Google Play Store for Epic’s website |url=https://www.theverge.com/2018/8/3/17645982/epic-games-fortnite-android-version-bypass-google-play-store |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref> The app was also released on the [[Samsung]] [[Samsung Galaxy Store|Galaxy Store]]. Google offered a $147 million deal for Epic Games to release Fortnite on the Play Store, which the company declined.<ref>{{Cite web |last=Robertson |first=Adi |date=9 Nov 2023 |title=Google offered Epic $147 million to launch Fortnite on the Play Store |url=https://www.theverge.com/2023/11/8/23953262/google-epic-fortnite-play-store-investment-antitrust-trial |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref>
In 2018, Epic Games launched Fortnite on the iOS and Android platforms. The company made the unusual decision to not release the app on the [[Google Play Store]] - rather, it was made available as a standalone [[wikipedia:apk (file format)|Android app package]] file (.apk), which must be installed by following a series of manual steps.<ref>{{Cite web |last=Statt |first=Nick |date=3 Aug 2018 |title=Fortnite for Android will ditch Google Play Store for Epic’s website |url=https://www.theverge.com/2018/8/3/17645982/epic-games-fortnite-android-version-bypass-google-play-store |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref> The app was also released on the [[Samsung]] [[Samsung Galaxy Store|Galaxy Store]]. Google offered a $147 million deal for Epic Games to release Fortnite on the Play Store, which the company declined.<ref>{{Cite web |last=Robertson |first=Adi |date=9 Nov 2023 |title=Google offered Epic $147 million to launch Fortnite on the Play Store |url=https://www.theverge.com/2023/11/8/23953262/google-epic-fortnite-play-store-investment-antitrust-trial |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref>
Line 52: Line 52:
On 13 August 2020, Epic Games launched a campaign against both Apple and Google's app store business practices. The company released app updates on both platforms, introducing a method for purchasing V-Bucks in-game currency at a 20% discount by directly transacting with Epic Games, against the developer rules of both platforms. The platforms responded by removing the game from their storefronts. Epic Games then filed civil antitrust lawsuits against both companies in the Northern District of California.<ref>{{Cite web |last=Statt |first=Nick |date=14 Aug 2020 |title=Epic Games is suing Apple |url=https://www.theverge.com/2020/8/13/21367963/epic-fortnite-legal-complaint-apple-ios-app-store-removal-injunctive-relief |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref> The campaign, branded "Free Fortnite", was later extended with lawsuits and complaints in Australia,<ref>{{Cite web |date=18 Nov 2020 |title=Epic Games extends its fight against Apple to Australia |url=https://www.epicgames.com/site/en-US/freefortnite-australia-press-release |url-status=live |access-date=16 Mar 2025 |website=[[Epic Games]]}}</ref>, the European Union,<ref>{{Cite web |date=17 Feb 2021 |title=Epic Game Files EU Antitrust Complaint Against Apple |url=https://www.epicgames.com/site/en-US/news/epic-games-files-eu-antitrust-complaint-against-apple |url-status=live |access-date=16 Mar 2025 |website=[[Epic Games]]}}</ref> and the United Kingdom.<ref>{{Cite web |date=30 Mar 2021 |title=Epic Games files complaint to support CMA Apple investigation |url=https://www.epicgames.com/site/en-US/news/epic-games-files-complaint-to-support-cma-apple-investigation |url-status=live |access-date=16 Mar 2025 |website=[[Epic Games]]}}</ref>
On 13 August 2020, Epic Games launched a campaign against both Apple and Google's app store business practices. The company released app updates on both platforms, introducing a method for purchasing V-Bucks in-game currency at a 20% discount by directly transacting with Epic Games, against the developer rules of both platforms. The platforms responded by removing the game from their storefronts. Epic Games then filed civil antitrust lawsuits against both companies in the Northern District of California.<ref>{{Cite web |last=Statt |first=Nick |date=14 Aug 2020 |title=Epic Games is suing Apple |url=https://www.theverge.com/2020/8/13/21367963/epic-fortnite-legal-complaint-apple-ios-app-store-removal-injunctive-relief |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref> The campaign, branded "Free Fortnite", was later extended with lawsuits and complaints in Australia,<ref>{{Cite web |date=18 Nov 2020 |title=Epic Games extends its fight against Apple to Australia |url=https://www.epicgames.com/site/en-US/freefortnite-australia-press-release |url-status=live |access-date=16 Mar 2025 |website=[[Epic Games]]}}</ref>, the European Union,<ref>{{Cite web |date=17 Feb 2021 |title=Epic Game Files EU Antitrust Complaint Against Apple |url=https://www.epicgames.com/site/en-US/news/epic-games-files-eu-antitrust-complaint-against-apple |url-status=live |access-date=16 Mar 2025 |website=[[Epic Games]]}}</ref> and the United Kingdom.<ref>{{Cite web |date=30 Mar 2021 |title=Epic Games files complaint to support CMA Apple investigation |url=https://www.epicgames.com/site/en-US/news/epic-games-files-complaint-to-support-cma-apple-investigation |url-status=live |access-date=16 Mar 2025 |website=[[Epic Games]]}}</ref>


On 11 September 2021, Judge Yvonne Gonzalez Rogers decided on the case. While the lawsuit against Apple failed on 9 of 10 counts, Rogers ruled against Apple's use of "anti-steering" - their strategies of preventing the user from being "steered" to a third-party storefront for payment processing, placing a permanent injunction on this behavior.<ref>{{Cite web |last=Brandon |first=Russell |date=11 Sep 2021 |title=Apple must allow other forms of in-app purchase, rules judge in Epic v. Apple |url=https://www.theverge.com/2021/9/10/22662320/epic-apple-ruling-injunction-judge-court-app-store |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref> Despite the case mostly failing, the discovery process provided significant insight into Apple's decisions around App Store policies, including decisions made in major app review disputes, and in one case, executive Phil Schiller arguing to reduce the fee from 30%.<ref>{{Cite web |last=Gurman |first=Mark |date=4 May 2021 |title=Apple’s Schiller Floated Cutting App Store Fees a Decade Ago |url=https://www.bloomberg.com/news/articles/2021-05-03/apple-s-schiller-floated-cutting-app-store-fees-a-decade-ago |url-status=live |access-date=1 May 2025 |website=[[iMore]]}}</ref>
On 11 September 2021, Judge Yvonne Gonzalez Rogers decided on the case. While the lawsuit against Apple failed on 9 of 10 counts, Rogers ruled against Apple's use of "anti-steering" - their strategies of preventing the user from being "steered" to a third-party storefront for payment processing, placing a permanent injunction on this behavior.<ref>{{Cite web |last=Brandon |first=Russell |date=11 Sep 2021 |title=Apple must allow other forms of in-app purchase, rules judge in Epic v. Apple |url=https://www.theverge.com/2021/9/10/22662320/epic-apple-ruling-injunction-judge-court-app-store |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref> Despite the case mostly failing, the discovery process provided significant insight into Apple's decisions around App Store policies, including decisions made in major app review disputes, and in one case, executive Phil Schiller arguing to reduce the fee from 30%.<ref>{{Cite web |last=Gurman |first=Mark |date=4 May 2021 |title=Apple’s Schiller Floated Cutting App Store Fees a Decade Ago |url=https://www.bloomberg.com/news/articles/2021-05-03/apple-s-schiller-floated-cutting-app-store-fees-a-decade-ago |url-status=live |access-date=1 May 2025 |website=[[Bloomberg]]}}</ref>


Epic Games and Apple both appealed the decision. 35 state attorneys-general, the [[Electronic Frontier Foundation]] (EFF), [[Microsoft]], among others filed amicus briefs in support of Epic Games.<ref>{{Cite web |last=Peters |first=Jay |date=29 Jan 2022 |title=Epic largely lost to Apple, but 35 states are now backing its fight in a higher court |url=https://www.theverge.com/2022/1/28/22907106/epic-games-v-apple-amicus-briefs-states-eff-microsoft-appeal |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref>
Epic Games and Apple both appealed the decision. 35 state attorneys-general, the [[Electronic Frontier Foundation]] (EFF), [[Microsoft]], among others filed amicus briefs in support of Epic Games.<ref>{{Cite web |last=Peters |first=Jay |date=29 Jan 2022 |title=Epic largely lost to Apple, but 35 states are now backing its fight in a higher court |url=https://www.theverge.com/2022/1/28/22907106/epic-games-v-apple-amicus-briefs-states-eff-microsoft-appeal |url-status=live |access-date=1 May 2025 |website=[[The Verge]]}}</ref>
Line 82: Line 82:
</gallery>
</gallery>


A similar case occurred with the app Fanhouse in 2021.<ref>{{Cite web |last=@jasminericegirl |date=9 Jun 2021 |title=#fuckapple, a thread
A similar case occurred with the app Fanhouse in 2021.<ref>{{Cite web |last=@jasminericegirl |date=9 Jun 2021 |title=#fuckapple, a thread I cofounded @fanhouseapp 8 months ago to empower creators to monetize their content. We pay creators 90% of earnings. Now, Apple is threatening to remove Fanhouse from the app store unless we give them 30% of creator earnings. This is theft and exploitation. |url=https://x.com/jasminericegirl/status/1402691047940100100 |access-date=16 Mar 2025 |website=[[X]]}}</ref>
I cofounded @fanhouseapp
8 months ago to empower creators to monetize their content. We pay creators 90% of earnings. Now, Apple is threatening to remove Fanhouse from the app store unless we give them 30% of creator earnings. This is theft and exploitation. |url=https://x.com/jasminericegirl/status/1402691047940100100 |access-date=16 Mar 2025 |website=[[X]]}}</ref>


===Twitter===
===Twitter===
Line 111: Line 109:


==JIT==
==JIT==
Safari is allowed to [[wikipedia:Just-in-time compilation|just-in-time]] compile code worldwide. The super short version of what that means: it can run JavaScript code ''really fast''. All browsers, and other runtimes like Microsoft .NET, Java, Lua use this. Ok, fine, it's the system web browser, it's very carefully written to be secure, and it's important to the platform to be doing well in performance benchmarks and all that.
[[wikipedia:Just-in-time compilation|JIT]], which stands for Just-In-Time, is a method of code execution where code, instead of being compiled before being distributed (like an EXE), gets compiled into machine code in real time right before being executed. This method of code execution allows for much faster website loading times, faster emulation, faster program execution (with programs written in JavaScript, Python, Lua...) compared to interpreters, which instead translates code into machine code line by line, which is much, much slower. JIT also employs many more optimization techniques meant to improve performance, but all you need to know is that JIT is much faster than an interpreter.


Apple's [https://apps.apple.com/app/swift-playgrounds/id908519492 Playgrounds] app on iPad is also allowed to JIT. It bundles Apple's [[wikipedia:Swift (programming language)|Swift]] compiler, and shares backend code with the version of Playgrounds found in [[wikipedia:Xcode|Xcode]].
Safari is allowed to use JIT to compile code from any site, same with Apple's [https://apps.apple.com/app/swift-playgrounds/id908519492 Playgrounds] app on iPad. Playgrounds bundles Apple's [[wikipedia:Swift (programming language)|Swift]] compiler, and shares backend code with the version of Playgrounds found in [[wikipedia:Xcode|Xcode]].


Competing apps like Pythonista (a Python IDE), emulators like Delta and UTM, and terminal environments like iSH, are not allowed to JIT. As such, they need to rely on inferior performance, potentially from an entirely separate implementation of their compiler/interpreter that may be less proven, because the JIT-less implementation doesn't need to exist on any other platform.
Third-party apps like Pythonista (a Python IDE), emulators like Delta and UTM and terminal environments like iSH are not allowed to use JIT, instead having to interpret code, which comes with serious performance degradation and is more computationally expensive, potentially draining more battery.


Likely the most clear example is UTM SE. UTM is a port of the [[wikipedia:QEMU|QEMU]] emulator to iOS, allowing you to run desktop OSes (Linux, Windows 98, XP, classic Mac OS, etc). iPhone hardware is very capable these days and it runs impressively well, ''if'' you use a hack to enable JIT (which Apple has now patched). "SE" stands for "slow edition" - yes, really. If you compare the true version of UTM to the App Store UTM SE app, you ''will'' feel the loss in performance. It's impressive UTM even got to be on the App Store at all, and the DMA is to thank for it. But Apple is still holding the line on allowing JIT to apps that require that performance.
An example of apps being heavily affected by this restriction is UTM. UTM is a port of [[wikipedia:QEMU|QEMU]] for iOS, iPadOS and MacOS, allowing users to create [[wikipedia:Virtual_machine|VMs]] that can run various OSes, for example Microsoft Windows. The iPhone's hardware capable enough to emulate various modern OSes at full speed, but due to Apple's JIT limitation, the team behind UTM had to create UTM SE (slow edition) that doesn't require JIT, but is nowhere near as fast as UTM with JIT, only being capable of running MS-DOS and derivatives at acceptable speeds. While methods that enable JIT for apps other than Safari and Playgrounds exist (some currently working on iOS 18.5, like [https://apps.apple.com/us/app/stikdebug/id6744045754 StikDebug]), Apple does not allow the use of JIT in notarized apps, meaning that apps that support JIT will have to be sideloaded, which comes with its own set of restrictions.


While UTM SE releasing at all might seem like a pathway to getting Firefox and Chrome "slow editions" on the App Store, browser engines other than the built-in Apple WebKit/JavaScriptCore are still outlawed.<ref>{{Cite web |title=App Review Guidelines |url=https://developer.apple.com/app-store/review/guidelines/#2.5.6 |url-status=live |access-date=16 Mar 2025 |website=[[Apple Developer]]}}</ref> In the EU, Apple has blessed web browser JavaScript engines with the option to use JIT. The app must be approved for an entitlement, and then must work within APIs provided by Apple for it. As of January 2025, no browsers have been released using this. We were all anticipating proper competition around web browsers on iOS, but almost a year later, we have nothing.<ref>{{Cite web |title=Mozilla says Apple’s new browser rules are ‘as painful as possible’ for Firefox
In the EU, Apple gave web browsers permission to use rendering and JavaScript engines other than the built-in with Apple WebKit/JavaScriptCore, with the option for JS engines to use JIT. The browser still has to be approved by Apple for an entitlement, and then must work within APIs provided by Apple for it. But, as of January 2025, no browsers that use different engines than the built-in ones have been released, mainly due to arbitrarily imposed restrictions, meant to discourage the usage and development of third-party engines.<ref>{{Cite web |title=Mozilla says Apple’s new browser rules are ‘as painful as possible’ for Firefox |url=https://www.theverge.com/2024/1/26/24052067/mozilla-apple-ios-browser-rules-firefox |url-status=live |access-date=16 Mar 2025 |website=[[The Verge]]}}</ref>
|url=https://www.theverge.com/2024/1/26/24052067/mozilla-apple-ios-browser-rules-firefox |url-status=live |access-date=16 Mar 2025 |website=[[The Verge]]}}</ref>
 
However, Apple still does not allow different engines outside of the EU, with or without JIT support.<ref>{{Cite web |title=App Review Guidelines |url=https://developer.apple.com/app-store/review/guidelines/#2.5.6 |url-status=live |access-date=16 Mar 2025 |website=[[Apple Developer]]}}</ref>  


==Sandbox==
==Sandbox==
You might not like app sandboxing, but it's a powerful security feature used on all modern platforms. The reality is very few apps need more than a few basic permissions. [[wikipedia:Flatpak|Flatpak]] on Linux also sandboxes apps, and it seems to work great! Still, it's completely fair that there should be processes for doing things beyond what the sandbox allows. You see some of this with permission prompts - does a flashlight app ''really'' need access to your contacts? (Apple has been burned by apps abusing user data before the current permission system was built out.<ref>{{Cite web |last=Bohn |first=Dleter |date=15 Feb 2012 |title=iOS apps and the address book: who has your data, and how they’re getting it |url=https://www.theverge.com/2012/2/14/2798008/ios-apps-and-the-address-book-what-you-need-to-know |url-status=live |access-date=16 Mar 2025 |website=[[The Verge]]}}</ref>)
You might not like app sandboxing, but it's a powerful security feature used on all modern platforms. The reality is very few apps need more than a few basic permissions. [[wikipedia:Docker_(software)|Docker]] also sandboxes apps, and it seems to work great! Still, it's completely fair that there should be processes for doing things beyond what the sandbox allows. You see some of this with permission prompts - does a flashlight app ''really'' need access to your contacts? (Apple has been burned by apps abusing user data before the current permission system was built out.<ref>{{Cite web |last=Bohn |first=Dleter |date=15 Feb 2012 |title=iOS apps and the address book: who has your data, and how they’re getting it |url=https://www.theverge.com/2012/2/14/2798008/ios-apps-and-the-address-book-what-you-need-to-know |url-status=live |access-date=16 Mar 2025 |website=[[The Verge]]}}</ref>)


It can go further than this. As we established in previous sections, an app can be given more access to features of the system using entitlements. These come in a few flavors:
It can go further than this. As we established in previous sections, an app can be given more access to features of the system using entitlements. These come in a few flavors: