Progress Delayed is Progress Denied (Safari feature lag)
infrequently.org
infrequently.org
And the leading browser (i.e., Chrome) has not really done anything to solve this problem. While Safari had cache partitioning enabled for 5+ years, Chrome has still to deliver it to users even though it's a clear privacy and security win. Not just that, Chrome repeatedly keeps making decisions that hurt user's privacy and expectations [1][2][3][4].
One simple rule of thumb that I use to compare Safari and Chrome is that Safari cares about users (privacy, gating out APIs that have risk of being misued for fingerprinting), while Chrome cares about web developers (trackers, ads, More powerful APIs). As a user, my expectations align better with the former model. I would be happy if Chrome took a step back, acknowledge user's expectations and focus on progressing the privacy on the web instead of engaging in twitter wars.
[1] https://news.ycombinator.com/item?id=22236106 [2] https://news.ycombinator.com/item?id=24817304 [3] https://news.ycombinator.com/item?id=25337995 [4] https://web.dev/floc/
I had to double check, but this isn’t the case anymore. They shipped cache partitioning in v86.
As an example, I like game controllers and vastly prefer them to touchscreen interfaces for most games. But Apple specifically delayed game controller support in iOS (and in Safari) to encourage developers to make games that used touchscreen controls and worked out of the box without an external game controller. The rationale was: it's a better user experience to not have to use an external game controller, and it's clunky to have to carry a controller around with your phone.
As another example, multithreaded/parallel webasm is a great feature for developers, and it could also burn a lot of power and degrade the overall performance of the system. A rationale for delaying it could be: battery life and overall system performance are more important than performance of a single web app.
At the end of the day, Apple is certainly trying to make even more money, but they are also trying to figure out what the overall best user experience will be across their entire user base. This is not the same as the best developer experience, and sometimes they are in opposition.
Developers, for their part, can vote with their feet. If they truly believe web technology is the best way to deliver apps, then they can develop for Chrome, Electron, and platforms that support the latest bleeding-edge web tech, and ignore Safari.
Unfortunately you can't ignore Safari on iOS though, Apple only allows WebKit based browser, which makes any browser on iOS just a skinned version of Safari.
Over the past few years, I have been for real disappointed that Safari did not support: Vibration API, Push API, ResizeObserver, AudioWorklets, and on and on.
And then the product people say, quite reasonably, "Well, I guess we'll just need to build a native iOS app and pay the 'Apple tax'". Over which I don't think Apple are shedding many tears...
It's fine if they want don't want to implement everything.
The point is that if they don't get to simultaneously say:
1. The Web is a viable way to compete with native apps (which they explicitly said in defense in a current court case). 2. While not implementing features necessary to compete. 3. While not allowing anyone else to build a browser for iOS that implements the features necessary to compete.
Some counter points:
1) What's an "important feature"? Whatever Chrome/Blink rushes to implement on Google's whim, and if often only a "standard" because Google designed it and pushed for it on W3C and co?
2) There are more than enough features to make most kinds of apps already. The more advanced features mentioned (like webcamera support) are all available in the native SDKs, and are more about full blown applications than about webpages. Where does it end? Do we have to replicate or at best wrap the whole native functionality and run it with several layers of indirection (DOM, JS, the browser backend, over html, etc)?
3) Android allows for web-based apps and alternative browser engines. How do those fare? Overtaking regular Android apps any time soon by any margin? If not, why would they on iOS?
I, for one, don't want to use web apps on my mobile phone. If I had the choice, I'd probably prefer not to use Electron based apps on the desktop either...
The point is that Apple's policies don't allow other browsers to actually compete on their platform. So users don't get to make the choice. All browsers on iOS have to be WebKit based by explicit policy that's the issue at hand.
It sounds like you like the default choice, and that's great for you. But if it's truly better, they shouldn't be scared to allow users to make a difference choice for themselves, no?
If Chrom(ium) is going to win on Mobile, Google will basically dictate the W3C and that will end very badly. Id already ended very bad once, when IE was „The Standard“.
Apple's tight control over browser engines on iOS seems like the lesser of two evils to me. My impression is also that Apple and Mozilla have been actings as checks on Google in W3C and other standardisation bodies e.g. John Wilander[1] from Apple/Webkit.
Say you are in myCity.gov and you have a website that loads dashboards. These dashboards are iframes that come from anotherDomain.gov, thirdDomain.gov. Well, in Safari they're not going to load because iframes no longer send cookies back to their parent origin unless the iframes are a subdomain of the parent domain. They just broke a thirty year old web standard. That's a massive breaking change introduced by Safari, that makes many corporate intranets and cloud-based delivery sites not load properly in safari. And has nothing to do with not supporting a new vibration API. This is basic old school web semantics that Safari has been breaking right and left because they can't conceive of the internet as anything other than a content-marketing platform.
The web is now used for pretty much everything, and large swathes of it don't load properly on Safari. They don't care, because people mostly use Chrome on the desktop and Safari on their phones, and people have come to expect apps for the content delivery on phones. But this drives the bifurcation further, and solidifies the chrome-only nature of many websites because they are not going to remap their domains to something Safari will approve of in order to get iframes to load properly.
> This is a reasonable feature to exist on the web platform
Not really? [1] indicates that notification prompts actually result in users navigating away from webpages clearly demonstrating that this is a user hostile feature.
[1] https://blog.nightly.mozilla.org/2019/04/01/reducing-notific...
I appreciate that `gap` is finally supported in the context of `flex`. I appreciate that WKWebView finally supports `getUserMedia`. The compatibility lines in the graphs from TFA are not totally flat, it's true.
But still -- Apple, one of most well-resourced companies in the world, lags far behind Mozilla, a modest non-profit.
And "just make mobile apps" is not the answer here. There are many situations where a web application is by far the better choice for a company or a product. It's really a shame too, because Chrome could really use some competition.
- The DOM is very slow/ inefficient and has a terrible API, basically owing to the mutable, object oriented way of thinking about stuff
- Splitting up work into a WebWorker is a hassle and so it is much less useful than it could be
- There are no spring/ physical animations in CSS, so if you want pretty animations, you have to hack it together using JavaScript, CSS transform or SVG animate etc. There is basically no simple framework or library that does this in a simple and efficient way, so most of the web has the basic "curve" animations and not the accelerate/ decelerate animations modelled after a physical (dampened) spring...
- It is very hard to query the progress of CSS animations and mostly you have to just guess
- many things in the browser have a terrible API that obscures the problem and feels almost like a very special language most of the time e.g. the "History" API that actually manipulates the present and maybe creates new history as a side effect of that but has nothing to do with the history of navigation on the website/ you cannot e.g. just list the entries (not even just limited to the same origin or something like that for privacy).
- spell check is totally broken, if you want to prevent blinking, if you want to somehow manage the suggestions in the app and much, much more. E.g. it is very hard to write a Rich Text editor and basically this leads to duplication of effort everywhere, where you want to provide a good user experience without graphical glitches
- there is no int64 in JavaScript leading to all sorts of hacks a correctness problems because of these hacks, there are other similarly bad language features leading to all sorts of problems (e.g. == and === comparisons and much more)
- E.g. in Chromium, it is not clear, how search is detected on a website (without going through the massive codebase obviously). There are known bugs sitting in the bug tracker for like 7 years without progress and that is just stuff I have seen.
In general, the web seems to be missing quite a bit of rigor and feels like a hodgepodge of technologies mostly lacking in any kind of overall design and discussion about usefulness. It definitely is rather a very busy and dirty bazaar after a fire instead of even the building site of a cathedral.
There are thousands of other things that are a problem with the way web "standards" are written and implemented by browsers. Safari is a problem, but the whole discussion should a lot more focused on the origins of the problems and solving the issues methodically instead of focusing on just a broad and problematic, but single manifestation of it.