Apple has made it difficult to use web-based technology on its platforms
onezero.medium.com
onezero.medium.com
The banning of Electron apps for using a non-public API just means it's consistent with any other application submitted to the app store... they cain't use them sweet private APIs neither. Users can totally still go and download a notarized application though and have no problems. It's something that'll very likely be remedied by the Electron team in its entirety if it hasn't already been...
As far as not giving a shit about Safari's ability to do WebRTC and PWAs properly; I don't really see that as Apple trying to kill web technology as much as them just not profiting off it. Apple doesn't make any money from the "web," they make it from their platforms which aren't HTML/JS/CSS. As a developer, that lack of focus does piss me off sometimes, but... as an end user I don't really notice. Safari is still the best mobile browser available, even if it is lagging behind the rest in terms of standards adoption.
...
And tangentially, in my opinion, the Electron apps being booted is a good thing, if even only temporary, as I really hate downloading an app from the Mac App Store only to find its a full blow fucking Chrome instance for something that would be literally be two NSViewControllers and a handful of "slightly" customized views. Like "Yo, player, your system tray app to show this red or green icon is using 400mb of ram and occasionally locks my CPU. WHY!?!"
If Electron fixes their usage of private APIs then this whole storm blows over.
Now if Apple introduces a rule that specifically says “non-AppKit apps are not welcome on the store” then let’s panic. But that is not happening here.
(I’ll be the first in line to admit that private APIs and App Store rules are mostly limiting creativity and competition )
... my third and fourth cents.
I don't think a lot of folks realize just how rich the ecosystem is for developing a MacOS or iOS application without writing ObjC or Swift. This is really one particular toolkit, that's doing something it's not supposed to, and that's it.
You can write MacOS/iOS apps using C, C++, Java, JavaScript, .NET, Ruby, and I'm sure a bunch more each using something _not electron_ and are not having this problem right meow.
The real pain I think for most people using Electron is that they're so far removed from the native SDKs it's scary to not know what the fuck really happened. That's fair, but that's also the price for using an abstraction like Electron. If you're not the one making the API calls, then you're opening yourself up to that potential issue and it's going to be scary until you understand it.
Personally, I don't think I'm smart enough to understand that many layers of abstraction even if I wanted to; so, I don't use them and just write native code.
Edit: Added MacOS or iOS for clarification since my point is the same for both.
Your app now hinges on the ability of developers-that-are-not-you that you are not paying to maintain a private API free fork of Chromium and in the process not break such essential things like display composition where these APIs are used.
* I understand the prviate API was about reducing power-consumption.
* Apple sells itself on superior battery-life compared to Windows laptops.
* Unfortunately, the Electron ecosystem is too big to dismiss - there's a lot of software using it that could potentially pull customers away from Apple's App Store if they weren't allowed back-in.
* Despite the fact most of those apps are nominally free (Slack, Skype, etc), if they weren't available in the Mac App Store it would mean users would stop seeing the Mac App Store as the place to go for Mac software - thus damaging the brand.
In short: if Apple doesn't document this power-management API and make it public then significantly fewer _important_ apps will be available in their Store which is bad for Apple's current long-term vision. If these apps do modify themseles to not use the battery-life API then they'll reduce the computer's battery life which then makes Apple look bad.
Similarly, it is using internal functions to map mach ports onto file descriptors because their cross-platform bits do not understand mach ports.
How are Firefox and Chrome not competitive given that Safari isn't the overwhelmingly dominant browser ?
https://mozillagfx.wordpress.com/2019/10/22/dramatically-red...
Before using those private APIs, with no other options to reach the same performance as Safari, both Chrome and Firefox were in a completely different league.
https://mjtsai.com/blog/2019/11/04/electron-apps-rejected-fr...
Your own article says that Firefox only recently started using them.
So you’re basically just talking out your ass, saying that Apple should open up APIs that have always been private for the sole purpose of helping a competitor who knowingly adopted them in violation of platform rules.
“Yes, officer, I broke the law. But I think, now that I’ve broken it, you should just abolish the particular laws that I broke because some people think I’m a big deal.”
Spotify and co will care more of getting into that 30% of the mobile market (and the more lucrative 30% at that) by doing whatever they can, than Apple would worry about them leaving because no Electron is allowed...
Since they need to have them there, and don't use Electron there already, they can have them in macOS without it trivially.
The worst case scenario is that apple loses some revenue and major players avoid the mac app store for desktop apps.
Apple who gets most of their money from mobile will not care. App developers will lose some convenience but negligible money and they wont care.
I personally don’t care. In fact I grow tired of the throw everything in a webview cause we’re lazy mentality. Build a proper app that looks like it’s a mac app. Also I grow tired of the crap performance these “apps” have. I say remove the lot of them and force people to build a proper app. Electron is Flash 2.0
Radar goes nowhere, going public does.
I don't know about radar. Never tried it.
Given my own experiences in the past, I would doubt that radar goes much of anywhere either. Apple just doesn't seem like they move unless and until they want to. But again, I can't say for sure about radar, as I said, I've never gone that route.
By far the best route to go is to be in a position where Apple was about to make the change you wanted anyway. But you probably have to get pretty lucky for that to happen.
Where does it state this?
The question is whether there is merit from Apple's perspective in making these APIs public.
Because often we find out at WWDC a year later why they didn't make it public and it's because of some foundational rearchitecture.
It's just that the world doesn't revolve around one particular issue. If your particular issue doesn't have lots of duplicates (i.e. common) or it isn't strategically important to Apple then it just doesn't get prioritised.
Not only that, but if Apple didn’t ban the use of private APIs then they would be blamed whenever one of their updates broke all these popular Electron apps.
In a sense it’s like letting squatters onto your land. If you ignore them long enough then at some point society decides they have the right to be there, and then you become the bad guy for deciding to enforce your own property rights.
- Chrome explanation: https://www.chromium.org/developers/design-documents/chromiu...
- Firefox explanation: https://mozillagfx.wordpress.com/2019/10/22/dramatically-red...
Windows has public APIs for doing those things. It's pretty clear that there's a need for them. Apple should absolutely design a stable solution for those, since there's a clear demand.
Apple does not want to do this for business reasons. Microsoft does, but they have a different business model than Apple. Apple is in the business of selling their own hardware which means they want exclusive apps. If everything is cross platform then Macs become an overpriced commodity. Why even develop macOS at that point?
If you think the only way to achieve that is inevitable pursuit of "exclusive apps" then fine. But I would say, a user who gets the apps they want and isn't artificially constrained in that goal is a happy user, who will be satisfied with Apple letting them achieve that.
Cross platform UI toolkits have their own internal "logic" that clashes with the native UI, frustrating user expectations.
And one app not being on there isn't going to change that.
If they need to drop Electron to get into the more lucrative 30% of the mobile market, iOS users, they'll do it as fast as they can...
There's no such thing as a "free" app from a for-profit company -- except some neglected side project.
Spotify is only free because they want to hook people and then sell premium subscriptions to those that are up for it, others are monetized by ads, private info (eyeballs), etc.
From Google's perspective, Chromium-based apps being booted from the iOS App Store is probably a fantastic thing if it leads to articles like the one linked up top here.
"Apple makes it hard to use the web" is a much better message for Google than "Apple doesn't let users install Chrome so we can't collect as much data from iOS users as we do everywhere else." Even though the latter is the truth behind their push to get Chrome natively onto iOS.
Uh, if that's the case then I think they're barking up the wrong tree. Just given. How that's going for them.
This is nonsense. Safari is the only mobile browser available on iOS, so if you're sorting by mobile available per platform, then of course it's the "best [of one]". If Chrome and Firefox had the opportunity to bring their platform fully to market on iOS, there would be some real competition there... They could still do what Android does with displaying any in-app web rendering like Android System WebView, while allowing users the option to use the same browser and experience they're used to on their desktops.
I don't believe they have ever been limited in porting, but have decided the performance hit for using their own javascript engines (or compatibility issues in leveraging Apple's) aren't worth the effort.
One for Safari and one for the rest.
Websites saved to the home screen use UIWebView's engine — but that's not the discussion, the discussion is about browser apps which can and do use WKWebView.
Basically Google would immediately use all of their properties and muscle to wrest control of iOS. And then why even bother to have more than one platform.
Apple should stick to making top notch hardware and software for their phones. Just allow users to run a real web browser as well.
On the other hand: Chrome only became so popular because of their shady propagating of the software. Through freeware installers etc. Something you can prevent very easy on a Apple phone.
Also: the market is not so big. Even if they'd "take over" iPhone, it wouldn't make a big difference on the control they already have.
For crappy aid, I only remember iTunes on Windows.
What the... Was that...
What's funny here is that many of Google's web initiatives such as PWA and AMP are at least partially constructed to increase Google's dominance and selling of ads. It's hard to fault any company that pushes against newer web standards and "progress" since it is so slanted in their competitors favor.
If you're a Google employee working on some such project you can probably convince me that the majority of the reasoning for PWA/AMP/etc are good, and assessed in its totality it is probably for the greater good, but you'll never convince me the mangers/directors/executives at the budgeting level of these projects are too dumb to understand and latter extract immense value at the expense of users as a final result.
All this stuff is too reminiscent of Facebook's Free basics project masquerading as Democratizing Internet "progress" with cool new features no user actually asked for.
There isn't really anything nefarious about that, and at the moment it has the benefit of aligning Google's incentives neatly with users'.
PWAs are an outgrowth of web best practices and new consortium-ratified technologies. AMP is for Google search on mobile (and a couple other places.) To pull some examples from your comment:
> What's funny here is that many of Google's web initiatives such as PWA and AMP are at least partially constructed to increase Google's dominance and selling of ads. It's hard to fault any company that pushes against newer web standards and "progress" since it is so slanted in their competitors favor.
1. PWAs are not a Google initiative. AMP is.
2. Migrating to a PWA doesn't advantage Google vs. its competitors, either in search or the browser world. AMP on the other hand is specifically designed to get sites that adopt it better placement in mobile search.
3. Neither PWAs nor AMP are web standards. PWAs are a set of standards adopted by browser vendors (not just Google.) Vendors implement parts in different orders from other vendors (see the various Apple examples in OP.) AMP is not a web standard -- it is an open-source project governed by Google.
Please do not conflate PWAs and AMP.
> Apple doesn't make any money from the "web," they make it from their platforms which aren't HTML/JS/CSS
Apple makes their money from selling hardware, which is priced to provide a very healthy profit margin. Once upon a time, that seemed to be enough for them.
Now it's not, and Apple products are broadly worse as a result. The App Store should not have an entire tab dedicated to Apple Arcade, and the Music app should not be a giant ad for Apple's streaming subscription service.
It's an argument I would be much more open to if Apple wasn't also pushing terrible Catalyst apps for the Mac.
In the long run, if nobody uses Apple’s APIs and everyone prefers cross platform ones, then they lose exclusive apps and Apple hardware becomes an overpriced commodity.
It’s the same business model as Nintendo, just with more expensive hardware and cheaper software. Really, none of the game console makers want all of their software to be cross platform. Exclusives are what sell consoles.
Certainly, Apple places a lower priority on backwards compatibility than, say, Microsoft, but they do give people warning when they’re going to change a public API.
This is a free prefpane that can hide the cursor anywhere via hotkey or idle timer. It's fairly popular. I've written and maintained it since 2007. Try running it in Catalina. http://doomlaser.com/cursorcerer
Yep. Apple makes most money on $1k+ high end mobile devices, smart phones, tablets, watches, laptops. And now original contents, subscription services and financial services. Most Apple software are given out for FREE [1], macOS, iTunes, iWork, bundled Mail / News / Stock / Preview Safari apps, etc.
That reason alone it making Owen William's claim of "Apple’s control over its app ecosystem is a new type of monopoly" a moot point. Apple smart devices is less than 10% of the total market share.
And I agree with locking PWA and prefer native approach is a good thing for consumers - because if Apple didn't insist that, we'd be still running Adobe Flash on our smart phones these days.
End user cares more about user experiences, battery life and seamless integration working across all apps and services.
[1]: https://techcrunch.com/2018/07/16/apples-app-store-revenue-n...
Here are a few reasons that will make it hard to convince Anti-trust judges that Apple is a monopoly:
- Apple doesn't control how much mobile apps would charge consumers. It simply provides a proprietary platform for you to reach out to 2 billion potential customers, for that they take 30% commission for distribution and access to their customer pool.
- Apple's platform is proprietary, they invest / build / maintain / distribute for you. You are not obligated to publish your mobile apps on it. You have the freedom to do it on your own (yes, on iDevices that means sideloading, jailbreaking, a web app etc.) or publish on competitor's platform (Android / Samsung / Huawei / Xiaomi / Kindle etc.) It's just so happened that Apple's devices are popular (2 billions of them) and you have much better upshot to make money if you charge customer for your app on App Store, but again, nobody force you to publish on Apple.
- There is no reason to believe that because Apple's devices are so popular (or in your words, dominant in terms of mobile app revenue) consumers are forced to pay higher price for mobile apps. Again, choices are there. There are tons of Android users out there, in fact, more than 3x of Android devices are there on the market.[3]
Lastly, have you wonder why Apple earns double what Google makes in being mobile app platform? If you want a premium product, a more unified user experience, focus more on security (make money on hardware instead of harvesting personal data and sell it to advertisers), perhaps you could earn much more margins but selling much less units and still getting rich? That's exactly what Apple did. Granted, they got greedy by jacking up the price even more on iPhone X/XR, market responded negatively. So they corrected themselves a little bit (got rid off the lady who sell luxury goods rather than consumer electronics.) And they diversify.
[1]: https://www.investopedia.com/terms/m/monopoly.asp
[2]: https://www.investopedia.com/terms/d/duopoly.asp
[3]: https://www.macworld.co.uk/feature/iphone/iphone-vs-android-...
Again, my core arguments is they are not in that position. Android marketshare is 3.3x of Apple's, if you want to reach out to more customer, you'd be releasing on android not ios, right?
It sometimes loses its idea of where the top of the page is and all page elements are rendered normally, just a few hundred pixels above where they should be and no amount of dragging of the screen will get the top of the page visible.
On old reddit trying to touch a link sometimes results in text way up the page being rerendered with a different kerning, or font size, resulting in different line wrapping and making a bunch of page elements move and you get the wrong link.
It's bad faith commentary, to say the least. Look at the level of accusation they're making "Apple Is Trying to Kill Web Technology" ... "It wants its Mac App Store to be filled with apps that you can’t find anywhere else." Leaving aside the fact that there's no way Apple makes enough from some imaginary exclusivity to justify trying to "kill web technology," none of their moves can even rise to that level. So they were slow to implement WebRTC? Service Workers? Both have massive privacy issues- and partitioning service workers out of process is the crux of how WebKit enforce's privacy- which they're pushing even harder these days. And according to said engineer they even added a compile flag so Google didn't have to use partitioning (I wonder why they wanted that...)- how very anti competitive of Apple. And suddenly mandatory WebKit on iOS is a "monopoly?" It's their platform- they define the security and privacy baselines. Apple has had a walled garden since before the "Web Technology" the author is referring to existed and this is a piece of that. It's another valid consumer selling point- their stores aren't cluttered with trash and I know what those apps can access. But, according to this person, every single point here is fake marketing speak because... checks notes... they want to force people to develop apps only for the Mac Store? Really?
We can be critical of Apple for a lot of web stuff, but it takes a delusional level of self-absorbance to think that Apple is bringing about the end of cross platform web tech because they put up a completely fair and valid barrier, that will probably be resolved shortly, as you said, on one's tech stack of choice.
WebKit engineers provided very reasonable arguments for why WebRTC and service workers took a while to build and diverges from the spec: privacy.
Obtaining a refund for any purchase is furthermore a pain in the ass with no obvious or publicly available way without having to search the web so you just let it go instead of wasting your time in the process or just because the 24h grace period to do it just expired because you were in a hurry and didn't have time to scrap for a still relevant process on google.
Reporting scaming app with dark pattern is even worse with no direct access to Apple to do so and you end up giving up in the process because it's such a waste of time to report on just a kind of user forum with its own dark pattern or bugs which prevent you to do so and with no sign of Apple being in charge anyway.
AppStore and Mac AppStore are a disgrace which make it hard to justify their 30% ripoff on app price. In fact, they are just as happy you paid 8€/15€ for useless crap as they still have their share of the bargain in the process.
Time cook Apple is now just a rippoff of consumer money at every possible corner filled with dark pattern and thrown-away super cost-optimized flawed hardware working at the edge... And wait till notarization require you to pay an Apple tax and there is no way anymore to "sideload" an app without having to jailbreak your Mac, as it is the case with iOS.
How much of it is because Safari is good, and how much is because Safari is the only option?
iPhone has a huge market share. It is not possible for web companies to ignore or deprioritize it. Safari is the only web browser available on iOS. So all website owners make damn sure their website works well on Safari. They may even omit features that Safari does not support for all browsers, because it is easier than graceful degradation.
Back in IE6 days, for best web experience, you would want to use IE6. It's not that it was so awesome and so far ahead of Netscape. It's just that all websites were designed for and tested on (objectively terrible) IE6. You could use the (objectively superior) Opera or Netscape, and you would have a worse experience, because websites were created with IE6 in mind.
Safari is not the best mobile browser. It is the browser everyone writes for and tests one. Chrome is not superior to Firefox. The reason so many web apps (e.g. Skype Web) do not work on Firefox or Google Maps is slow on it is not that Firefox is bad. It is that they only target Chrome when designing the website. Everything else is an afterthought, if even that.
Each of them have their strengths and weaknesses. Safari is the best at low power consumption and integration in its environment. Firefox is the best at customizability and openness, and standards adherence. Chrome is the best at, well, popularity, I guess; innovating new web standards, maybe.
If not for those, I'd just be using Firefox because the ability to add plugins (eg. Adblock) and have Youtube not stop playing when you minimize it are obviously huge advantages.
While true, this was also the reasoning behind Microsoft's treatment of Internet Explorer which caused web tech to get stuck for a decade. I think we were all glad those times were over.
But, its starting to feel like the people who want to use tools that allow them to build apps and programs that are cross-platform (NodeJS, Electronc, etc) are trying to use their weight as "the most popular programming language" to get platforms to conform to whatever they want.
Why should Chromium be allowed to use private APIs that native developers already knew "should NOT be allowed" especially those coming from iOS where its known using those would simply have your app rejected.
I don't have as much of an issue with Electron apps as most people do, but at some point you have to realize the short comings of cross-platform dev tools and work around them instead of trying to force everyone to just accept them.
Compare that to Apple who rule the App Store with an iron fist. The don't allow native Chrome at all requiring instead that Google deploy a reskinned Safari. You can't deploy an app to a phone that you own unless you also own a Mac workstation running OS X and pay Apple $100/year for the privilege of using the very expensive hardware you bought from them. They built Swift, they built Xcode. It's total vertical integration and it's all managed at the pleasure of their bottom line.
Do note that the point on macOS is kind of moot because it IS an open platform. Unlike iOS you do not have to use the App Store.
https://arstechnica.com/gadgets/2016/01/new-chrome-for-ios-i...
The vertical integration is true but that also has been the case with Microsoft products. Google basically doesn't have it's own desktop platform until pretty recently, of course their tools ran on other desktop platforms otherwise they wouldn't have any.
It's nice to install other browsers on Android though. Using Firefox wherever I can.
The whole point of different platforms is that they have different characteristics.
Openness is a characteristic of Android but not of Apple’s stores.
This means there will be limitations on what cross-platform software can do.
As if Android’s come-one come-all is done out of benevolence. Google doesn’t have a heart, it had a bottom line too, and supporting those tools makes dollars come its way.
Google HAD an opportunity to ensure that one browser engine ruled the web—-but they chose to fork WebKit into Blink, in part _because_ they didn’t want to share the work they were doing. It propped up competitors. Google would rather have a competitive—-read, monetary—-advantage than ensure web technology is widely available for all to use.
For example, when Google refused to share the multi-process mode that differentiated Chrome from other browsers, it was a compelling enough security feature that Apple/WebKit reimplemented it independently so that everyone using WebKit could have it.
Google proceeded to cry crocodile tears, and then promptly forked the WebKit codebase into Blink. They claimed it was necessary to avoid having to carry around two multi-process models, but it was a A PROBLEM OF THEIR OWN MAKING.
So don’t imply Apple is profiteering, as if other companies are trying to give you hugs. Everybody’s finding cash in the ways that play to their strengths.
If Google was really interested in pushing the web forward, they’d swallow their pride, take the bottom line hit, and merge Blink back into WebKit.
Apple had the same choice when it forked KHTML to produce Webkit.
When Google forked WebKit, Safari and Chrome combined were something like 40% of the market.
Chrome was clearly the leader. Apple should have moved to their fork then if anything.
I believe that statement is false. As I understand it, from @tomalsky, Google simply had a different (superior) design for making WebKit multi-process, and Apple did NOT want to take those changes upstream into WebKit. So if Google wanted to use the better design, they had to fork.
https://www.osnews.com/story/23133/apple-drops-webkit-2-code...
Large parts of Chrome’s multi-process model were specific to Chrome, and not part into WebKit. Apple built “WebKit 2”, which integrated into WebKit at a higher level and allowed anyone using WebKit to get multi-process as a native part of the code base.
Three years later, Google forked Blink. According to this link:
https://techcrunch.com/2013/04/03/google-forks-webkit-and-la...
“Specifically, [Google Engineering VP Alex] Komoroske noted, Chromium’s multi-process architecture is very different from the rest of WebKit (Chromium is the open-source project behind Chrome and Chrome OS). Having to integrate Google’s way of doing things with WebKit and what the rest of the WebKit partners were doing was “slowing everybody down,” Komoroske said.”
So, basically, Google built a version which was partially proprietary; Apple came in and built a completely open source version; and rather than standardize on a single code base, Google bailed, claiming it was too difficult to continue supporting two different multi-process models.
In the end, rather than collaborate, Google chose to keep their product proprietary and create a forked code base instead of doing the right, but admittedly difficult, thing and adopting the true open source option.
They were able to ship earlier, and arguably at all, precisely because they just made separate processes that each had WebKit in them instead of doing a major change inside of WebKit. Had they tried to do the latter, the fork would have just happened sooner since everyone would have screamed that they were trying to completely change WebKit as complete newcomers: don’t forget, this was the major feature they shipped Chrome with. I’m personally happy that they set the standard that everyone then followed back in 2008 as opposed to having their initial foray into the browser space be some big RFC to change WebKit.
Having worked with it at the time, I was initially skeptical too. However, after working in the code, it definitely felt more natural to have the processes around WebKit instead of inside WebKit (as would be the case with most libraries). Ultimately, Apple’s approach took longer and lead to a big API-incompatible change (A “fork” level change arguably, but when it’s your own repo it’s not a fork, it’s just “2 point 0”). Not saying that’s bad, but Google's goal was to ship Chrome in 2008 and not have some huge incompatible diff with WebKit. Both made decisions appropriate to them, and in the end, gasp, we got two cool multi-process implementations, what a failure story for open source!
There are a lot of misconceptions in this thread and claiming that macOS is not open is really the biggest IMO.
The platform is still wide open for non-App-Store development.
This hasn’t been true for a while now.
Why should apple apps like Safari be allowed to use private APIs if they're not allowed?
This is blatantly non-competitive.
Also, they sit on these APIs for YEARS with no alternative.
Opening up private APIs is a commitment that you will support those. Which is no light decision.
Personally I think it is fine for any platform to have these.
But I do wish that the App Store rules around them were more permissive.
From Apples perspective: look at all the shit they are getting for dropping 64-bit support. This was known for a decade and they still are pictured as the bad guys who don’t support developers. A decade!
So you can imagine what happens when apps relying on private APIs suddenly break.
You know all the talk about Google or Facebook or Comcast both owning the platform and competing on the content layer with self-dealing is anti-competitive monopolistic behavior? Same goes for Microsoft Windows in the 1990s (actually litigated these very issues) and Apple today.
This distinction does not matter in the public sphere. When Apple releases an update — any update — that breaks a popular app, they are blamed for it. By putting their foot down, Apple is putting the onus back on developers to play by their rules.
This situation is essentially the normalization of deviance [1]. If you do not enforce a rule, that rule becomes invalid and unenforceable. Apple does not want to lose control of their platform. If they give away all of their private, low level APIs, then cross platform frameworks like Electron will render their platform a commodity.
And WebKit is a fundamental OSX library used for many purposes.
I'd rather have an open committee tell a big corp what they have to do than the other way around.
1. The rules are the same for all apps.
2. Not Apple’s fault that Electron does not use the perfectly good browser engine shipping with macOS, but instead includes a separate browser with each app.
3. No one is forcing you to use the Mac App Store.
The private APIs rule is not new, Apple is just enforcing it harsher. Chromium has been breaking it at leisure, because Chrom(e|ium) itself does not ship via the MAS.
Yes, the people shipping Electron apps via the MAS have put themselves in a tough spot by skirting the rules. I can sympathise, but pretending that this is just Apple being mean and they couldn’t have seen this coming is downright disingenuous.
As for Safari, it would certainly be nice if they adopted new browser standards quicker, but being slow on the uptake is not the same as actively making things difficult.
If your users are on iOS, you are absolutely forced to use the app store. You simply cannot provide push notifications or any other services they require over web. They have intentionally crippled Safari so you HAVE to dance to the tune of the review board, have to give 30% of your profits. There's no alternative. Sideloading? No. Web? Enjoy being stuck in Gmail webview with no add to home screen functionality.
Otherwise, mobile Safari (or any other browser) still exists.
This discussion is about the Mac App Store. Electron apps have never been allowed on iOS (nor should they be, given the resource constraints of mobile devices - Electron apps would be murderous on battery life).
If this was iOS, where sideloading is basically impossible, I'd be much more sympathetic to the author's view. But we're talking about the Mac. Apple's quality control is the reason for users to choose the Mac App Store. Any users who don't want that control can easily go elsewhere.
The ability to use an Apple ID for payment probably adds a bit of convenience for some people, but we have Apple Pay on the web, not to mention Stripe and Paypal. It really doesn't add all that much friction.
Seeing that “thousands” of developers are depending on a framework that uses private APIs that will take a long time to fix, kind of proves Apple’s point. If Apple releases an update that changes the behavior of the private APIs in unexpected ways - which they have every technical right to do since it is not a vendor’s responsibility not to change the behavior of non published APIs without warning, all of those apps will break.
That's pretty much the opposite of "trying to kill web tech".
There’s little need for most web apps to be riding up against the edge of standards anyway because 9 times out of 10 they’re bog standard CRUD apps that’ve been trivial to build since the heyday of Ruby on Rails.
One nit to pick: Firefox 70's performance improvements didn't come from using private APIs. They used IOSurface and CALayer, both public API: https://developer.apple.com/documentation/iosurface https://developer.apple.com/documentation/quartzcore/calayer
https://mozillagfx.wordpress.com/2019/10/22/dramatically-red...
The required bits for that work are not actually documented.
As an aside, I originally found out that they used IOSurface and CALayer from reading that post.
In this case, there was a public method that took the public object Firefox needed, but wasn't documented as doing so.
Or, if you want to build a decent application, make a native one, or make a website. Don't do this weird half-desktop, half-native just because it's easy for you; think about your customers instead.
It sounds like what you want is for every application to be hand-written for the target platform using target-specific APIs, because code reuse and cross-platform tech are 'not native' and thus bad. QT and GTK? Not native. Java's UI toolkits? Not native. HTML? Not native. Perl, Ruby, Python? Well, they're not C or Obj-C and their standard libraries aren't libc so they're not native.
QT and GTK use native system code on most platforms to layout controls. This means the controls are mostly consistent with the rest of the system, even when Microsoft or Apple decides to add more functionality to existing components, for example. If I'm hovering over a button and a tooltip appears, I want it to show in my OS colour theme and font instead of whatever flavour of Helvetica the web designer who made the application found fashionable today. The developer may not like that I can set my system to be in ugly high-contrast mode when I'm tired and don't want all the OS fluff, but please be nice enough to just follow the system theme instead of being the special little app that thinks it knows better.
Electron uses an HTML renderer instead of the system compositor. This is the main difference between what I call native and what I don't.
If you write an application in Python using standard operating system controls (say, with Gnome/Cacao/Win32 bindings), I'd call it more native than an Electron app, even if the Electron system is more deeply integrated into the system API. I'd also call Java non-native as it decides to drop all system UI components and draw its own.
The repacked iOS apps being released on macOS are somewhere in the middle of the void between native and non-native in my opinion: while they use the OS compositing and controls, the layout is often not designed for the platform they run on. Perhaps "badly-designed native" is the best way to describe them.
I prefer not to support Apple, personally, but if it represents a 40%~60% uplift in sales, and after their rake, 25%~50% in earnings, at some point, I'm probably going to invest in that. If not, then, not.
I'm baffled that anyone thinks that any corporation "should" operate any particular way (as long as they are not breaking the law). Government, sure - everyone is probably entitled to that, but otherwise, why not just "walk away"?
VS Code is better than anything and it’s built with Electron. It’s not weird. It’s way, way better. And if you don’t think so, look at all the users it has who disagree with you.
The most likely reason developers don't do this is that it isn't really about targeting web-based technology. It's about targeting Chrome.
I mean, we all know that electron has its downsides (large downloads, old versions, etc.). But PWAs are the technology to overcome those problems and instead of supporting PWAs, Apple doesn't seem to care to bring crucial features like web push notifications to PWAs on iOS (it is not about pushing ads message, but about being able to efficiently send a message to a phone while the app is in the background, e.g. for chats).
So I can definitely follow the argument of the author.
1. Apple has started rejecting Electron apps from their app store.
2. Apple's "Hotel Cupertino" - you can bring any browser you want, but you can never leave Safari. (That is, the iOS versions of Chrome, Edge, Firefox are merely glorified Safari skins; Apple doesn't allow independent browsers on their platform.)
3. Apple ignores, or is slowest to implement, open web standards like RTC, progressive web apps, push, and more.
As someone involved in the progressive web app (PWA) standards space, I unfortunately must concur with the author's observations: Apple is soft-suppressing web standards, especially in the PWA space.
I don't like Apple's policy, but my understanding is that's not exactly right. It's the web browser engine that must be WebKit, like Safari. But browsers can have some other differences beyond the "skin" like networking code, and my understanding is at least Chrome does.
It's a business practice that reduces user choice and freedom, and stifles innovation and competition.
Not that Safari doesn't have security problems, but Apple trusts themselves a lot more than the other companies for security.
So the browsers are stuck with either abysmal performance numbers due to interpreted javascript, supporting their engine having different javascript behavior on iOS, or shipping a skin over webkit. The skin approach is by far the least amount of engineering.
Yeah, yeah, when the PWA community screams “JUMP”, Apple is supposed to ask “How high?”.
Never mind that this is a tiny subset of the entire web cosmos.
I build web apps for a living, and I don’t use a single PWA on iPhone/iPad. I’m sure Apple has noticed that these kind of features are going mostly unused on their devices, and are prioritising accordingly.
Don’t get me wrong, I’d be happy to see Apple make PWA stuff more a priority, but I can’t really blame them for not prioritising it higher.
As someone who has spent a lot of time on web and Apple.. this article reads a bit like a conspiracy theory. Apple has allowed a lot of web features on to their platforms and App Store's, like hot code push, PWA, etc.
The only reason Electron is in the news is because it uses some of those APIs.
Now you could argue that private APIs are a stupid idea. But turning this into a conspiracy theory that Apple is on a mission to kill non native apps is a bit far fetched in my opinion.
If Chromium developers care about this outcome, they’re incentivized to remove use of those APIs and potentially impact the performance of Chromium on Macs.
Edit: Google to the rescue:
https://mjtsai.com/blog/2019/11/04/electron-apps-rejected-fr...
https://github.com/electron/electron/issues/20027 https://github.com/electron/electron/pull/20965
Yeah: native apps consume fewer resources and generally provide a better user experience. This is like, Apple's whole schtick with iphones. The hardware is historically low spec compared to contemporaneous android, but the device performs better, and old devices perform better on new ios releases.
> It wants its Mac App Store to be filled with apps that you can’t find anywhere else, not apps that are available on every platform.
Sure, that's a take.
If you're going to publish an "app", do it properly (natively) or not at all.
This is quite clearly one of those cases where people are attributing malice where incompetence of one sort or another is almost certainly the cause.
Most likely either: —This should have been nipped in the bud years ago when they added the private APIs to electron. —They are taking a ham-fisted approach to cleaning up some App Store abuses. —They've updated the tools they use to review App Store submissions.
Or maybe a little of all of the above. The big problem is Apple is again stumbling around with little or no communications to the developer community, fucking up a lot of developer's lives. This isn't some conscious malicious scheme... just frustrating corporate blindness.
About the use of private APIs in App Store apps? The communication has been consistent and loud enough that most non-Apple developers are completely aware that using a private API will get your app rejected.
I suspect there was a two month grace period. The problem would be that they gave that grace period to a developer (like Slack) rather than working with some Electron framework team.
I also suspect a reason the tools were revised to reject apps with use of these internal functions is that some of them are going away in March.
This is the thing, there are good reasons Apple should reserve certain libraries as private and not support them. The fact that Electron dipped into private libraries and didn't have a fallback plan for WHEN Apple clamped down on this is just poor planning. That said... a small amount of communications and/ or tolerance from Apple would go a long way towards developer good will here. Lots of small developers getting burned here.
Just because it's JS, it doesn't mean that it is web technology. It's simply a way to build apps using technologies that are traditionally used for the web, making it approachable for people who know JS so that they can build bloated apps.
Apple's toolchain is so much superior to anything JS-Frankenstein and the Swift itself is a pleasure to work with, probably easier to learn and manage than to try to adopt your JS skills to a mutant JS. Almost always results in better UX and I think it's O.K. to care for the users, something that apparently never crossed the minds of the WebTech people(through the years, all the frameworks were about making developers life’s easier, rarely anything was about the user ).
When will they pull big Electron apps like Slack et al? I'm guessing never. It's often the little guys whose business gets stomped on by the unfair application of these rules.
I haven’t seen any indication that special consideration is being given to Slack or other big brands.
Very poor choice of words, it's their walled garden, nobody's holding a gun to your head to go there, especially since Android's walled garden is growing bigger by the day while Apple's one is shrinking.
Here is a better choice of words: "-Let it shrink, I couldn't care less".
As a freelancer I always say to my clients they have a choice of whatever they like between big 4's (Win/Droid/iOS & MacOS/Linux) but in reality I do it quietly on Win and Droid 1st, then during the final stages I kinda forget about the other 2. If any of them is asking, I have other means to stop them going there. I don't like Apple and I don't like Linux. Apple for reasons including those in the article as well plus more, and Linux for their snobbish. Until both of them will act pro-customer and non-anti-developer I will be against them as well, and I am not the only one. There is a reason why Win is king in desktop (backward compatibility & pro-developer) and Droid is king in mobile (non-anti-developer, though lately Google is kinda of following in Apple's footsteps here). And I know I am not the only one with this mindset.
Apple charges an arm and a leg for its hardware ($25 per GB of RAM, with vendor lock-in via solder, 400% markup over every retail price, and similar for SSD), so they don't want any software wasting that precious power and capacity.
Yes, it is bad for non-wealthy power users, but that's never been Apple's market.
Fortunately for us, on the hardware side, Apple has been making shoddier hardware (soldered components, broken keyboards, missing Esc key), while Dell and LG and others have been improving their premium lines.
On the OS side, Apple and Microsoft have been working hard to close the quality and power gap, with Microsoft shipping Linux on Windows and investing in Open Source, and Apple trying to turn their machines into iPads and Adobe boxes.
It's hard to dig through the clutter in the PC side, but if you are willing to research and to pay close to Apple prices, you can get great Windows+Linux machines from Syatem76, Dell XPS/Precision, LG Gram, Lenovo, and others.
That said, I spent a significant part of my career writing cross-platform SDKs, and am quite aware of the business case for hybrid apps. I think there are many places where they make a great deal of sense.
In fact, just a couple of days ago, I suggested that a developer replace a set of apps that I wrote in Swift, along with a powerful SDK, with apps written in Ionic, because I thought that the use case made sense for that.
I just like writing fairly restricted-domain, local apps that are optimized for the end-user, and that often interact with devices, so using hybrid apps doesn't really make sense for me (they are optimized for the developer; not the end-user).
How about a progressive web app? That's what I do for Apple apps.
Sure, it's just a web app but most apps need an internet connection anyway.
I know there are some drawbacks, but you can work around it.
Which is fine, but if I'm looking for an application in the app store (as opposed to looking for some service on the web), I want a Mac application, not a web app.
One hint: if I'm looking for a Mac app, there's a good chance one of my requirements is controlling the data the app generates.
It seems apps have to honor the (battery preserving, e.g.) appstore rules, plain and simple.
That said, the fact that _some_ web-based technology apps don't does NOT imply the title of this post.
I'm just a humble independent software developer so I can't really target every platform 100% so having cross-platform code is really nice.
Unfortunately, every platform seems to want to screw you over somehow. I've written about this on our blog before:
https://getpolarized.io/2019/02/28/dear-app-stores-dont-bloc...
https://getpolarized.io/2019/04/05/Google-Will-Kill-Chrome-E...
Even CREATING the MacOS build for MAS is such a pain that I gave up. I tried going to the Microsoft Store but that also was a nightmare.
Every platform has hurdles and roadblocks designed to screw over developers and bring more money to Apple, Google, Microsoft, etc.
With Microsoft, for example, you HAVE to use their monetization platform. You can't use stripe.
With Google, they seem mostly just incompetent and not directly malicious.
The discussions on /r/androiddev are enough to scare you to NEVER build an Android app.
Have a business making 7 figures on the app store for the last 5 years? 10k revies? 5 stars? Not anymore. They just killed it and they won't tell you why.
Or someone files a trademark in a 3rd party jurisdiction and you lose your app entirely.
Then there are the big boys like Uber that just flat out ignore the rules because they know Apple won't remove them.
OR.. I could just bypass the app stores entirely right? Just distribute my app on my own site. Don't play these games.
However, now I've basically abandoned a massive source of users.
If you've never built an app and experienced how hard it is do to customer acquisition you're NOT going to appreciate how much of a challenge this issue is for ISVs.
Some apps simply would not exist without the app store distribution.
Getting featured by Apple could make or break a company. Just getting featured ONCE could mean the difference between your startup succeeding or failing.
... but they won't feature you if you're not in the app store. They also won't feature you unless you really do EVERYTHING they say including completely tailoring the app for their platform.
Looking at you - Slack, Todoist, Monday.com. Your apps are very bad (and your native apps are Electron lies!)
The fact that Apple are rejecting apps that break the guidelines (even if not consistently) is proof enough that guidelines can be iron-clad rules in certain cases. It depends entirely on the context and the authority setting them.
And that's where I stopped reading. Apple doesn't give a toss if your app is cross platform. Frameworks that started back in the day like phonegap have matured into things like Electron, and the core problems are the same:
They run like crap. Animations are jerky, oftentimes the app simply "refreshes" when things go too far off the rails. This is a poor UX.
The apps are not able to adapt to newer devices without additional work. For MONTHS after the release of the X, looking at the Spotify app on it, the controls at the base of the screen were below the multitasking gesture indicator. If this app was built with AutoLayout as Apple encourages, this would've never been an issue.
I know, instantly, when an app I've downloaded is using web based cruft, I can catch it at a glance with the first tap, and the first slow interaction begrudgingly kicks off. Yep, it's a web-based one, and no, I will not be keeping it unless I have no choice to. Unless it's critical in some way, it's gone.
Apple outright banning Electron-powered crap is the best reason I've heard yet for buying my new iPhone.
They seem to have some incentive to make it harder for you to switch platform. By restricting developers from using some of the common tools to build cross platform they are able to build an ecosystem that's harder to leave.
Pure monopoly means single supplier, but companies having monopoly power where they have the ability to increasingly behave independently of competitive pressures is more common. https://en.wikipedia.org/wiki/Lerner_index
Apple should be forced to stop these anticompetitive practices.
Your line of thought only works if the developers are the customer- they are not in Apple's case.
Your line of thought is the narrow "Chicago School" thinking Robert Bork in the US in the 90s where the sole focus is on the benefits to consumers and overall efficiency.
One of the reasons why Google Chrome enjoys its monopoly is because Apple does a terrible job with its browser Safari. Terrible. I mean it's a train-wreck! Since iOS 10 or probably little later they have done nothing but destroy how the web apis are supposed to function, abusing every single accessibility guideline into something that is at best a line of defense to promote their app store.
I hesitantly moved away from iPhone X to Android Pixel last month.
Chrome on the other hand... well, it's Google, one of the largest purveyors of advertising. If you don't think Chrome is watching you, I've got a bridge to sell you.
Maybe it’s telling the truth when it says there are security concerns?
If they allow alternate app store or browsers then yes apple is bold. Until then they need to consider their bottomline which requires sometimes bowing to China as well!
Microsoft only sells adware. Google is spyware (and crapware). Linux tablets don't even exist.
Apple focuses on compatibility, user experience, performance, hardware, ease of use (yet still useful for power users). Sure it's been dropping the ball a bit in the past few years, but it's still lightyears ahead of any competitor.
This word is not present in the post you replied to. I said more difficult - and forbidding some cross-platform libraries certainly has that effect.
The rejection of private keys used, by frameworks, is in no way new (2009 [1]) or misunderstood.
I find it very difficult to understand why Apple is getting any blame/concern for enforcing the violation of a very very old requirement.
[1] 2009, https://stackoverflow.com/questions/1773615/apple-and-privat...
> The reason this has become news recently is the creator of a framework used by several apps used a private API, so when developers who included his framework updated their apps, they were rejected
What’s old is new.
Of course Apple is working with game engine makers to support Metal, because otherwise those engines wouldn't export to the Mac. Gaming is still a Windows-centric activity, and it's mostly because of cross-platform game engines that indie designers have started to say, "yeah, I'll support Mac/Linux as well."
As an OS maker, when your choice is between having an app not come to your platform, and having it come because you contributed to a cross-platform framework, you opt for the cross-platform framework. But I'm not sure that proves anything. Literally any intelligently run company would push for compatibility with a more dominant platform.
Even a company like Oracle will push for compatibility with dominant competing product offerings; at least until Oracle's offering gets big enough that the compatibility is no longer in their best interest.
Even with games for mobile platforms iOS is dominant once you consider where all of the paying customers and high end hardware is. What hand developer if mobile games is going to target the relatively small number of high end Android phones? The ASP of S droid phones is something like $250. Most Android phones out there are low end.
A lot of this comes down to monetization. There are more Android devices out there than iOS devices, and more apps on Android. So is Android a better platform? No, the distinction is that iOS users buy apps, and Android users don't.
So if you're not trying to build an ad-supported, microtransaction-fueled experience, iOS is just a better platform to release on.
Similarly, the web is a very powerful distribution network for online apps, but there aren't many good ways to make money except via advertising, Patreon, and SaaS. The apps being sold on the Mac App Store mostly don't fit into those categories.
That means as a developer, if you want to build something that just works, that you just charge money for, that you don't need to host on some kind of remote server, or manage accounts for -- the web becomes a much less attractive platform.
The question is, once you decide to look at native, do you first look at Windows or Mac? I think that depends on what kind of app you're trying to build and who your target market is. For desktop games, 9/10 times you target Windows (which is why Apple cares about cross-platform game engines). For an app like Robomongo, I dunno. Maybe the economics become more interesting -- I'd be curious to see the revenue breakdowns for an app like that.
Interestingly enough, the lack of (well-designed) PWA features are one of the big reasons why the web is still not particularly attractive for certain classes of apps. (You can't store information offline in an accessible format, your webapp breaks whenever the browser cache is cleared, you can't make arbitrary cross-domain requests). I'm not a conspiracy theorist, and I don't see strong evidence that Apple is trying to kill the web. But it's not necessarily a crazy idea in the abstract, because I don't see the web as a dominant player in that space, and I don't see any economic incentive for Apple to care about making the web into a dominant player.
To be locked into Apple’s software means buying Apple hardware.
Do they control all the PC sales?
An Electron app is a web site shipped with a browser. Last I checked both browsers and websites still work on Mac.
All the real invention of value is still open and useable.
One customized way of packaging it all is not.
This is whining about a business model being upended by a technical decision.
Apple has not locked their platform to open technologies. Just their privately owned & operated market place.
> The trouble is that most managers only think about strategy one step at a time, like chess players who refuse to think one move ahead. Most of them will say, “it’s important to let people convert into your product, but why should I waste my limited engineering budget letting people convert out?“
I see this every day. People are much less likely to adopt Apple-only services than, say, Facebook and Google services that they can use on all of their devices and with all of their friends.
[1]: https://www.joelonsoftware.com/2000/06/03/strategy-letter-ii...
How is it any of Apples concern if I want to make the ugliest most useless app ever? If people love it, and everyone wants it, isn't that enough reason to sell it?
That's not to say everything on the App Store is great, of course, but it's a hell of a lot better.
Edit: Upon further thought I should really go further with this: The quality of the App Store is part of the marketing of iDevices. This is why Apple's app review process also looks for things like apps that crash too much, apps that run slowly, apps that are burning through system resources, on and on. It's why you generally won't have an app on their store that will, for example, destroy your battery, or games that show you ads every 15 seconds.
I know the attitude on HN generally prefers freedom over curation, and in many ways I'd agree, but when it comes to the walled garden Apple provides, sorry friends, I just like being here.
Edit's edit: In fact, I can even take this one step further: this is, I believe, part of the reason iOS users are far more likely to be willing to PAY for their apps: because Apple checks them at the door. And sure, quality isn't guaranteed per say, but at least you know someone is trying at it. You can be assured that this app isn't going to damage your device somehow, and you can be reasonably sure that it's going to do what it says on the tin, at least competently. And if not, Apple has your back with refunds, too.
But does everyone agree with Apple's decisions on what is bad UX?
There isn't a single app on my phone that's junk.
I also didn’t say there weren’t any proper apps in the google play store. I said there is lots of crap in there. I also didn’t say that stock apps of all vendors are crap. Obviously file management and email were examples. You can apply my statement about general quality of android apps to practically any app category. There are so many half baked, proof of concept, abandoned hobby project, malicious data hoarding apps on the google store that you waste lots of time looking for something that can do something that should have been solved already. It is hard to filter through the crap.
Everything I've learned about UX is that a spreadsheet will solve tons of problems that it's the worst interface for. Yet that is what people often want.
This article is about the Mac App Store.
I do maintain that the parent's poster takes joy in deliberately ignoring that apple obviously has incentives around building their ecosystem, but yeah, that was dumb.
If Apple wants to have exclusive content on their platform, their not going to worry about small time developers who can only write iOS apps, they are going to fund the development themselves - see Apple Arcade.
They care much more about the big name developers like Adobe and Microsoft bringing their apps to iPads - even if they don’t see one dime of revenue from the subscriptions to encourage people to buy top of the line high margin iPad Pros with all of the accessories.
This is an outstandingly silly statement. If I followed your example, that's where I would have stopped reading your comment.
Apple's entire business is built on trying to capture users, keeping them using all and only their computing products. Some aspects of this overall strategy (making beautiful devices that people want) are positive for customers. One of the less positive parts, discouraging cross platform software, is an essential part of the overall strategy.
That is a patently ridiculous statement.
Apple would obviously prefer you write apps for its platform only, but as long as you don’t _defect_ to another platform, why would Apple care whether an app you use on its platforms is written in one language or another? If an app you want to use is available for its OS, it makes you that much more likely to start/continue using Apple products.
If it’s written in JavaScript, Swift, Python, or COBOL is irrelevant; what’s important is (a) that the software runs on macOS or iOS, and (b) that you don’t get a better experience elsewhere using the same app—because that _will_ likely lead to a user switching away from Apple’s products.
Because they want to hold people exclusively on their platform for upgrade & services revenue. They obviously have no scruples about the means. The more difficult it is either to use devices on various platforms, or to migrate away from Apple entirely, the better for Apple.
Yes, so would any vendor, if there's more money to be made by keeping people in your sphere. I mean, there's a reason that movie theaters and restaurants don't let you bring food from the outside. They want to be the exclusive provider of food and beverages in order to increase their revenue, so they can charge you $5 for a Diet Coke that might cost you $2 at the corner store.
But for Apple, it's a calculus: does Apple make more money at Thing X by keeping it open, or by keeping it closed and potentially reducing their customer pool? Where there's more money to be made in openness, in a way that aligns with Apple's other priorities, they'll be open. If there's more money to be made in keeping it closed, they'll keep it closed.
For example, I'm so glad you mentioned services revenue. Apple TV, at least the software portion, is now shipped _from_the_factory_ on smart TVs made by Samsung, LG, Sony, Vizio, and a handful of other vendors, as well as Roku and Amazon Fire TV. Apple Music has an Android app on the Google Play store that is kept up to date and integrates nicely into the Android OS, and actually holds a 3.7/5 rating (surprising considering how many Android fans review-bombed it in the early days simply for being an Apple app).
If Apple really wanted to "hold people exclusively" to their platform, none of those things would be available outside Apple products. There's more money to be made on services outside Apple hardware than there is in keeping those things exclusive to it.
> The more difficult it is either to use devices on various platforms, or > to migrate away from Apple entirely, the better for Apple.
The better for any vendor if it's harder to migrate from that vendor to a competitor. That's what smart competitors DO, is make it difficult to leave. Your argument is that Apple should make it painless to switch away from Apple--so let me ask you, what _benefit_ does it incur to Apple to make it easier to switch away from Apple products or services?
If your entire argument is that Apple should do whatever it takes to make customers lives easier, then my response is, that's not a bad perspective to have, but it's unrealistic unless all aspects of the industry adopt the same attitude. If Apple makes it easy to leave, and the Googles, Amazons, and Microsofts of the world continue to make it easy to capture customers and difficult for them to leave, then there's zero benefit to Apple for being the pioneer in this new world order.
Rubbish. They can easily do both, and there's an existence proof that they do.
> Your argument is that Apple should ..
I didn't argue that Apple 'should' do anything. I just described what they do, in the real physical world, actually do.
Why not let the consumer decide of they want the app on the phone they bought vs letting Apple decide?
Maybe but they sure as hell don't make it easy for cross-platform software to target their platforms. As far as I'm concerned, the only feasible way to target Apple platforms at this point is to:
1. Buy a Mac so you can officially run macOS and Xcode.
2. Spend $99 every year for an Apple developer license.
3. Spend the time to learn Swift, a language which despite being touted by Apple fanboys as being cross-platform is basically useless unless you're targeting the official Apple APIs.
4. Learn and stay up-to-date with Apple's ever-changing APIs (just wait until Cocoa and Cocoa Touch are completely deprecated in favor of some other API that is only accessible via SwiftUI... calling it now)
5. Keep up with Apple's ever-changing policies around what and what is not acceptable within their walled garden.
6. Give 30% of your profits to Apple.
Fuck that shit. Look, I don't use Electron applications as a general rule and I do agree with your gripes about "web based cruft". But at least it's possible for developers to learn that cruft and use their knowledge to write software without spending a ton of money and having everything they know be limited to Apple's walled garden. As much as Hacker News loves to hate on JavaScript, guess what? It's free and accessible. Anyone in the world can learn to use web based technologies to build software and enrich themselves (and maybe even others). If you're writing software for Apple platforms, you're only working to enrich Apple's ecosystem and investing your own time and money to do so. Maybe it's just my Linux / FOSS fanaticism but this perspective toward software development just doesn't resonate with me. I want anyone who wants to use the software I write to be able to use it, not just Apple's customers.
You don't have to use Swift as there are plenty of alternatives many of which run on Windows or Linux. So in theory you could do all your development on a non-OSX platform and then just use one of the Mac hosting providers for CI/CD.
And you don't have to give Apple 30%. Just notarise your app and add a link from your website.
I'd use an application written in Java or one built with a cross-platform GUI toolkit like Gtk+ or Qt in Windows or Linux. I wouldn't in macOS and most users won't either. They're ugly in macOS. They stick out like a sore thumb. It's not that it's impossible for a cross-platform approach to produce an application that is nice to use in macOS, it's that there is technical debt in the libraries and frameworks that attempt cross-platform and usually it's a failure to keep up with the constant changes in the Apple ecosystem. A few years ago Apple removed support for OpenGL so now if you want to write 3D applications you have to use Metal. Thankfully, there's MoltenVK so if you want to target multiple platforms you can use Vulkan but how do you know that approach is sustainable? MoltenVK only uses public APIs so its safe to use for the time being. That said, any number of decisions Apple makes moving forward could potentially rule it out as a viable option.
> And you don't have to give Apple 30%. Just notarise your app and add a link from your website.
That's a fair point although maybe not the best UX for all purposes.
I think listing “need to learn to program” as a negative prerequisite of “want to build apps” is somewhat disingenuous.
I'm not angry although I am somewhat frustrated with some of the fragmentation that exists in software, especially when so many on Hacker News are quick to dismiss projects that try to bridge that gap. I understand why Electron is hated but why isn't there a better alternative? How many attempts have there been at providing a good cross-platform UI toolkit that can build applications which look and feel "right" on the platforms they target? Gtk+, Qt, WxWidgets, etc. all suffer the same fate over time and a lot of it has to do with growing technical debt as a result of endless domain-specific iteration. New UX patterns to account for, more OS-specific APIs to learn, etc.
Compare Apple's strategy to that of Microsoft. macOS Catalina has this new feature called Catalyst which lets you run apps written for iOS on macOS. Very cool although you'll have to write your app in Xcode which only runs on a Mac and that app you wrote won't run on any other platform. Meanwhile, Microsoft maintains a free IDE that works on all of the major operating systems (Visual Studio Code), they let you easily set up a Linux environment in Windows using WSL, they're focusing on languages like TypeScript etc. With how profitable Azure is for the company, it makes sense the company is not interested in locking you into a Windows-only world. In the same way, I'm not surprised that Apple development is so specific to the Apple ecosystem.
> I think listing “need to learn to program” as a negative prerequisite of “want to build apps” is somewhat disingenuous.
If you think "need to learn to program" and "need to learn Swift, Apple-only APIs, etc." are equivalent, then you're the disingenuous one.
The article is about the Mac App Store, not the iPhone App Store. Not suggesting Apple's motives is "a good thing" but lets be accurate before going off on one.
However, whenever I see an Electron app in the wild, those optimizations don't seem to be done very often. Perhaps it's the fact that companies don't care about speed now that computing resources are cheap, or that companies are hiring web devs for desktop applications, but in the wild most applications sure do end up feeling like someone installed a buggy second copy of Chromium onto my machine.
Visual Studio Code is an example of an experience that feels like it might as well have been written in a language like C# or Java. With some extensions the lag quickly becomes noticable, but as far as text editing goes, it's a pretty nicely optimized tool. In my experience, typing in VS Code is slightly faster than typing in Jetbrains IDEA/etc., for example, which is based on the more desktop-oriented Java.
Of course it will never be as fast as Vim or Notepad++, but those tools are harder to extend, which can make the disadvantage of the slight input lag worth it for the extra functionality when debugging or running automated tests.
Electron can be a useful tool for writing maintainable, extendable, cross-platform desktop applications. It can also be a handicapped browser. While most companies choose to use it as the second option, this doesn't have to be the case.
However, performance is not a “pit of success” feature with Electron, and Electron doesn’t exactly advertise that performance requires explicit effort, so it’s fair to put some (not all, but some) blame on Electron for implicitly encouraging the perception it is a “silver bullet” solution for cross-platform apps.
And expect us all to gift them the CPU, memory, storage overhead of their preferred distribution model.
Discovering Mac apps is quite a bit harder than Windows given the difference in market share. So the Mac App Store will be disproportionately popular.
As a user, I don't use it because I don't want to give Apple more information about me, and I will regularly find Mac apps online that don't have a download/purchase link -- they just point to the app store. It's at least popular enough with devs that avoiding it as a user is a pain.
A great example is the beta of Apple Music - it pushes the state of the web forward by embracing Web Components, ES6, modules and more. It's probably one of the most modern websites out there at the moment. And Apple Music is serious business to Apple's whole ecosystem. If they were trying to kill the web, they would have just remade the old iTunes client.
It's not a "recent policy change", it existed since the App Store was created.
>The Mac App Store has quietly started rejecting apps made with a popular tool called Electron that allows developers to base all of their apps on the web-based code. Some of the most popular apps in the App Store, like Slack, Spotify, Discord, and WhatsApp, fall into this category.
We can only hope they are remade with proper native technologies, to save out batteries and performance...
My company uses react-native for iOS and Android, and it works pretty well. We sell a web product, but for certain use cases our users need to be able to use a phone or tablet without internet connection.
I'm really surprised Apple's not cracking down on react-native yet. I wonder if it's because they don't want to get in a fight with Facebook?
Why is this surprising? React-Native uses JavaScriptCore, which Apple has promoted since long before iOS or any of their App Stores even existed. Apple isn't (AFAICT) rejecting any apps for using JavaScript under the covers.