Ask HN: Why do new browsers use Chromium instead of Firefox as their base?
I’m wondering if that are technical reasons why the newish browsers (such as Brave or Edge) are choosing Chromium instead of Firefox as their starting point.
If so, shouldn’t this be a priority for Mozilla to change that?
[+] [-] BlackLotus89|4 years ago|reply
Servo isn't a finished rendering engine yet and the browser I saw that could exclusively use servo was not compliant enough and since mozilla fired the servo team there is no certain future for it anymore. Projects that tried to make servo embeddable are all dead and gone (see https://github.com/paulrouget/servo-embedding-example for example)
So yeah last time I tried to use gecko I failed and didn't try again (years ago) nobody is willing to do the work and mozilla seems to focus more on other stuff...
[+] [-] thayne|4 years ago|reply
[+] [-] ramesh31|4 years ago|reply
When did that happen? It seems the managerial class has completed their takeover of Mozilla in the last few years. A real shame, since it basically cedes the entire web to Google.
[+] [-] vhab|4 years ago|reply
But it didn't become more widespread until a switch to Chromium was made, which made the entire process a lot simpler in both execution and distribution.
And there hasn't really been a need to revisit Gecko.
[+] [-] jeffparsons|4 years ago|reply
So hey, any companies out there interested in bringing back a little diversity in browser engines? Or just making a tiny dent in Google's dominance for the greater good? Consider funding work to make Gecko better suited to embedding.
[+] [-] bostik|4 years ago|reply
Bingo. Let's not forget, Chromium itself is built off a fork of kHTML, the rendering-engine-as-a-library originally developed and used by KDE project.
Apple forked kHTML and released WebKit. That gave the world Safari. Not long after, WebKit became the engine powering Chromium/Chrome, but with process isolation and high-octane JavaScript interpreter (V8). Then quite some time later, frustrated by Apple's control over the engine, Google forked WebKit and came out with Blink.
Sometimes the only difference between provenance and history is the written narrative.
[+] [-] captainmuon|4 years ago|reply
When Firefox was new, it was trivial to embed Gecko. There was an ActiveX-Widget that you could just drag to your VB or C# form and get a browser. There were also a bunch of browsers which were just wrappers around Gecko (K-Meleon or Galeon). It was also possible in other environments, though maybe not so easy - StarOffice/OpenOffice included Gecko, too. One reason this was possible is that from the beginning, Gecko was built with components in mind. XPCOM was very much like COM and allowed you to have a stable C++ ABI. Your classes are basically structs with a known memory layout and function pointers, and you use interfaces to access them.
Unfortunately it was a bit overengineered, and component technologies fell out of favor and were removed from many projects (XPCOM, COM, BONOBO, UNO...). I think it was a overreaction to the excesses of object orientation in the 90s- Microsoft is moving back to the opposite direction with WinRT. Anyway, the modularity was removed from Firefox/Gecko on purpose in order to simplify the code.
Webkit comes from a similar heritage (Kparts). I think the reason why there are embeddable Webkit widgets is just because people did the work to create them - QtWebKit, WebView2, ..., not because Webkit is inherently more embeddable. In fact, the multi-process nature causes a bunch of problems. You can't just reach into the DOM from your native code, but you have to inject JS to manipulate it, and so on.
[+] [-] pvg|4 years ago|reply
I don't think that's really the key problem since you don't have to build a new browser out of FF by embedding Gecko. FF itself is a browser that was made out of another browser, much of the old core Mozilla technology is basically a cross-platform app-building framework with one of the 'apps' being a browser. Somewhat unobviously, this turned out not to be a great way to build a browser in the long run.
[+] [-] tyingq|4 years ago|reply
Mozilla seems to choose what to do with donations though. I don't think there's any way to target funding for Gecko, Rust, etc.
[+] [-] 88913527|4 years ago|reply
[+] [-] mook|4 years ago|reply
[+] [-] JohnWhigham|4 years ago|reply
Well, with that said, Mozilla is the wrong shepherd for Firefox given that they laid off 25% of their workforce last year.
[+] [-] jcmontx|4 years ago|reply
[+] [-] pcwalton|4 years ago|reply
Embeddability has little to do with it; Chromium (as opposed to WebKit) isn't actually that embeddable. Rather, market share is king. With a high market share, the community will step up with projects like Electron and Chromium Embedded Framework that add embeddability.
[+] [-] dfabulich|4 years ago|reply
No way. I remember the bad old days of XULRunner. In 2010, pre-Electron, it was literally easier to implement my own WebKit-based app from scratch in C++ than it was to follow the documentation and use XULRunner.
Firefox's embeddability was bad. Really bad.
[+] [-] toyg|4 years ago|reply
[+] [-] jupp0r|4 years ago|reply
[+] [-] commoner|4 years ago|reply
https://mozilla.github.io/geckoview/
GeckoView is the foundation of Firefox for Android and Firefox Focus. The SmartCookieWeb-Preview browser, which supports sideloading Firefox extensions on Android, is also based on GeckoView:
https://github.com/CookieJarApps/SmartCookieWeb-Preview
[+] [-] iggldiggl|4 years ago|reply
[+] [-] csdreamer7|4 years ago|reply
That was Apple's reported reason for using KHTML and making WebKit which Google used for Chrome and forked eventually. They wanted something light and embeddable. Don't blame them. Also, that software was LGPL.
I was always hoping that Microsoft or Apple would fund the Mozilla Foundation to keep a competitive web engine afloat and prevent Google Chrome engineers from dominating the web. They can take the Firefox code for their closed source software under the MPL.
Really doubt MS is going to do that these days. Kinda hoping Apple does since Safari is often the last to support new web standards. It would take very little of their profit and yet keep a big competitor from dominating a critical function of their most profitable products. This is regardless if they actually use Gecko or Servo.
[+] [-] starik36|4 years ago|reply
That's right. And the Safari team chose KHTML despite the presence of Dave Hyatt - a key Firefox developer and creator of Camino browser (which did embed Gecko). That's probably everything one needs to know about how easily embeddable Gecko is.
[+] [-] tannhaeuser|4 years ago|reply
Where "web standards" are "whatever Chrome does", and written by Chrome devs. There you've also got the reason nobody starts from the FF/Gecko/Servo codebase.
[+] [-] pkaler|4 years ago|reply
You can read Creative Selection by Ken Kocienda to get the backstory on why they chose KHTML over Gecko. You can also Google for podcasts that Don Melton has been on.
[+] [-] Someone|4 years ago|reply
For those who don’t know: “they” is Apple here. Apple forked KHTML to create WebKit. Google contributed to WebKit and later forked it into Blink.
[+] [-] andrewmcwatters|4 years ago|reply
> Servo’s mission is to provide an independent, modular, embeddable web engine, which allows developers to deliver content and applications using web standards.
This is servo's mission, on their website, and the last time I checked, they provide absolutely no documentation on how to actually do it.
If you need embedded, just use CEF like everyone else. If you need a browser base, just use Chromium. Everyone else is dicking around.
I would have written a WebKit port[1] for my own purposes, because CEF has significant technical limitations, but WebKit has no documentation on how to do it either. They have documentation on what a WebKit port is, and what ones exist, but not actual documentation on how to create your own callbacks for view abstraction and blitting etc. It's a much more significant effort compared to just using CEF.
[1]: https://trac.webkit.org/wiki/SuccessfulPortHowTo
[+] [-] tylerchilds|4 years ago|reply
I've been compiling it locally and playing with it. I run it like:
$ servo https://news.ycombinator.com
To do that, I've got an alias set up to point to my dev build.
alias servo='f() { /home/tychi/SourceCode/servo/mach run --release $1 };f'
[+] [-] pvg|4 years ago|reply
[+] [-] shadowgovt|4 years ago|reply
[+] [-] daoismyname|4 years ago|reply
[+] [-] Barrin92|4 years ago|reply
Trying to ride old stereotypes about engineers and management that has nothing to do with facts is pretty cringeworthy.
[+] [-] gilrain|4 years ago|reply
You can’t lead effectively if the people you are trying to lead justifiably view you as hostile to them.
[+] [-] loganmarchione|4 years ago|reply
https://www.reddit.com/r/firefox/comments/m8cwdu/why_arent_t...
[+] [-] gbraad|4 years ago|reply
Even spidermonkey, the javascript engine, is never reused as v8.
Different design priciples
[+] [-] dralley|4 years ago|reply
GNOME and Cinnamon desktops use it, MongoDB uses it, polkit, etc. It's obviously not embedded nearly as much as V8 but it does have a few.
[+] [-] josemando|4 years ago|reply
[+] [-] BrendanEich|4 years ago|reply
[+] [-] pipeline_peak|4 years ago|reply
Other than Ekioh’s Flow, I don’t know any other competitive attempts from companies building browser components from scratch.
[+] [-] olliej|4 years ago|reply
[+] [-] tata71|4 years ago|reply
[+] [-] novok|4 years ago|reply
Otherwise firefox is a slower, less secure browser and an older more crufty codebase and less webdevs test it thoroughly. Why would I choose it as a new browser wrapper developer ever?
[+] [-] causi|4 years ago|reply
[+] [-] edoceo|4 years ago|reply
[+] [-] luka-birsa|4 years ago|reply
[+] [-] pentagrama|4 years ago|reply
[1] https://www.torproject.org
[+] [-] baq|4 years ago|reply
[+] [-] victorbstan|4 years ago|reply
[+] [-] robertoandred|4 years ago|reply
[+] [-] dikei|4 years ago|reply
The problem is Google is using Chromium dominant market share to push some questionable "features" into standards.
> The fact that Google did such a good job on early chrome compared to everyone else is really why it’s so popular.
Chrome is good, but Google being the largest advertising machine in the world also helps.
[+] [-] shp0ngle|4 years ago|reply
Now my question would be why not WebKit, as that is also easy to embed. There are browsers that use WebKit, just not that many.
[+] [-] dragonwriter|4 years ago|reply
Wasn’t part of the WebKit/Blink split that Google cared about supporting non-Apple platforms and Apple didn’t want to anymore, (and the reverse on a number of Apple-priority features), and both sides purged their post-split engine codebases of the stuff they weren’t supporting, making post-split WebKit very much not suited to non-Apple platforms.