Okay, folks. This is new territory for me. I'm stepping into the world of....
t h i n k p i e c e s 💥🤯💥
I've been thinking a lot about an oooold problem in the web dev community, one that's been the subject of 🔥flamewars🔥 basically since web browsers have existed: "browser monoculture". This topic has flared up again recently as a result of Microsoft dropping their EdgeHTML browser engine and moving Edge to Google's Chromium engine.
I have a crazy idea. I'm not entirely sold on it myself; I'm sure there are aspects I'm not considering. So I want some feedback on it. But first, I need to lay some groundwork.
What does "browser monoculture" even mean, and why should we care?
A "browser monoculture" is when a single browser becomes so dominant that it triggers a chain reaction: it's effectively the only choice, so it's the only browser anyone uses, so it's the only one anyone cares about, so it's the only one developers write code for.
That's one main worry: the concern is that if one browser becomes too dominant, developers may begin to ignore other browsers and just target the set of CSS and JavaScript features supported by the dominant browser, never bothering to test for cross-compatibility in other browsers.
And this isn't unfounded: this is exactly what happened in the early 2000s, at the height of the browser wars: Internet Explorer became so absolutely dominant that devs often specifically targeted IE, and many websites simply didn't work in any other browsers. The worst part was that IE was super quirky, didn't follow the standards, and was very slow to change or improve.
And this is another major concern: when there's really only one player in the market, the push for that browser vendor to follow standards and play by the rules declines; they can effectively do whatever they want. You might think that the developer community would get mad and start moving away from that browser, providing a check to their power, but the thing is, most browser users aren't web developers. Most users don't know or care about this stuff, and they aren't going to start moving to a different browser just because some 🤓nerds🤓 are complaining about "APIs" and "standards".
That said, there is a third, less technical concern that non-developers do care a bit about: when everyone uses a single vendor, that vendor then has access to everyone's user habits, data, etc. This is not exactly unfounded, either; many people have big problems with how Google has handled user privacy issues in the past.
An emerging Chromium monoculture?
And that brings us to recent events. Google Chrome's underlying browser engine is developed as an open source project known as Chromium. It's designed such that it can be used as the basis for new browsers, and many browsers have been built on top of it, including browsers you've heard of. Opera and Samsung Internet both moved to Chromium-based builds in 2013, and of course, as mentioned earlier, the big news this year is that Microsoft Edge will be moving to Chromium as well.
So this is the concern: what if enough of the market share ends up on Chromium based browsers that we end up with a Chromium monoculture?
Looking at current statistics, we do seem to be heading that way:
Browser | % of global usage |
---|---|
Chrome | 62.70% |
Safari | 15.89% |
Firefox | 5.07% |
Samsung Internet | 3.38% |
UC Browser | 3.16% |
Opera | 2.55% |
IE | 2.51% |
Edge | 2.17% |
(Others, each <1%) | 2.57% |
(retrieved June 7, 2019, from statcounter.com)
Chrome alone has over 60% of the global browser market share. Add in Samsung Internet, Opera, and Edge, the top Chromium-based (or soon-to-be-Chromium-based) browsers, and the figure goes up to 70.8%!!! Imagine if Apple decided they were tired of everyone moaning about Safari's missing features (as Safari now tends to lag the furthest behind in implementing cool new web platform APIs) and decided to go the same way as Microsoft. It's unlikely, but I could see it happening.
Many of the new experimental browser projects of the last several years have also been based on Chromium, such as Vivaldi, Brave, and Epic. And this makes sense to me: Chromium is a very well-established, actively maintained, and easily extensible browser engine. The task of creating complete JavaScript, HTML, and CSS engines from scratch is absolutely monumental; Chromium has literally decades of work behind it (considering it's based on a WebKit fork), and catching up seems impossible, especially for an independent startup. Plus, these browsers aren't primarily trying to improve the state of web languages; they're focused on higher level features like security, privacy, etc. I don't fault them for using Chromium as a base and focusing on the features they care about.
And that's kind of the point I want to get to: Chromium is beginning to be positioned as a de facto standard for browser engines, sort of a canonical implementation of W3C specifications. But we'll put a pin in that. 📌
What about Firefox? 🔥🦊
Back in the days of the browser wars, Firefox was the hero we all needed, breaking up the Internet Explorer monopoly and charging gloriously into the new era of browser diversity and cooperative web standards.
But unfortunately, tragically, Firefox usage has been falling over the years, really ever since Chrome came on the scene. I think Mozilla has done heroic work recently with Quantum, and they've often led the charge on implementing new web platform features, especially in CSS (subgrid!!! 😭).
But here's the bottom line: Google is huuuuuuuuge. They just have so many people working there. I don't think Mozilla or the open source community around Firefox has enough manpower or institutional support to keep pace with Google.
And I don't think the right solution is for Google to fire a bunch of their browser team so that Firefox can keep up, either. I love that they're constantly trying cool new things. So what do we do?
Do we have a monoculture?
In an important sense, yes. There seems to be at least a good chance of a browser engine monoculture emerging in the next 5-10 years. At the moment, the two primary opponents to Chromium are Safari and Firefox, who collectively hold about 21% of usage. Chrome's usage numbers have been slowly but steadily increasing for years now, and probably will continue to do so. Now that Edge is Chromium based, I imagine its numbers will go up a bit as well.
Buuuut... here's where I'm going to get controversial. I want to posit that this is a different kind of monoculture than what we saw in the 2000s with Internet Explorer 6, and it has the potential to become a very different kind, one that may not really deserve the name "monoculture". Stick with me here!
Is it bad?
Okay, let's dip our toe into controversial waters. Here's a take I've been developing:
All three of the concerns I laid out earlier are based on a scenario where a single browser becomes dominant, including all the hooks into a specific corporate structure with solitary business priorities and hooks into the company's proprietary ecosystem (e.g. hooking your Google account into your browser). But Chromium is already not that, and it has the potential to be quite the opposite.
To recap, here are the three main concerns I've heard raised in browser monoculture discussions:
- One dominant browser will lead developers to target just that one and ignore compatibility with smaller browsers.
- When a single browser becomes too dominant, it loses a lot of the motivation to follow and contribute to shared web standards.
- The more people use a single browser, the larger the pool of user data and habits available to the company that owns that browser, which raises privacy concerns.
These all change quote a bit when you recognize that we aren't talking about a Chrome monoculture; we're talking Chromium, the underlying browser engine. As it stands, Chromium is the basis for a variety of browsers, not just Google's flagship. From what I can tell (as a non-expert on Chromium's source, so please correct me), the Googley stuff that makes privacy advocates nervous is independent from the core Chromium browser engine. I mean, Microsoft clearly isn't going to ship an Edge with any hooks to Google's ecosystem still in it, so it's gotta be easily separable.
Privacy
For me, this distinction between "browser" and "browser engine" already answers the main concerns about privacy. The engine itself isn't where the privacy issues lie. Heck, two of the Chromium-based experimental browsers I mentioned earlier, Brave and Epic, are all about providing a more secure, privacy-preserving option.
Single Dominant Platform
As for concerns about developers targeting a single web engine if it gets too popular, that's definitely a real thing. Some claim this is happening already with Chrome.
But here's the thing: since it's the base of several different browsers, when Chromium gets a new JavaScript or CSS feature, it's not pushing Chrome ahead of the rest of the pack, it's pushing all of these browsers forward. So when the Verge (in the article linked above) says that Chrome is becoming the new IE, "with web developers primarily optimizing for Chrome and tweaking for rivals later", they should really replace "Chrome" with "Chromium-based browsers". To "optimize for Chrome" is also to optimize for Opera, Vivaldi, Samsung Browser, and soon Edge, because they all use the same engine.
That being said, this is a problem for Firefox, Safari, and anyone else still trying to maintain a parallel implementation. Let me come back to this in a sec.
Web Standards
This one is a big deal. Google has historically been a big player in pushing for and developing web platform standards for everyone to use, but as the Verge rightly points out, they've strayed from that message a bit in the last few years:
Whether you blame Google or the often slow moving World Wide Web Consortium (W3C), the results have been particularly evident throughout 2017. Google has been at the center of a lot of “works best with Chrome” messages we’re starting to see appear on the web. Google Meet, Allo, YouTube TV, Google Earth, and YouTube Studio Beta all block Windows 10’s default browser, Microsoft Edge, from accessing them and they all point users to download Chrome instead. Google Meet, Google Earth, and YouTube TV are also not supported on Firefox with messages to download Chrome. Google has publicly promised to support Earth on Edge and Firefox, and the company is “working to bring YouTube TV to more browsers in the future.”
This isn't great. But from what I can tell, this is isn't always strictly a matter of Google ignoring the standards; it's often a matter of other browsers not keeping up with Google's pace on implementing cutting edge APIs. Again, Google has a massive amount of resources to throw around, so IMO this is somewhat inevitable. But once again, since Google is contributing to Chromium, not just Chrome, all Chromium-based browsers get those benefits.
My crazy idea
Okay, we did it, we laid all the groundwork. And by this point it might be obvious what my idea is. So here we go:
What if the entire web standardized on a single browser engine? What if Chromium became the basis for a reference implementation of web standards, and all browsers converted to be based on it?
Now before you get out the pitchforks, let me elaborate.
A collaborative engine
I hope it's obvious, but I'll say it anyway: I'm not suggesting we cede control of the web to Google. Quite the opposite, actually. My vision is that the developers that currently spend countless hours writing the same code in parallel in different codebases instead are united under a single, common codebase.
Ideally, this codebase would not be controlled by any single company. I'd love to see a common browser engine controlled by an independent nonprofit foundation, like the Python Software Foundation, including (though not primarily made of) a few representatives from each participating browser vendor.
Just imagine with me for a moment: What if Safari and Firefox and everyone else stopped maintaining separate codebases, duplicating a ton of effort and desperately trying to keep up with the pace of the behemoth that is Google's development team, and instead began contributing to a shared codebase? What if everyone benefitted from everyone else's work?
We've seen examples of this. Opera developers have done this in the past, and the Edge team has begun doing this as well, both teams bringing their expertise to benefit Chromium.
I'm currently very frustrated that while CSS Subgrid has been implemented in Firefox Nightly, Chromium has yet to start working on it. Imagine if the Firefox devs' work contributed to Chrome as well! This problem would vanish!
And this is a classic problem on the web platform in general: we all get excited by some awesome demo of a new Web API in a certain browser, but the immediate response is, "Sure, but how soon can I actually use that? How soon will all the other browsers implement it?" Maybe there's an opportunity here to get rid of this problem forever.
What about the lost diversity of implementation?
Here's a possible downside I'm worried about: one thing I love about the variety of browser engines currently in the wild is that they often implement the same feature in different ways, and one is often faster than others. I have to imagine (though to be honest I don't know) that there have been occasions when a Chrome dev has seen how Firefox solved a problem and borrowed an idea or two, and vice versa. Would we be giving this up? How big of a loss would this be?
I have two thoughts here.
First, I note that this isn't a big deal for other platforms; I don't hear much complaint that there's no big competition for CPython (the Python reference implementation) to encourage alternative ways of implementing features. But maybe that's not a counterargument. Maybe that's a bad thing for the Python community, and they would benefit from some competition. I don't know.
Second, though, maybe there's a way to preserve this feature of the web to some degree. Yes, all browsers would be built on the same engine. But maybe the engine could be (or already is? Again, I'm no expert) built in such a way that each browser could build initial implementations of features on top of the core engine. Maybe this could develop into a regular process: when a new API is being discussed, or even after the spec is initially published, maybe each browser that's interested writes their implementation of the feature and tries it out. Maybe we spend 6 months or whatever with a different version of the feature in Firefox, Chrome, and Opera, then a committee at the foundation sits down together and hashes out which implementation should be merged into the master branch.
This is a point I'd love specific feedback on. I'm not sure how it would go down, but it feels like there has to be a way to get it done.
Wrapping up
Okay, that's it. If you've read this far, holy crap, thank you so much. This was a long, rambly one without any practical application, so I really appreciate anyone who gave me that much of their time.
To say it once more, I'd really love feedback on this! The growing disparity between browsers is something that's been on my mind a lot for a while. I don't think the current trajectory is sustainable, and I don't want either for a single browser to win out while still being corporately controlled, nor for browsers that are able to push ahead of the pack because of greater resources to be held back for longer and longer amounts of time while other browsers struggle to catch up, all the while being criticized as "the new IE6".
I think we desperately need a new conversation on this topic. This is my contribution. Now please, give me yours! 😁
More resources
Here's some other people talking about this topic that have informed my own opinion, including some stuff I linked in the article.
- The Verge, "Chrome is turning into the new Internet Explorer 6"
- @shoptalkshow Podcast (@chriscoyier , Dave Rupert),"Breaking Browser News" segment: "Google updates vs the rest of the industry" - This is what got me started thinking about the aspect of Firefox and other smaller engine teams not being able to keep up with Google's resources
- HTTP203 Podcast, "Browser Monoculture" - a somewhat ironic 2015 episode of Google's HTTP203 podcast in which Paul and Jake discuss the time Edge asked the community for suggestions, and the top response was "Stop doing your own thing and use WebKit instead"
- Mozilla, "Goodbye EdgeHTML"
Top comments (48)
Hi Ken, I really enjoyed your post and I don't think it's a "spicytake" :P
You make a valid point and I see you've considered the various counter arguments to such point.
I think the main reason why this is not going to happen easily is power (and the control power allows). Until Microsoft joined the fray Chromium was essentially a Google project. Yes, other people contributed to it, other companies's employees fixed bugs but Google set the agenda of what had to go inside the engine.
Microsoft certainly has the bandwith to balance that now, which is obviously a good thing, but we'll see two or three years from now, right now it's hard to know what will happen.
The idea of the independent comittee steering the engine through a foundation might be a solution but I don't know, maybe some dynamics that are not making people too happy right now would replicate there as well
I'm going to quote parts of The State of Web Browsers: Late 2018 edition (written right before Microsoft announced Edge switching to Chromium). The author too makes the argument that on a technical standpoint having a single browser engine would be beneficial.
Where he thinks competition benefits is not inside the engine itself, but in the web standards process:
If you look closely, even at the Web Incubator Community Group most proposal are signed or co-signed by Google employees. I'm not attributing any malice here, just stating a fact.
As you say, an independent organization might help that, but isn't the W3C already an independent organization? So if Google is effectively "driving the web through committee", what would this new "engine foundation" do differently? The point of an organization is not having a single company calling the shots, even if they play nice.
But what playing nice means? One could argue that a monopoly of Chrome won't be a good thing anyway. (I don't believe Microsoft Edge will increase its shares in the short term, regular users have no reason to switch back but I might be wrong here).
Let's imagine a future where all browsers are Chromium based and all sites mostly work the same everywhere. Do you think this will substantially change the market shares? At some point the question should shift from the technical aspect of an open web to the philosophical one.
If a single company (even at a fictional "Chromium foundation") has a massive market share which is effectively increasing, a delivery system (Play Store), billions of devices with its browser pre-installed, a search engine that tells you everyday that you should install Chrome, YouTube and so on and so on, will the web be truly open? Because open to me means also innovation and diversity of options and solutions. If everyone is aligned on a single solution and there's one company that controls most of the market, is the opinion of the other stake holders truly important? How hard it will be for the Firefox of tomorrow (considering that in this imaginary scenario Firefox will run on Chromium) to pull off the same thing that Mozilla did ages ago when IE went rogue? In my opinion it would be way harder to create an alternative, not because of the single engine again, but because of the power and control I mentioned in the beginning.
One could argue that now Firefox is as technically valid as Chrome if not better in certain extents, but as you mentioned, people don't care about that. People migrated to Chrome because it wasn't buggy and it worked well and it was fast enough but also because it was preinstalled on phones and most Google websites hinted at it (well, also because the preinstalled browser on Windows was bad).
Which begs the question: after a certain base level of efficiency and quality, is the monoculture really about the technical aspect or is it about dominance?
I'm a developer like you and I see your argument, it would save me and everyone of us peace of mind and probably time and maybe even make websites faster to create but... would it really be beneficial to the end user in the long term?
I don't believe it will.
We could make the same argument for everything else: why not a single programming language, a single operating system and so on? After all if we all were developing on a single platform that's the same for everybody our lives would be easier, cross platform errors would cease to exist. But would it truly be better?
After all life teaches us that the best things come from obstacles ;)
ps. on another note: I would love to see an Android vendor with a big share announce tomorrow that they decided to ship Firefox by default, that would change the game a bit ;-)
Off the top, thank you so much for the time you put into this response. This is the sort of feedback I was hoping I would get! 😁
I want to address some smaller points, then make an overarching point.
I may have misled a bit with how I offered up the idea of a foundation to manage the web engine. To be clear, I don't mean that Google should become a non-profit, or that the Play Store or YouTube or Android should change ownership. The only thing I'd want this foundation to own is the core browser engine itself. Not necessarily even a full browser, like the Chromium Browser. Ideally, a foundation would be established with an independent leadership, unaffiliated with any browser vendor, to manage the open source project.
Off the bat, I absolutely recognize that this is a somewhat utopian vision, and Google, Apple, and the rest are unlikely to relinquish their power. But I don't think it's entirely out of the picture, and I think it deserves some discussion.
There's a difference though. If I'm choosing an operating system, I'm choosing it for myself (or my organization or whatever). If I'm choosing a programming language, it's really for me. My end user doesn't typically know the difference (with some exceptions). But on the web, the diversity of and conflicts between browser engines isn't a personal choice. I as a developer don't choose the browser engine I want to use, then write code for that engine and ship it. Other people choose what they prefer, and that controls the engines I need to target.
If I'm getting ready to create an application that requires a certain feature, and I see that, for example, Python makes it really easy to handle that issue whereas it's pretty difficult to pull off in Ruby, or if someone developed a really awesome Python module that does something I need but no equivalent Ruby module exists yet, I can choose Python and that's the end of it. But if I want to write a web app that relies on a certain API, and Chrome shipped it 15 versions ago but Firefox hasn't gotten there yet, I'm stuck. I've hit a wall until Firefox decides to implement it, unless I want to contribute another entry to the growing list of "Works best/only in Chrome" web apps.
This is a side thing, but I'm interested 😁. The reason I think Edge shares may increase is the same reason IE11 still shows up in the stats: people (especially non-technical people) have a tendency to use what comes on the box if there's not a good reason to switch. So far, Edge has been a sufficiently worse experience than Chrome that even non-technical users were willing to switch. But if Edge comes even close to Chrome in terms of usability, I just have an inkling that a lot of users will just not bother to download Chrome the next time they buy a laptop. Maybe I'm wrong; we'll see what usage stats look like in 2yrs or so.
--
Okay, in this next section, I'm going to agree with you a bunch, and then end with a flourish.
100% agree. No question.
Also 100% agreed. There's a huge power imbalance, and I do take the point that there's a possibility that if everyone moved to a common browser engine, but Google continued to have an oversized influence on the project, then Google may conceivably have an even easier time influencing the web to work the way they want.
Yep. Definitely a concern.
All of these are super important, very valid points. Google may still have a (too) large influence on web standards, and I have concerns about that. But here's where I'm coming from: I think that's pretty likely to happen anyway. The direction things are headed, I think Chrome will probably continue to pick up a bigger market share, I think every new browser to enter the scene will be built on Chromium, and I think Chromium browsers will continue to implement features and APIs faster than other orgs can keep up, especially with Microsoft's engineers joining the repo.
What's the end state there? I'm very worried about a certain scenario, which seems to be playing out now: More and more web apps (not just Google ones) will become Chrome-only, or Chrome/Edge/Opera-only. More and more users will see these messages and think they have no choice but to download a supported browser, because they really want to use that application. Safari will lose users, Firefox will basically die out (or shrink to less than 1%), Google will dominate, and there will be no structure in place to stop them.
As a small aside, I think the advancement of TWAs in the Google Play Store (Trusted Web Activities, basically a way to package a PWA into an Android app) will put even more pressure on app developers and companies to target Chromium first and foremost, to maintain compatibility with the Play Store and avoid having to maintain a separate Android app.
That, to me, is the ultimate doom scenario. Google still basically wins the Internet, and other organizations have little to no way to stop them. In the scenario I suggest here, I admit that this isn't totally avoided. But my hope is that it leaves avenues open.
If Mozilla is no longer sinking all their developer resources into keeping their browser engine afloat, they can focus more heavily on improving the features of their browser, all the stuff outside the rendering engine. My hope is that this could actually strengthen the appeal of Firefox, since privacy advocates no longer have to choose between a browser that keeps their data safe and a browser that works. Best case scenario, they begin gaining users again, gaining donors, increasing their resources, and ultimately increasing their influence on the standards process.
This all can sound sort of apocalyptic, and admittedly it sort of feels that way too, but that's what happens when you talk long-term... you have to imagine the ultimate best and worst outcomes and decide how likely they are. Is the Mozilla scenario I just suggested likely?
--
Man, this ended up basically as long as the article 😂 Hopefully it's not all nonsense
I agree about the discussion worth, my argument was mainly about the fact that it might not actually matter, because it wouldn't probably be binding. It's totally not the same thing but you just reminded me of the Paris Climate agreement. I don't have the tools to have a definite opinion on that but I know as a citizen of this Earth that if you make an agreement that sovereign countries have no obligation to respect and if they don't (see the US) nothing happens, well, the result is just a feel good utopia, to borrow your word because people can go their separate ways without consequences.
Are we sure we're really choosing? Far from invoking theories of being in a simulation or issues of true freedom but... well, the tech we choose is (for the most part) the result of the environment we have around and has consequences for the end users (though I know what you mean and probably the following analogy shouldn't be used here because we both understand each other). The analogy is Electron, I know people like to bash on it and I'm sorry to use it again, but if my tech choice means that I'm going to shave off 500mb of the RAM of a person that might have only 4GB, well that's a choice that has an impact. The same way a badly written website might have megabytes of JS that have a real impact on users (and this would happen even in the "universal engine" scenario).
I see, that's true but at the same time, are you stuck because you don't have access to that API or are you stuck because the lack of that new API impedes your ability to deliver a good UX to the user? After all we didn't have many of the "Chrome only" APIs until the day before they were announced and we were mostly fine. I don't want to sound like a luddite because I'm not but not every technological advancement is needed, sometimes it's just because developers like us have found a better or smarter way to accomplish something we were already doing the day before.
I totally subscribe the argument of productivity though, APIs and abstractions help us deliver products faster and that's important.
True that but if Microsoft doesn't plan to release a new operating system, then "what comes with the box" for existing customers is a sailed ship if they've already switched to Chrome. Unless MS plans an aggressive marketing campaign I don't see a person happy with Chrome switching back. An entirely different argument is to be made for people who purchase new computers, but even that might be unpredictable (maybe they have an Android phone and they want to sync bookmarks ;-)). We'll see.
I would honestly be glad to see Edge Chromium (even if in my heart I would have preferred an Edge Servo) raise in stats, because of the reasons mentioned before about competition.
I see, your argument is about making the most out of an unstoppable situation. I honestly don't think Firefox will ever switch (though it worries me that a part of their funding comes from Google paying them to default to Google search). I guess we'll live to see. There's always something happening in tech.
Maybe we'll end up using WebAssembly like Java Applets and the browser won't even matter anymore. Kidding :D
Seriously speaking: I agree that the "mono engine" scenario is better than having broken sites on different sites but as I don't see Firefox switching, I really have no idea what Apple would do with Safari mobile. They, unless they've changed it recently, have a policy in place where all the browsers ported to iOS have to use Apple's browser engine. Firefox for iOS sucks for that very reason ;)
You're making my argument for Google being a double edged sword for the web. What happens if devs start making Android only PWAs (even saying that sounds too much of a mono culture to me)? Are they really going to ignore all iOS devices just because Google has a better track record in regards to catering to web developers?
Got it. What happens to all the work they've done with Firefox Quantum, Servo, Rust and so on?
I guess it depends on how much Google decides to push and how little Microsoft and Apple decide to counterbalance. It sure is gloomy for Firefox market shares right now. In the meantime, I'll keep using it because it's a damn good browser and I'm rooting for the underdog that gave us Rust :)
Sorry if it took me a while to respond :-)
Indeed, that was my point! I totally agree with your concerns about a Google-controlled web.
Yeah, unfortunately the majority would hit the floor, no question. That's an enormous bummer, no question. But I'd hope that at least some of the principles used to build Quantum could be applied to improve parts of the future browser engine, just like what the Edge team is doing with their improvements to Chromium's scrolling and touch support.
Hey listen, I'm no metaphysical libertarian. You wanna talk determinism, compatibilism, or any other philosophy of mind, jump in my DMs, I'm all about that 😎
Yeah... probably not. I don't what to do with that. To be honest, as some others have said in the comments, I'd much rather see Firefox become the basis of a shared browser engine anyway; the only reason I posed this in terms of Chromium is because it's currently winning the war by, like, a lot. I honestly don't know if Mozilla would ever go for it.
That's certainly true. A big outstanding flaw of my proposed future is that as long as Google continues to have majority influence over the engine, they can basically take it where they want. And if control were to be ceded to an independent foundation (which is already an enormous assumption), Google could still at any point get frustrated that their PRs and merge requests aren't being accepted and fork Chrome back off again. And I don't know what to do about that.
Yep
There would be nothing to do about that, except change browser but at that point there would be fewer options and we would be back at square one essentially ahhaa.
BTW another aspect is that even if tomorrow all browser would choose a single engine we'd have to support the existing ones for years :(
The W3c no longer decides the web standards anymore. Browser vendors do. W3c just proposes and advises standards. WHATWG does the standards now. w3.org/blog/2019/05/w3c-and-whatwg...
It's a lot to keep up on
I switched to Firefox because of the Monoculture. If anyone has been following the webRequest API deprecations from Extension Manifest v3, this is exactly why many people including me think a Monoculture is bad. I'm surprised this article didn't cover that tbh
To be up front about it, the reason I didn't cover the Extension Manifest v3 issue is that I basically know nothing about it haha. I heard that browser extensions were changing, but didn't know there was a controversy over it. I'm not an extension developer, and tbh I don't even use very many extensions, so it really hasn't been on my radar.
But I'm interested. Would you mind filling me in on the relevant aspects, and how it relates to the monoculture debate?
(I'm not 100% correct most likely but this is my understanding).
I use uBlock Origin. uBlock Origin and several other Adblockers work by blocking ads on the request level; Through the extension manifest, they request access to the webRequest API which lets extensions intercept requests coming in to the browsers and block ads that are delivered through (probably?) Javascript embedded in a page.
There's another class of Adblockers, like Adblock Pro which block ads based on "rulesets". Meaning, they let the Ads render first and then they remove them once the DOM content finished loading. They look for heuristics of something that could characterize ads in the DOM (I think). I've also heard that Adblock Pro sells your info but I don't know about that lol
Google, in the new 3rd version of the Extension Manifest for Chromium based browsers, is deprecating extensions' access to the webRequest API (or some subset of its functionality). This is gonna make it impossible for uBlock Origin and other adblockers of its kind to effectively block ads.
Remember that Chromium is FOSS, and Google said they want to make these changes under the guise of "performance improvements". The community tested their claims and found the performance improvements were negligible at best.
Google first said they wouldn't make these changes, and then came back recently and said they're doing it anyway.
Conveniently enough, the changes to the Extension manifest aren't gonna apply to "paying enterprise costumers". Hmm...
Thanks for this great post! It's very detailed and argumented, and even if I don't deeply understand the difference between Chromium and Chrome, I feel very concerned by the risks of a "monoculture browser". And so am I for the monoculture in general (search engine, OS, email provider, ...).
I came back to Firefox a few years ago, after several years with Chrome, to take the control of my privacy. And I did it also for all the other services: Gmail, Google search, Youtube, Google Drive, Facebook, Instagram, Twitter, ...
Regarding the browser, as a backend-only developer, I couldn't say if your suggestion of using the same browser engine in all browsers is a good or a bad idea. Maybe it could be a good idea if this browser engine wasn't under control of a huge private company as evil as Google, but directed by a non-profit and free consortium (Mozilla Foundation?).
There really isnt much of a difference between chromium and chrome tbh. Fundamentally chromium is the engine which drives the browser, the "chrome" variant is the skin on top of that.
If you download chromium as a standalone browser it will look and feel like Google Chrome. Really all Google Chrome adds is is more google analytics under the hood and possibly some internal performance tweaks for running Googles own services.
You aren't wrong. But I want to emphasize that while there's not a significant technological difference between Chrome and Chromium, there's a massive organizational difference, and that's kinda the basis of my whole argument
Oh I agree totally, I was just trying to clear up the difference between chrome/chromium in a simplified manner (think ELI5), just in case it helped understanding.
Yeah, for sure! Explanation is always valuable, and I probably did assume more background knowledge than I needed to in my post, so thanks for helping to explain 😊
Nothing wrong with posts that require prior knowledge, if everyone made everything understandable to everyone, there wouldn’t be progression.
Yes, exactly! I mentioned this in passing, but probably could have highlighted it more:
So Chromium is the open source base that Google develops. It's used as the base of Google's own Chrome browser, but while it's still Chromium, it isn't tied into the Google ecosystem, and like I mentioned in the post, it's used as the base for a bunch of other browsers as well.
Really all that matters for the purposes of this article is that "Chrome" means Google, integration into Google's ecosystem, etc., but "Chromium" means Google Chrome, Microsoft Edge, Opera, Samsung Mobile, Vivaldi, Brave, Epic, and a ton of other smaller browsers that aren't tied to Google in any way.
If you switch to mobile specifically, Safari's market share jumps to about a 20%. Even that, understates Safari's significance since Safari/WebKit powers every browser or WebView-based app on iOS. So, I think the biggest impediment towards your idea would be getting Apple to relinquish control over the web engine on their mobile devices.
That being said, I am not sure I am totally in agreement here. I say that as someone who remembers how easy it was to develop back in the days when we only targeted IE and even had almost a single common screen size to design for. However, I don't see cross-browser issues being the biggest complication in modern web development (PWAs are a bit of an exception, but iOS is rapidly catching up of late). The biggest issues facing web devs, in my opinion, are targeting a myriad of devices, device sizes and device capabilities (including trying to support older devices), and this is a problem I don't see a browser engine monoculture solving.
On Apple: yeah, I definitely agree. I think Apple would be hard-pressed to give up the deep integration that Safari has into their whole ecosystem. But imagine if everyone else did, and the web started bounding forward, leaving Safari in the dust. I've already heard folks refer to Safari as the new IE in the sense of being the holdout for lots of new web platform features that we all really want to use, so I could imagine a world in which the pressure on Apple builds up to the point that they are willing to fall in line. And actually, I bet that Safari would be easier to transition than, say, Firefox, given that Chromium's Blink Engine began its life as a fork of WebKit. I'm sure the code has diverged plenty in the six years since, but it's probably still got a lot of the underlying foundation in there (again, I'm no expert).
On the main problems of web dev life: I definitely agree that cross-device issues are a big deal. But like, there can be more than one big deal, right? IMO, cross-device isn't really a problem to be solved, it's just the nature of the web, and we've spent a decade developing techniques to deal with it (and will continue to do so). And actually, in my experience, cross-browser and cross-device tend to interact, so that you have your app working perfectly on Firefox/Windows, Chrome/Windows, and Firefox/Mac, but for some reason it still looks weird in Chrome/Mac. That (largely) goes away if you reduce down to a single browser engine under the hood.
And to back up a bit, idk, I have to disagree that cross-browser issues aren't a big issue (if that's what you were saying; hope I'm not putting words in your mouth! 😬). As I mentioned in the post, one of the biggest frustrations of my life right now is that Chromium hasn't prioritized Subgrid yet. In my experience, Chromium tends to push boundaries more often in JavaScript, while Mozilla often leads the charge in CSS. There are quite a few JavaScript features that Chromium has been experimenting with, and that have shipped to prod in Chrome, but that Firefox hasn't had time to work on yet.
And really my point is that even if you don't see the issue now, this is only going to get worse as time goes on. That Verge article was definitely not wrong in talking about the rise of "Works (best/only) in Chrome" sites. People want to use these APIs (myself very much included), but we need cross-browser support.
I guess in the end my worry is that if we don't address this now, intentionally and publicly, we'll end up with a monoculture anyway, and it will be the bad kind, where a company becomes dominant instead of a technology.
Sorry for writing another article in your mentions 😅, I have a tendency to do that. I'd love to hear your feedback again, if you can spare the time!
The divergence in my experience really tends to be on bleeding edge features. SubGrid, for example, is part of the CSS Grid Level 2 spec, which is still in a draft recommendation status. So, I'd argue it is not that certain browsers fall behind but that we developers tend to get ahead of ourselves a bit. I'm not discounting that these are important features, but that we've become a bit accustomed to features being available even when the specs are still a bit unstable.
Hi Ken. Good article. In fact, it inspired me to quit lurking and sign up so that I could make the following comment...
I think you overlooked what I consider to be the most serious albeit least immediate downside to any monoculture: vulnerability to attack. If a substantial portion of our infrastructure becomes oriented around a single platform, then it is possible for the inevitable vulnerabilities in that platform to be exploited in such a way as to disrupt or disable everything that depends on it.
I tried to state that as generically as possible because it applies in many situations. In this case, Chromium is on it's way to becoming the de facto application run-time and information rendering engine on all end-user devices. If that situation actually came to pass, then successfully attacking a single piece of code could be enough to effectively render most of our technology useless. As we become more and more dependent on technology, that becomes synonymous with potentially taking down our entire civilization.
Admittedly, that is an alarmist and over-the-top outcome that is unlikely to occur. The point is that it could occur, and moving from a diverse client-side environment to one of monoculture makes it more likely rather than less.
(Apologies if anyone already mentioned this in the other comments. At the time I read through them, no one had.)
“Just imagine with me for a moment: What if Company A and Company B and everyone else stopped maintaining separate products, duplicating a ton of effort and desperately trying to keep up with the pace of the behemoth that is the market leader, and instead began contributing to a shared product? What if everyone benefited from everyone else's work?”
I mean, I was born in socialist Yugoslavia, so I’m not the most pro-capitalistic person out there but what you’re suggesting sounds like something that is completely incompatible with capitalism.
Just the idea that all browser vendors would agree on a single engine without one of them ever wanting to fork sounds utterly utopian.
Ha, maybe. And maybe my idea will stall until the after the revolution ✊
But I wouldn't count it out altogether. Standardization on a shared core has worked before (see: Linux kernel), but admittedly it hasn't been on this scale, with this much existing market entrenchment.
I agree that it's a major problem to be dealt with, but I'm not convinced that it's insurmountable just yet.
The biggest issue (which has been hinted elsewhere) is that even though there is an open source version of the Chrome engine called Chromium, Google still has overwhelming power over Chromium.
This has been revealed lately in the deprecation's of the Extension Manifest 3 (which has been noted elsewhere) as part of the WebRequest API which is being done in Chromium. Google has been deceptively saying these changes are done due to performance reasons however their real reason (which was also revealed in an obligatory K12 document they had to reveal to shareholders) is that pure Adblockers such as U-Origin are posing a significant risk to Googles revenue (advertising is Google's primary source of income).
If Chromium wasn't owned by "Google" and was in charge of a non-profit neutral organization than I would agree with you. There is already however a browser that fits this description, its called Firefox. Firefox, unlike Google, doesn't have ulterior motives and conflicts of interest.
By the middle of the text I was already thinking what you said about it is not Chrome you are talking about, it is Chromium, which is open source.
I think the best thing about open source is the exchange of ideas, so in my opinion there will be no loss of great ideas if only one codebase dominates. Think about that, if Firefox and Safari engineers came to contribute to Chromium they would be forced to comply with any idea that the other engineers had? No, they would give their ideas and the community as a whole would decide what is the best implementation and after that it is not set in stone, it can be improved afterwards.
In the end it is something that will be come naturally if it happens at all and after people may create a fork of Chromium and so on. That's what open source is about. :)
Nice article Ken. In theory it would make life so easy (browser testing almost eliminated).
I'll keep it simple for once. We should have lots of render engines & lots of browsers. Competition breeds progress, decentralization reduces authoritarian control. Single point of failure. Bureaucracy.
I prefer the webkit render as it is the nicest quality & it is the fastest. Chrome is measured in Gb.
A parallel would be: why don't we just put all the internet on a mainframe, with bootstrap, single design method, one copy of content, no duplication etc. - I know this example is a bit silly, but the principle hold weight.
I just (literally) published a giant list of browsers in the hope that we can de-monopolize a bit.
dev.to/vuild/giant-list-of-web-bro...
I cannot agree more, you raise some interesting points. Challenges between browsers is making the web more rich, I think Firefox is in financial need to be so late in the browser ladder.
I would also shade my answer by saying having a good financial support is also an advantage. Maybe if Microsoft would have made their own browser this would have been better, they took the easy path (understandable to grab more customers).
Hard situation!