To me this is the biggest difference between Safari and IE/Edge. Microsoft provided free VMs that you could download with all supported versions of IE and Edge. So you could test sites and investigate bug reports. With Safari you can't debug an issue without expensive Apple hardware. I was happy to keep my sites compatible with IE and Edge (maybe not constant testing but some manual testing after big changes). However no way I was going to do that work for Apple when they didn't help out at all.
(The Edge VMs don't appear available anymore but since Edge is cross-platform and free it should be easy enough to install it in your own VM or on your workstation.)
Not really in my experience as a primary Firefox dev.
It's easy enough to not use stuff like web USB, and in my experience chrome and firefox "get along" while a page (doing more advanced things) not built for safari simply will not work in safari.
The problem with safari is that Apple makes it so you have to use it if you want your site to work on it. Chrome, I can safely ignore.
I also literally can't use safari if I don't have a Mac.
> I also literally can't use safari if I don't have a Mac.
You should embrace this; this is how the web should be.
I don't mean you need to buy a Mac. Instead, I mean that the web standards effort originally came up out of supporting diversity. There was a wider range of possible clients, on a wider range of "popular" platforms. As developers we had to cater to support diverging capabilities. Progress on API development was slower, but it was more evenly spread out. Today, Chrome lurches ahead of everyone else in terms of API feature count, mostly supporting Google's business aims, and many vocal developers seem to think they should only support one set of capabilities. The slower, broader, way was better, in my opinion.
Yes, exactly. Use APIs that are broadly supported and somewhat settled and agreed upon. There is seldom an actual need to use whatever new thing that just became supported or is only implemented by Chrome… 95%+ of sites and web apps are doing the same old CRUD things that sites and web apps have been doing for decades and work fine with "boring" APIs.
> while a page (doing more advanced things) not built for safari simply will not work in safari.
I've yet to see such a page [1]. And I've been using Safari since 2007
[1] Unless it's built with Chrome's non-standards of course.
Edit: of course there will be pages broken in Safari (or FF) for no reason other than the sheer incompetence of people building them. E.g. we have an internal dashboard page that is literally nothing more than tables and charts. Ooops, "only works in Chrome".
There's also the minor case of nominally open audio and video codecs that Google pushes to device manufacturers on pain of removing access to its services, but even that hasn't affected me, or most people really, that much.
Developers are eating the problems for you because safari support is almost always a requirement.
This is a developer side problem, not a user side one.
> for no reason other than the sheer incompetence of people building them
Safari never breaks, but when it does it's because the developers are incompetent?
The fact it takes a bunch of extra work to support safari (in more advanced cases like graphs and dashboards) is the whole problem. I have every intent to kick safari out of any home game stuff I do.
> You should reconsider your position when your only response is dismissal and insult.
I've been in these threads many times, and it's the same thing again and again:
- Safari is holding back the web! It doesn't. Well, if you think that Chrome is web, then you're entitled to your opinion
- Safari is new IE! It's not. That it doesn't implement the 400 or so APIs a year that Chrome implements is a feature, not a bug. If your site ends up with a "only works in Chrome" badge, that is your new IE
- Chrome split from WebKit three years after WebKit appeared. And the only reason for the split? Well, to do the same thing you accuse Apple and MS of doing: control. And look how well it worked for them. Everything they do is now considered standard and gospel by the gullible masses of web devs.
And so on.
The irony is that it's Chrome that breaks the web often, and badly, but they get a pass because it's Chrome! They have the new shiny APIs!
Unless you have the option to use it for your product then the decision is ship a product using just your web developers and have it not work on Safari/iPads or hire iOS developers and build and maintain a completely separate app.
So it's a 6-7 figure cost to your business that could be saved if they supported that.
That's part of the ECMA standards process, and part of some others; progressing from a certain stage requires a minimum of two major implementations. The chrome team happens to sit on the leading edge of that process, being more willing to experiment. Safari sits on the other end, for better or worse depending on the feature.
> progressing from a certain stage requires a minimum of two major implementations. The chrome team happens to sit
The Chrome team happens to throw something over the wall and ship it to production with no oversight. And sometimes complain that that they cannot hide it behind a flag because people are already using it.
There's no end of people right here on HN who scream bloody murder when Safari (and Firefox) refuse to implement some new Chrome-only API.
> sometimes complain that that they cannot hide it behind a flag because people are already using it
The way this is supposed to work is an origin trial: you ship something behind a flag, and then allow sites to flip the flag for testing and experimentation. But it's well documented that this is a temporary process, some Chrome visitors you get won't be eligible for trials, and it's not guaranteed that features in origin trials will ship. What are you thinking of where they just shipped something, without an OT?
> The way this is supposed to work is an origin trial: you ship something behind a flag, and then allow sites to flip the flag for testing and experimentation.
For something to become a standard they way it's actually supposed to work is for browsers to come up with two independent implementations.
And yet, Chrome frequently ships APIs it calls standard with just Chrome as the sole implementor.
That wasn't the part of your comment I was replying to. You said they sometimes "complain that that they cannot hide it behind a flag because people are already using it", and I was (a) explaining why that's not supposed to happen and (b) asking about where you saw that happen.
Constructible Stylesheets was released despite objections from both Safari and Firefox when it had both badly designed API and an easily reproduced race condition.
WebMIDI allows enumeration of devices without asking the user for permission: https://twitter.com/denschub/status/1582730988118867968 (note this is a part of a whole bunch of hardware APIs that Chrome just shipped, no consensus needed)
"this is a case where we're going from no permission prompt to a permission prompt, I think a PSA and developer communication is a good idea. Other chromium-based browsers may want to know as well, via these channels."
Thankfully, there will be a change. At some point.
===
These are two I know of, that's why I said "sometimes". As Chrome releases 400 new APIs each year, it's impossible to track them all.
In both of your examples they're not saying they "cannot hide it behind a flag because people are already using it":
* With adoptedStyleSheets they're objecting to making backwards incompatible changes, which is reasonable: everyone hates browsers breaking sites. But there are ways to do this safely, like changing the name of the property (as rniwa suggested https://github.com/WICG/construct-stylesheets/issues/45#issu...) and if that were the only issue I think they'd have done something like that.
* With WebMIDI they're saying they want to do an announcement before making the change. (I do think it's nuts how long they're taking to fix this, and if you look on the blink-api-owners-discuss thread you linked you'll see I've been bugging them about it.)
> With adoptedStyleSheets they're objecting to making backwards incompatible changes
Which would not be backwards incompatible if they hadn't shipped something that wasn't agreed on in the first place.
Again, slowly: they literally shipped that to production despite loud and explicit objections from both Firefox and Safari. When asked to hide it back behind the flag, "but backwards incompatible change, the framework we're developing is already depending on it"
I feel like I’ve put so much time & energy into making this feature something sane & useful, and all you did was basically to dismiss many of my feedbacks and go with whatever you like and just ship it. And now you’re saying you can’t make changes because you shipped it?
I’m sorry but that’s just not how standards work.
--- end quote ---
> With WebMIDI they're saying they want to do an announcement before making the change.
Indeed. Once again: because they shipped an API that neither Safari nor Mozilla supported. Now that this issue has surfaced (no thanks to Chrome), they can't just roll it back or fix it because people already rely on this behaviour, which they implicitly acknowledge.
I would happily rather that neither of these happen. For safari not to be a buggy mess/work without extra development efforts and for chrome to have real competition enough to prevent them setting a standard.
I will however, take chrome and user choice every single day over Safari's monopolistic crap.
The mere fact it's largely successful by it's nature of being bundled should scream to you how bad it really is.
> I will however, take chrome and user choice every single day over Safari's monopolistic crap.
That's the problem, though: more and more as time goes on, Chrome isn't user choice. Sites that only work with or only perform as expected under Chrome are becoming more and more common. It's becoming a monopoly too, but enforced by developers rather than a platform owner (though this is muddy with how Google gives Chrome performance advantages in Youtube, Docs, etc), and I'm not sure it's really any better.
> though this is muddy with how Google gives Chrome performance advantages in Youtube, Docs, etc
When (mostly) Chrome came up with Web Components, they immedieately re-wrote Youtibe with Web Components v0 (now deprecated). The polyfill for them was infamously slow on Firefox. Just another ooops in a long line of oopses: https://twitter.com/johnath/status/1116871237240852480
I don't have such a problem with browser makers putting their own ideas into their software. If Google wants to put a Flutter runtime into Chrome, great, go ahead. Where things fall apart is when they prioritize these projects ahead of supporting standards upon which they agreed. Microsoft was free to build and support VML back in IE days. The issue I had was that they refused to support SVG which WAS A ratified standard. So Google creating experiments is just that. They're free to build these, evangelize them and bring these to WHATWG, CSSWG or TC39, or whatever other governing body they'd like. They aren't "creating standards" if these governing bodies do not adopt their experiments.
> So Google creating experiments is just that. They're free to build these, evangelize them and bring these to WHATWG, CSSWG or TC39, or whatever other governing body they'd like. They aren't "creating standards" if these governing bodies do not adopt their experiments.
Then why is HN is screaming bloody murder when other browsers don't implement the plethora of Chrome-only non-standards?
I think this greatly depends on your definition of a “professional environment”.
Also, using non-Safari WebKit for everyday testing (will my newest commit break it? should I fix something before I send the PR?) but using the proper Safari for more thorough testing (e. g. before public releases, or when a bugreport can't be reproduced otherwise) is an option too.
"Want global web compatibility? Fuck you buy a Mac"
-Apple