People don't write C++ and think about the standard, they write C++ and see if it compiles.
Should they operate this way? Of course not.
Are you going to change human psychology and cause this to happen anytime soon?
Nope.
If you want them to change, you'd have to provide a reason it matters, and very abstract long term notions of "goodness" are not gonna cut it for most developers, for better or worse.
But if that gets fixed, they go back to not caring... until/unless the pain rises.
But in general I agree with you.
> People don't write C++ and think about the standard, they write C++ and see if it compiles.
Yep, you not just have to provide a _reason_, you have to provide tools that fit into workflow as efficiently as conveniently as that. (Ideally, that's a (in this case) compiler that's standard compliant!)
Even if you develop for Chrome, Firefox and Edge you'll just end up building workarounds for all 3, not adhering strictly to the standard.
The standards are a single source of truth for your production, if you build solely to a single browsers quirks (in this case Chrome) then those quirks can change at any time.
I still fix FF bugs when they come in (it seems to be a bigger offender than IE recently) but developing for Chrome first is the only approach which makes business sense.
It adds very little extra work with the advantage of surfacing edge cases/issues that might have bitten me even if it was just Chrome in the mix.
Also from a business risk point of view tying the entire platform to a capricious vendor is dangerous and I've been around long enough to remember the days of IE5 then 6.
Once bitten, twice shy.
A web developer codes against real machines, not the imagined, idealized, and non-existent machines the specs describe.
Regardless of browser matrices, it is the will of the developer to support the open web platform that made sure that Internet Explorer and thus Microsoft didn't own the web (browser) in the 2000s.
Anecdotally this point of view has done no harm to me and I'm not the only that shares it.
The reason web developers care about those customers varies from dev to dev. Some believe there is value in a heterogeneous ecosystem of browser implementations. Some have a few high-value customers who refuse to switch (or, in the case of e.g. Microsoft, cannot switch because enterprise constraints are restricting what browser stack they're allowed to run).
But the point stands that when you support multiple browsers, you don't approach ideal user experience (in terms of performance and reliability) for all your customers by throwing your fingers in your ears and proclaiming "That browser is out of spec!" when you find a quirk---you do what you have to do to make your code run on, around, or in spite of the quirk.
Writing to support one browser first was exactly what got everyone down in the deep hole writing code for IE only to find that it didn't work the same in Firefox and Chrome early on.
Also the Dev should be well aware that anything they write to support quirks could well be invalid code such as IE conditional comments.
And then what?
> And then what?
Build to standards first, then accommodate quirks last.
Building to Chrome first is just building to its quirks, and totally forgetting about standards.
"Write HTML, test on Chrome" - what people do in practice - seems to fit "build to standards first, accommodate quirks last" just as well as "build to Chrome first".
I just write standards compliant ES6 code, put it through a transpiler and some polyfills, and my code runs on every browser. I haven't had to think about which browser I'm targeting for years.
... but you can (and I'd argue in a lot of cases, looking around at the overly-complicated sites on the web, should) write a lot of fully functional web pages by keeping to the standard and trusting it's good enough. We are no longer in the bad old days where IE and other browsers deviated significantly---most of the browsers today adhere closely to the spec, and in the places they don't, it's often more like one browser handles a nasty corner case better than another because the browser built an optimization in for a critical path your page layout cares about.
Is there an "objective" test for standards compliance these days, like the good ol' acid test was for the box model? I agree with this sentiment, but only anecdotally - I'd like to see something concrete to back it up.
ie. Chrome
Except that web apps are easy to make OS-agnostic and always have been[1]. If your webapp isn't, that is because you chose to make it that way, not for a technical reason.
Pretending that's OK because these other things have to be that way isn't going to convince anyone, but you can get away with that for enterprise-development or captive audiences. Just don't try to gaslight people. For me, I'm just going to close your site when it breaks and not come back. Seems that tradeoff works for you too, so that's good, at least.
[1] Sure, that thing that never caught on, and IE6. Thanks.
Firefox has developed Container Tabs, First Party Isolation, integrated Tracking Blocker, an early alpha for a password manager, Screenshots, Firefox Sync, DNS over HTTP and eSNI, not to mention that Mozilla lets addons do much more with the browser so an addon can really change how your browser works instead of being severely limited in what it can do.
For everything else there are network protocols, native apps and scripting.
Blocking ads, should be done at the network layer.
as for addons changing how my browser works - no thanks, i'd rather have a consistently nice browser experience than have to re-install addons everywhere
Houdini allows for low level control of CSS rendering, basically it allows for creating CSS classes with our own paint methods, and in the process having lower level JavaScript concurrency using less resources than workers.
I may not be rolling the latest features like WebSockets but I very rarely come across incompatibilities anymore. IE remains the biggest issue and honestly a lot of those are removing hacks and workarounds on older sites as after about IE9 they started to catch up with support.
Most of the "incompatibilites" that I fix are actually when our Junior Devs are using CSS attributes incorrectly and they've hacked their code until Chrome mostly works. In this era of Bootstrap it's not uncommon for developers to just throw CSS at the problem and 99% of the time that's what's caused the issue in the first place.
15 years later and we're stuck with old corporate sites that require IE6 and activex.
Linux, macOS and Windows aren't variations of the same OS APIs.
That's me. Sorry, but I just can't be bothered to support every browser's quirks. I check Firefox every once in a while, but really, I don't mind losing a few users if it means significantly less maintenance and testing for me.
It's like complaining that developers are increasingly shunning other OSes - if it works on Windows, it's ready to ship. Yet people do this all the time for video games and most Linux users understand that making a game that runs equally well on Windows and Linux and Mac is no simple task.