Safari is the new IE
fabiofranchino.com
fabiofranchino.com
What is especially frustrating for web devs is that all browsers on iOS are Safari underneath. We have to deal with those weird bugs and missing features the same painful way we dealt with IE, hence the title of the article. Saying that it's not as bad is not the point, IE 11 was also not as bad as IE6, we still had to deal with its quirks.
In IE times, it was the majority browser and web shops were complaining that they were developing on less popular platforms (typically Firefox, and Netscape before it) and then ranting about how IE did things differently. Had they developed for IE all along with an aim for compatibility with FF, they'd have done things differently and, in many cases, compatibility wasn't that hard if you targeted lower common denominator - that is, a few earlier versions of each browser.
Sure, you'd miss out on the latest browser features, but that's not what web dev was about then. Rather, it was - depending on the shop - about making a site work on all platforms, or about making it work on IE and to hell with other platforms - with great despise from the rest of the community.
For some reason, things changed in recent years. Chrome is now dominant, and for whatever reason developing against its latest version has become the new normal, with web shops complaining that other browsers aren't keeping up fast enough, and no echo chamber to counter that discourse by pointing out that "hey, why aren't you targeting older browsers to begin with?" In case it needs reminding, iOS 7 is from 2013 and iOS 5 is still running on 2010 devices. That's only a few years ago. For comparison, we coped with IE6 for well over a decade, and XP (from 2001) only recently got deprecated.
But in some ways current situation with Safari is worse. With IE you could at least say "download a proper browser if you want proper experience" (if you had the luxury of not being in servitude to your visitors). With Safari it's more like "get a proper phone", which is far from costless.
On the bright side, Apple is also hurting themselves with this approach. Missing a good browser will only speed up the decline of iOS.
Here is an article from 2015 http://www.businessinsider.com/apple-safari-web-browser-is-b...
Maybe some Apple devs downvoted my post :-)
Apple could make a browser that has all these features (where APIs are slow to being adopted on sites that users most use, low impact) or they could keep investing in iOS (where APIs are mass adopted from day one on apps used by hundreds of millions, high impact).
Investing in iOS attracts more customers and buy in to its products and services. Investing in Safari is not a key differentiator for their business and rivals will be able to easily implement the same features. Apple is smart not to play Google's game.
If Apple were to engage in this, the browser now becomes a selling point of the phone. Apple goes from iOS/iPhone company to Safari company. They give away their offering/unique selling point that no other company has, along with their massive advantages as a market leader.
Because their tech and business strategy is more developed in this space (browsers), Google can start acquiring customers at a lower cost than Apple without having to differentiate its core product more than the fact that it has more APIs/features. We see Google already does this to a degree, they market their products more on the feature set rather than the mission and brand.
Web technologies also inherently support Google's business strategy, the more APIs in the browser, the more data Google can collect on Apple's users, the more advanced targeting they can do to swipe away Apple's customers and collect intelligence on what Apple is up to. Do not be fooled, every time there is an API added to the browser, there are teams of people at Google ready to capitalize on it to help drive profits.
It would be a bad, bad bet for Apple to start all of sudden focusing its energies on Safari. As a SWE, it is completely understandable why Apple gives Safari little love, I'm okay with it.
Apple is very consistent with their products: upgrade or else. The only exception really is iTunes, and that's only because not supporting older versions would lead them afoul of merchantability laws for devices.
The Apple approach is not great, but at least it's comprehensible. Try certifying any product or configuration with Microsoft -- you have a minimum of 6 versions of Windows 10 alone, not to mention the various Windows 7, 8, 8.1 and Windows server browsers.
And the thing that bugs me the most about it is that it's tied to the iOS version you have on mobile. Eventually you're prevented from upgrading it because your device doesn't support the new iOS version.
Also one could argue that if Apple did not invest so much in WebKit then chrome would have had a harder time achieving its current usage and would probably be a very different browser than what it is today.
My 2cents
This is deceptive. They purposefully do not support critical features that other browsers do support. As a developer, if there's one browser that consistently gives me headaches, it is Safari.
https://developer.mozilla.org/en-US/docs/Web/API/FormData/ge...
> Also one could argue that if Apple did not invest so much in WebKit then chrome would have had a harder time achieving its current usage and would probably be a very different browser than what it is today.
The same can be said on an even larger scale about microsoft and IE 5 and 6; that doesn't mean in anyway that years later they were not a pain stopping the web from going forward. In other word, I don't see how that has any impact on the conversation at end (neither for or against the point made).
EDIT: Not sure why the downvotes.
Apple invested a lot into Safari (and thus webkit which lead to chrome). Doesn't change in any way if Safari is or isn't holding the web back currently, which is why I say it's irrelevant to paren't countering argument.
And in fact, we have a previous examples since we lived the same scenario with Microsoft who invested a lot into IE 5/6 (and leading into DHTML, XMLHttpRequest, ...), which then definitely hold the web back.
This is, literally, the same argument. I don't see how I can be downvoted for stating that obvious fact unless you think that IE 6 didn't hold the web back after a while.
Thread says "Safari is holding the web back". Parents answers "Safari created the tools that lead to big parts of the modern web".
My answer is: so did IE 5/6. That doesn't mean after a while and for a long time they weren't holding the web back, it's a side fact that has no relevance.
That's really grasping for straws. All modern browsers almost fully support ES6 features. Tail optimization are more controversial because they can actually lead to a performance decrease in some cases.
Far more important are things like custom elements and service workers on which Safari is lagging behind.
How exactly can the tail-call elimination optimization decrease performance?
Sounds more like an implementation problem.
[0]: https://github.com/tc39/proposal-ptc-syntax#performance
How exactly does anyone think that v8 doing something badly, is proof that something cannot be done well?
However, you're asking me to prove a negative. I've given arguments, which apparently you find unconvincing. The people you are disagreeing with (not I) are responsible about 85% of the JavaScript engines on the Internet, an incredibly competitive space with billions in funding. I submit that they are probably neither incompetent nor lazy. (Evidence for "not lazy": the V8 team implemented it and turned it off.) If you are convinced that it's a (presumably fixable) implementation problem, I'm sure they'd love a patch or at least something more actionable than your insistence that they're doing it wrong.
Sure, but at the risk of repeating myself: That sounds like an implementation problem.
> I've heard no argument why the PTC mode should be intrinsically faster than the non-PTC mode
There's a simple one: Hitting the stack less means you hit less memory.
> The people you are disagreeing with (not I) are responsible about 85% of the JavaScript engines on the Internet, an incredibly competitive space with billions in funding. ... I'm sure they'd love a patch
Happy to oblige. I'll implement TCO on V8 for a billion dollars in a way that beats these benchmarks.
> However, you're asking me to prove a negative.
And you're making straw men instead: At the beginning of your response, it's not even clear you read my complaint, but at the end, it's quite clear.
The simple answer would probably have been "yes, it's about an implementation, but it remains unknown where else we can go", but instead you doubled down...
> there's a simple one: Hitting the stack less means you hit less memory.
But I explicitly acknowledge this in my comment:
> (yes; you elide a stack frame at the cost of a whole-function analysis pass -- heuristically, "stack frame" isn't the expensive one of the two)
(Completely ignoring that there are already plenty of optimizations where a compliant interpreter may avoid the stack frame already anyway, so it's not even true that PTC must be faster for that reason.)
You keep picking on V8, but remember that there is so far only 1 major JS implementation that managed to do this without impact. It would seem that it's more probable that it's the other way around: it's an implementation detail that JSC had it easy.
> And you're making straw men instead: At the beginning of your response, it's not even clear you read my complaint, but at the end, it's quite clear.
I'd be happy to address this point, but I genuinely don't know which straw man I've supposedly built.
> > there's a simple one: Hitting the stack less means you hit less memory.
> But I explicitly acknowledge this in my comment!
Not really sure what your point is. If you agree that's an argument as to why tail-call elimination should be intrinsically faster, I'm not sure why you'd say it isn't.
I can't shake this feeling you think you're having a very different argument than I am.
> remember that there is so far only 1 major JS implementation that managed to do this without impact.
Which for some reason you think means this isn't an implementation issue.
I did not put an exclamation mark there, but a colon, pointing out the specific reason why PTC can end up slower.
Is there even a consideration on how these new features become just another tool to spy on people?
To me it is far more important that Apple take its time letting these APIs mature and being reviewed for security and performance than blindly implementing anything that Google demands.
Brave seems promising but doesn't yet have extensions.
(Admittedly I aim to make sites that degrade well and work without JS, so that might be an important caveat in an age of Angular and what have you. Perhaps I'm stuck in y2k and still think a site should render in 0.2s on all but 10+ year old browsers. [Shrugs])
Anecdotally, though, a) firefox diverges further from chrome than safari does and b) the types of CSS flaws don't wven approach the black magic of designing for IE6.
Sure. But isn't developing against the least common denominator precisely what web development has been all about in the past 20 years or so?
Edit: Just to expand on that...
Then, there was a laundry list of web shops that were targeting IE first because "more advanced" and complaining about other browsers because they "suck". And it looked wrong to just about everyone else who targeted other browsers because Microsoft.
Now, we've a laundry list of web shops that are targeting Chrome first because "more advanced" and complaining about other browsers because they "suck". And for some reason those browsers should all catch-up and fast because Google?
This app store first / web second policy served well Apple bottom line. Too bad web developers are paying for it with extra work and this is the point of the post.
Saying Safari is the new IE is like saying Trump is the new Hitler.
Not even close.
Just no.
A) Are not web developers
B) Use macs as their primary development platform
C) Have never had a user using iOS 7 complain that your website is entirely broken and not be able to replicate or debug it because every mac in your office is using OSX 10.10 and Apple have jigged it so you can't run an emulator for iOS <9 and everything on the computer (Except iTunes) refuses to believe the iOS 7 device exists when you finally persuade the customer to bring it in to you.
Demo: https://codepen.io/anon/pen/YxmQdj
Apple versus Google keeping devices up-to-date is a reversed problem on the web: iOS’s web browser updates only with new OS releases, and they don’t come to all devices. iPhones 5 (and iPads 4) will be stuck with that bug forever. On Android you can use Chrome’s latest version if you’re on ≥ 4.1 and Firefox’s if you’re on 4.0. 99% of Android users are.
Even if you’re very aggressive on focusing only on recent browsers for your website, you need to handle Safari bugs for years.
Safari is far from being as bad as IE ≤ 8, but it sure is the most annoying browser when you’re targeting only recent ones.
While Safari lags, Chrome seems to introduce more and more Chrome-isms onto the web.
Just today I changed my Chrome's search engine to DuckDuckGo. Of course, I get periodically politely asked if I am sure that this is my correct search engine setting. <facepalms> As an Eastern European, I'd shut them down the same instant on this basis alone, no questions asked. Shame that we don't run the world. :D
An off-topic for sure but the gist is: Google wants to entangle you in their web. They are just much more subtle compared to Microsoft and thus almost nobody notices. So, less Chrome-isms, please.
As more and more modern iDevices become legacy while still being perhaps "powerful enough", I think we will start to see a persistent population of web users similar to the clan of IE6 users that took forever to shake off.
I don't think that it's fair to say it's going to get worse, in the sense that it's as bad as it's going to get right now.
And it's not too bad right now.
Apple is quite good about support for older devices. For example, iOS 11 supports 4-year-old devices, and that's even somewhat of a special case since it's dropping 32-bit support.
People use iOS devices older than 4 years old, but it's not a huge burden to keep a handful iOS 10 and iOS 9 devices around for development and testing. Certainly, it's a wonderland compared to testing on Android.
Chrome kills my battery. Firefox is way to slow (startup time).
I can deal with little CSS issues but what Safari really needs is Service Worker support.
You just found one incompatible way of doing it.
The US antitrust lawsuit was also about using their desktop OS marketshare, and the bundling of IE with said OS, to drive companies towards using IIS at the server end.
Damn it, Microsoft basically coined the expression "Embrace, Extended, Extinguish". Meaning that they embrace some standard, then extend it with MS specific behavior, then extinguish the original standard via creeping incompatibilities.