Why do most browser companies opt for a Chromium/Blink base instead of a Firefox/Gecko one?
I mean, I like Firefox, but I'd love to see Vivaldi based on Firefox/Gecko. There's Floorp, which is similar in some ways but it's more like an Edge built on Firefox than Vivaldi.
Blink has a younger code base that's easier to build on. Gecko has been around since the early 90s and has some ancient evils lurking deep within. At least that was the reasoning a while ago. As Mozilla has been putting a heavy emphasis on code correctness for the last few years, that may no longer be the case. Then again, momentum is a big deal, and I still see people saying the don't want to try Firefox because its memory inefficient even though they fixed that bug almost a decade ago now and its less resource hungry and faster than chrome now
Blink is a fork of WebKit wich is a fork of KHTML, KHTML exist since the '98, the codebase isn't that younger too. Was tweaked by Apple then by Google, with some features that don't exist on other engines.
Blink has a younger code base that’s easier to build on. Gecko has been around since the early 90s and has some ancient evils lurking deep within.
They both are of very similar age actually. The old Netscape rendering engine originated in the early 90s, but Gecko was a rewrite from scratch that was first used in a browser in 1998.
Blink is based on KHTML which is based on khtmlw, which was written at some point in the mid-90s, but as well saw a complete rewrite in 1999.
The only time I ever had memory problems with Firefox was when I tried to run it on a potato. That complaint has always been bullshit.
Edit to add: The aforementioned incident was in 2010, on a machine with only 512MB of RAM. Like I said, potato. Chrome back then was somewhat more memory-efficient than Firefox, and could support three open tabs on that machine before it started thrashing, whereas Firefox would thrash with just one. Both browsers performed abysmally under such a severe RAM shortage, but Chrome was slightly less abysmal. Slightly. I seriously doubt the current version of either browser would be usable on that machine, although I don't have it (I gave it away soon after this incident) so I can't check.
Firefox ate my RAM joke is ridiculous. Nokia N900 has 256MB RAM. Fennec for Maemo had electrolysis (multiprocessing) turned on. In version 4. Years before the desktop Firefox.
You really need to go old-school embedded for Firefox to eat your RAM.
Actually ff is the old Netscape navigator which was popular in the early to mid 90’s. When Netscape didn’t take off like they hoped it was retooled a little bit and turned into ff
The code is already prepared very well to be embedded into something. I remember trying to embed the javascript engine SpiderMonkey into a project (I needed C bindings which I then could use in Erlang). After a week or so trying and extending, etc. we gave up and tried V8 which we had running within one hour with good documentation great APIs and so on.
I myself have been Firefox user since Firefox came out but trying to embed it myself and failing I kind of get why others choose Chromium/Blink as their base.
Oh, I see. I had an internship last year where I developed a WebApp and I only got a slight glimpse of the differences between Blink & Gecko but even that already influenced my code so I can kinda imagine the struggle :')
The main reason I've heard is that chromium is far easier to embed than Gecko. Gecko isn't something you embed like a library. It's something you build upon. Detaching Gecko from Firefox UI (or Thunderbird for that matter) is supposedly really hard.
I don't know if I'd say separating Gecko from Firefox is all that difficult. About a decade ago I worked on a project at the tail end of my internship at Mozilla to separate Gecko from Firefox Mobile. The idea being to create a sort of GeckoView Android component that could be used like a WebView component to give devs the option to embed Gecko in their app rather than (at the time) WebKit and for Firefox Mobile to become a UI wrapper around a GeckoView component as well. I only had a few weeks to work on it and in that time I had a rough proof of concept running which was an independent Android app that ran Gecko through this new GeckoView component and had a super basic UI to control it. Unfortunately being an internship project I didn't have time to take it through to completion and being the Firefox OS days at the time the team had other priorities so I don't believe it ever got fully finished. But point being is that it's not terribly difficult to separate the two; I did it as an intern in a few weeks a decade ago.
Ah, so it isn't really built do be adapted by others the way Chromium is. Well that's too bad. At least there's Floorp although I don't really have the knowledge to actually check whether their code is fine or not (as they are quite unknown yet) so I'm not so sure whether to trust them.
KHTML/WebKit/Blink has always been built with the intention of many browsers (or anything else that needs a rendering engine) integrating it, thus it's very easy to do so.
Gecko hasn't been built with the intention of being integrated into any browser at all. Gecko isn't integrated into FF either. You integrate the browser into Gecko, not the other way around. It's closer to building a browser in Electron than to building a browser with the Blink engine.
Once upon a time internet explorer dominated the web. The web bowed and catered to the jank that was internet explorer...at least until other browsers gained traction. To this day there are some websites that are only designed with internet explorer in mind.
And I am convinced people didn't think the same would happen when everything other than Firefox and Safari switched to being based on Chromium because "nah, it's open-source, that won't happen."
Well, here we are. The only thing keeping Chrome from completely dominating is that iOS currently requires all browsers to use WebKit, but once there is a real Chrome on iOS, you know every site is going to tell iPhone and iPad users to "lol just download Chrome."
This is not the situation I was hoping for, but I saw this coming years ago.
It’s now been replaced by “no message, but sort of only works with Chromium”. As a full-time Firefox user I unfortunately see an increasing trend of “not working right with FF”
As a web dev and firefox user, I really wish more devs tested in Firefox by default. Almost always if it works in FF it works in Chrome, but that's very much not the case the other way around. I've never run into a situation where there's not an easy pre-existing solution to any compatibility issues, but you'll only know there's a problem if you actually see it.
This is a genuine question, asked by someone willing to learn.
Why does it give control to Google to use Chromium? It’s open source? Are all the decision makers Google employees? Wouldn’t one assume that forks would occur if a decision was taken as chromium level that was detrimental to, say, Microsoft’s Edge?
Fair point. I compared it to Edge because Floorp tries to mimic their UI, it is miles ahead of Edge when it comes to customizability tho. Maybe not as customizable as Vivaldi but it's very close.
The jiophones and nokias with kaiOS are based on a fork of gecko, which is a common phone in rural India and goes by different names, sold and made by different companies in different regions all over the world
Gecko was pretty shit performance wise until Firefox quantum in 2017. Back then even Apple decided it's better to use webkit for it's browser.
It's difficult to say exact reasons for each browser. But for Chrome enjoying the dominant position before that, it was better to jump on Chromium as base just for better compatibility with most websites.
Apple didn’t “decide it’s better to use webkit”, they MADE WebKit (from forking KDE). Back when they started WebKit Gecko was only out for a year and heavily associated with Netscape, while KDE’s was already mature
Thanks for the correction. This doesn't disregard my argument. Netscape codebase was bloated and underperformant. It was a bad choice for a basis for a new browser.