Here’s Why Firefox is Still Years Behind Google Chrome
howtogeek.com
howtogeek.com
* I don't want a multi-process architecture, I want it so one tab can't kill my entire browser. If Firefox can get there in a different way than Chrome, so much the better.
* I don't care whether or not my browser utilizes certain Windows features, since I run Linux. Have we seen an attack against Firefox which would have been stopped if it utilized this Windows feature? The article provides no evidence of this.
* I don't want a desktop app store. addons.mozilla.org is, for all intents and purposes, Firefox's app store. mozilla.org is Mozilla's "app store". This is kind of a silly request.
I use Firefox for the following reasons:
* There are extensions I like which have no equivalent (that I know of) in Chrome
* Inertia
* I like the Mozilla Foundation better than I like Google
I don't expect these reasons to convince you. They are sufficient for convincing me. I'm not going to pretend like they present a compelling argument.
If you go to the about:config and search for "Google", I would like the ability to disable all these services.
That will turn off the Firefox Safe Browsing features that come from Google.
Who cares if Mozilla or Google is providing the NSA with access when the NSA is monitoring all the data heading to and from them without permission?
Google (and Microsoft) argue that using processes make the browser more stable in the sense that if one tab crashes, not the entire browser crashes, too (correct, as long as no deadlock in IPC between the processes occur - which has happened in some past Chrome relases) and makes the browser more secure (but not everybody agrees here). Thus they argue that the overhead of processes over threads is worth it.
But if you just want the scalability there are more easy solutions.
Nope. The vast majority of web pages and web apps do work either on page load, or in direct response to user input. While in the background, they almost universally sit idle. Multicore has no benefit in this scenario.
The exceptions are games and media, but music is the only case there where you are likely to have something actively running in the background. Unfortunately, audio decoding is so incredibly cheap now that the gains from using a separate core are negligible.
Just that a multiprocess architecture may not be the only way to solve the problem, and if Firefox devs believe they can provide equivalent stability without switching to a multiprocess architecture, I won't ding them just because they can't tick a checkbox that Chrome ticks.
Chrome and other browsers of course work hard against that: There is a second fast parser which heuristically finds ressources to preload and Chrome just switched to blink in order to do the parsing and something else in parallel and now they want to do CSS calculations in threads, too, which is hard. There was a story here about it recently: https://news.ycombinator.com/item?id=5895729
The effect of this is pretty obvious with chrome vs. FF: chrome memory usage grows a lot faster with multiple tabs than FF's memory usage does. OTOH, it's easier to manually control usage in chrome by killing tabs. Which of these effects is more important depends on your needs (so I tend to switch between chrome and FF...).
Anyway, anybody claiming that chrome is "obviously" better than FF these days is on crack. They are both very good, and each has its strong points and weak points, but they're pretty much on par...
Can you give an some examples of useful extensions you use that are available in Firefox but not yet in Chrome ?
When you navigate via keyboard (by pressing "f"), Vimperator marks links with numbers, Vimium marks them with letters, from ("a to "zz'). Letters are much nicer when you can touch type and your hands are already on the keys.
Vimperator used to do silly things like hide the address bar and force you into doing everything in a kind of "command mode". It never felt very smoothly integrated with the browser and it was always a pain to try and open a new site via command mode instead of just using <Ctrl>-L and typing it in the address bar. Invariably I would try to type something in a textbox or use some keyboard shortcut, only to find that Vimperator hijacked it and I'm now typing in command mode.
Vimium doesn't give me these problems because it doesn't have a command prompt/mode. Besides that, it's integrated very nicely with chrome, in such a way that I can use normal keyboard shortcuts as far as possible, but have vim-like shortcuts for the things that matter (e.g. "/" for searching, navigation via keyboard etc.)
The very first instructions that you saw when opening Vimium were "How do I unhide the address bar?" It takes two clicks or just a few keystrokes.
vimium is a lightweight clone of vimperator, if that's what you want then of course you'll prefer it..
these "problems" you're talking about in vimperator are features once you actually embrace it and use it properly. it's a power user's tool.. and should be recognized as such..
> When you navigate via keyboard (by pressing "f"), Vimperator marks links with numbers, Vimium marks them with letters, from ("a to "zz'). Letters are much nicer when you can touch type and your hands are already on the keys.
I can't get myself to use Vimium. While I agree that it is in some ways a stronger navigation experience, the fact that it goes inert on un-loaded pages is a deal breaker. Not being able to cycle through my tabs all the way is not cool (i.e. as soon as it hits gmail it ceases to respond).
Also, while I do like the alphabetic link highlights, I dislike the size. Particularly here on HN, the links can overlap making it difficult to determine what the second letter in the sequence is.
The last I heard, Chrome had a vertical tabs feature for a while, but that didn't allow nested tabs.
i use <strike>iceweasel</strike> firefox for the same reasons, specifically:
* pentadactyl (formerly vimperator)
* xul and xpcom took time to read about
* i like that the entirety of the codebase is free, not just the big blocks of C++
oh, and might be worth noting that the mobile version of firefox is multiprocess, and there's always the -no-remote flag (if you want to debug something w/o potentially crashing the 20 tabs of docs, bug reports, mailing list archives, and stack overflow you had to dig through to find the thing that maybe, possibly created the bug in the first place), although i totally agree about this thing where solving the problem of stability has somehow been conflated with running more than one process.
to each their own. having more browsers promotes a healthier "ecosystem" or something like this.
The only "reason" (why) he gives is mentioned very briefly:
> With so many former Firefox developers now working on Chrome at Google, perhaps it makes sense that the innovation has been happening in Chrome, not Firefox.
The real question we should be asking is what happened to investment in FireFox? Why has mozilla had a hard time retaining or acquiring talent? If the community values the existence of FireFox, and a real (top to bottom) open-source alternative to the IE-Chrome-Safari triumvirate, what can be done to get Mozilla back on track?
Most importantly, what happened to Mozilla that it stopped being an innovator and became an imitator? Is it something inherent in it's status as a "not for profit"? Is there something wrong with it's values and goals that prevents it from being truly innovative?
Those are intended as mostly rhetorical questions. My point is that the article has a bad title. It should be "Here's How FireFox is Behind Google Chrome" not "Here's Why".
"Here's Why" is a much more difficult conversation to have--and I don't pretend to know enough about Mozilla to have any insights or opinions on the matter.
But are there other ways for them to try and attract or otherwise develop talent? Perhaps their current model is insufficient.
It's interesting to see that Mozilla has become more involved with Samsung as a technology development partner. Perhaps that is one model.
Or is the idea that Mozilla has been losing key people to Google (as mentioned in the OP) not legitimate?
And the whole point of Google paying Mozilla is that that money is less than the search revenue Google derives from people using Mozilla's browser, which also suggests that its less per user than Google would derive from people using Google's browser -- or, IOW, that the the Google has more to gain by spending additional money on development, assuming they acheive as much in terms of attracting users.
http://en.wikipedia.org/wiki/Mozilla_Foundation
You can see their income statement from 2011 on their webpages: TechCrunch reported them here: http://techcrunch.com/2012/11/15/mozilla-releases-annual-rep...
pdf.js, sweet.js, Persona, asm.js, Rust, and Servo aren't innovative?
My personal opinion is that both are doing a lot to innovate and a lot for the web, but that they are complementing each other. Google is pushing forward the front-end and how the browser works with current content. Firefox is working to get browsers to the point where they can do many of the same things that operating systems can do today. A lot of that work is not as straight forward as reimplementing what operating systems do, since they often require entirely new trust paradigms because sensitive things are being exposed to the open Internet. It's not a trivial task.
Lastly, Rust and Servo matter a lot. You will only be able to get so far with WebKit/WebKit2/Blink/Gecko/Trident, etc. before you start hitting the limit of the architecture of each is capable of. Rust and Servo are being architected from the ground up with the future of computing architecture in mind. This means that they will be behind now, but will jump ahead once Servo is production ready.
- we managed to get multiprocess tabs working for Firefox on Android and for Firefox OS. The inner architecture is now here. Basically, it was easier to start with mobile.
- we worked hard on an even-more threaded architecture in Gecko ("Off-Main-Thread everything"). This makes Firefox much more snappier these days, and this will make things easier for a full multiprocess browser.
So now, with all that done, we are restarting our work on multiprocess tabs on Firefox Desktop.
A multiprocess architecture will probably improve the responsiveness of Firefox, but keep in mind that this is not a magic bullet. Improvements can be made in other areas. Firefox 24 is much more responsive than before and will get more and more snappier in the months to come.
Also - on a related note: "we need a more parallel browser" http://dbaron.org/log/20120827-specification-style
I wish Rust and Servo would come faster.
Chrome now supports ICC profiles for images, but still fail to color manage page elements, which is a deal breaker for me.
Can you elaborate on this? I'm relatively new at it, but I write code for a color science company so I'm curious as to what you mean.
Edit: I'm also reading halfcamerageek's URL: http://cameratico.com/guides/web-browser-color-management-gu...
The correct behavior would be to interpret all page elements and untagged images as being in the sRGB color space. This is what the W3C recommends and Firefox follows.
Now, as the author pointed out, Firefox seems to be unable to keep up in some key areas.
However the slowness of Firefox when Firebug is on when loading resource-heavy pages starts really bothering me.
Edit: Maybe it's just me? I'll have a look at my settings. Thanks!!
[1] https://addons.mozilla.org/sv-se/firefox/addon/tree-style-ta...
[2] http://www.techerator.com/2011/11/a-fond-farewell-to-vertica...
>> The fact that we have an open-source browser created by a non-profit organization only looking to make the web a better is great for the web. That’s why it’s a shame Mozilla has allowed Firefox to fall so far behind.
We should be asking "how can we help make/keep Firefox a strong competitor?"
That sounds like Servo [1] to me. That would also be a much more forward-thinking approach to Electrolysis than fully separating the old Mozilla codebase. Firefox is also competing very well with Chrome in JavaScript speed. [2]
[1] http://en.wikipedia.org/wiki/Servo [2] http://arewefastyet.com/
I hope Servo can avoid the second system syndrome.
It's also important to note that there is a divide between OSS Chromium and Chrome.
The App store idea isn't that dissimilar to the add-ons Firefox has had essentially since it was born (along with a central repository), especially since Firefox add-ons can do so much more with the browser. Admittedly, there's no concept of money with the add-ons, which makes them almost useless as a way to build a business.
I agree Firefox are overall more behind, but they are still an innovative company coming up with some fantastic tech. The main reason they're behind is probably because their codebase is pretty old, back from the days when they were busy saving us from IE6.
Native Client isn't proprietary, its open -- no other browser vendor has adopted it, but that doesn't change the fact that its open. Backward compatible is a real issue with asm.js vs. NaCl, there is no reason to obscure the real issue by throwing a fake one in with it.
A key focus of NaCl and asm.js is performance, and IIRC most benchmarks are showing NaCl with somewhere between a 25%-33% additional overhead over native C, and asm.js with somewhere in the neighborhood of 100% additional overhead, so I don't think I can quite agree that asm.js does everything NaCl is supposed to do but better.
That said, the other advantages are there, and the performance gap may close.
Was it developed by a collaborative effort across the market or was it dropped as a complete solution that they then tried to get approved by a standards body? Then it is probably proprietary even if open to everyone to use.
This is a feature, and I like it.
The rest is just flamebait.
Albeit, that is certainly peanuts next to the v8 interpreters heap, the web page itself, loaded images, etc, but there is a reason few programs do the multi-process thing.
Chrome doesn't really get a speedup from it, it gets a stability bump. If one tab crashes in Chrome a tab goes, if a tab in firefox goes it drops the whole browser process.
As a development design pattern, if you are concerned with stability, you fork your threads into their own processes and prepare for them to go down in flames.
[1]: Restore tabs on exit. If one do not clean up after a while, the tabs will just continue to increase.
I don't know if the author is trying to make Mozilla prioritize his desired features, but the years-behind metric doesn't sound very friendly, or used-centered for the matter.
It was only very recently that WebKit2 handled most of this stuff -- up until then they just had a single WebProcess (I think Safari on Mavericks is the first multi-WebProcess browser Apple have shipped). So it's a hard problem and isn't due to some lack of competence that Mozilla have been slow to adapt. FxOS is fully multiprocess afaik.
Actually getting the rendered page image into a window owned by another process is easy: windows and X let you host HWNDs and Windows from other processes (if you choose to allow your WebProcesses access to the window server) or you could draw into a shared memory segment. The hard stuff is all of the regular browser hard stuff.
This also ignores the other important benefit of mparch: sandboxing. The browser needs some elevated access but the page content does not.
(I also don't see how a one-process-per-DOM model prevents any other forms of sandboxing inside the browser. The OS doesn't understand webpages and cannot isolate them from each other - the browser does - so sandboxing pages is the browser's responsibility...)
I wonder if you could keep every page in its own process, but manually freeze unused processes and write them out to disk -- an application driven disk paging system basically. For pages where there's no state the browser could just kill them and reload them, iOS style (though the iOS browser doesn't care if it nukes state).
So whereas chrome has X number processes each using 0% for a total of 0*0=0% use, firefox would just have 0% cpu on its one process for a total of 0% use, obviously a substantial difference between FF and Chrome LOL.
I use both and the main thing I notice is they're so similar that you'll see articles from one or the other trying to differentiate themselves from the other to gain user share, as if the users can tell the difference. Even the addon / extension names are either the same or about the same.
Opera has been consistently much faster and better designed than Firefox. But it has one major, glaring fault: it's closed-source. I just don't trust closed-source software anymore. I also had concerns about privacy-invading directions Opera was taking (such as sending all of one's keystrokes to a search engine as you typed them in an address bar search -- your typing rate could be used to aid the search engines in uniquely identifying you). So I switched back to Firefox and have been using it steadily for a few years now.
With Pentadactyl, Firefox is much more usable in many ways than Opera was. Though even Pentadactyl can't make up for some of Firefox's ingrained faults, such as it's atrocious bookmark manager, or Firefox's incredible slowness.
I refuse to use Chrome on principle, because it spies on its users by default. This behavior can supposedly be disabled, but I have serious ethical objections to any browser that starts out in that state, and is associated with a spyware company like Google. Chromium is better in that at least it doesn't start out by spying on you, but it still lacks addons that are as capable as Firefox's Pentadactyl and NoScript.
Most recently I've started migrating as much as possible away from all of these bloated browsers. On 99% of the websites I visit, I now use w3m embedded in emacs. This integration gives me far more power than even Pentadactyl in Firefox, and it's far faster than any of the popular browsers.
w3m's main weakness is that it can't handle Javascript, but that's a strength too -- as I don't have to worry about Javascript exploits.. and 99% of the websites I care about don't require Javascript to function.
I am happy to get what I care about most: the content -- usually in plain-text format. And for the few sites I care about which annoyingly insist on using Javascript for full functionality, I can always use the other browsers as a backup. This approach might be a bit extreme for most people, but it works well for me.
The idea that multiprocess browsing is somehow related to multicore computers is a myth. In almost all use cases, there is virtually no performance benefit whatsoever to loading separate tabs in separate processes. This is because most web pages do essentially no work while in the background.
1. Vimperator (neither of the Chrome equivalents comes close, IMHO)
2. My slowly declining trust in Google
I do wish FF would support multiple tabs a little better, though.
Yes, they are. The comment quoted is from 2012.
"Comments on Firefox’s bug tracker indicate that developers will be looking at sandboxing the Windows 8 Modern Firefox app, Firefox OS, and experimental Servo browser on OS X"
"will be looking at" is misleading. Servo is sandboxed, today. Both at the OS level (through the same sandboxing primitives that Chromium uses) and through Rust's memory safety features, for two layers of defense.
I use Firefox - on Windows. I am not a Gnuist. I use Firefox because there are some areas where my interests and those of Microsoft and Google are not sufficiently aligned to justify using their software in lieu of convienent alternatives. The desktop browser is currently one of them.
As an aside, I don't really want my browser sucking up as much CPU bandwidth as it can.
The big problem I have with Firefox is developing extensions. Developing browser extensions in Chrome vs building them in Firefox is like night and day. While I'm not an expert, I've built a few extensions for each browser.
Building one in Chrome has been a very pleasant experience for me - the documentation is good and up to date and things work very logically.
But developing Firefox extensions is an exercise in complete frustration. Documentation is hard to find and out of date. Functionality that is needed is frequently changed and deprecated. Common things are made difficult and frustrating. There are code examples found all over the web, but most of them are out of date.
Purely speaking with my developer hat, I would not build another Firefox extension if not absolutely required to for a specific project. And I dislike a lot of Google's policies and love Mozilla's nature, but I think Google is clearly much further ahead in terms of offering a pleasant development experience.
I don't know what the answer is, but for me personally Firefox isn't working.
However I agree there are problems with it. One of them is disk access - if you have a machine (say a netbook) with a slow disk, firefox seems to stop responding for a few seconds every once in a while. This is exacerbated by an ever growing places.sqlite, but still happens even with that flushed regularly (or chattr +i'd)
In fact, right now I am working on adding a new feature to the Gecko Profiler that identifies such I/O and makes it easy for platform devs to easily pinpoint the offending code.
If you're anything to do with the mobile/android team, could you tell them their policy of aggressively unloading background tabs is annoying and that it frequently seems to screw up when you hit the back button, either jumping back too far or going to previous ...err... forks in the history tree.
A couple months ago I switched back to Firefox because Chrome lost my open tab session in some cases (hard crashes when loading the old session), due to privacy issues and because it often triggered long swaps (locking the process) when dealing with lots of tabs (I usually have like 50-60 tabs open in several windows). Also because I support Mozilla's values.
Unfortunately I'm not very happy either. Alongside the issues commented here, I noticed these problems:
- Sometimes it just goes to 25% CPU usage and the browser becomes really slow. The only choice is to close all windows and open Firefox again.
- Multimonitor and Flash sucks. I'm not sure if this is Firefox or Flash's fault, but it often chooses one window as its parent, regardless of where the tab with the Flash content is located. Clicking/hovering the embedded object fails when the object thinks I'm in the wrong monitor. Also, going fullscreen usually pops the window in the wrong monitor.
- The JS PDF viewer is slow as hell (I once spent 5 minutes waiting for it to zoom, and I couldn't close it because I feared losing some changes in other tab). Firefox's JS engine is quite slow in and of itself, who thought it would be a good idea to embed a JS PDF viewer?
- Extensions take ages to be updated in the Addons repository (especially compared to Chrome) which frustrates extension developers and users. I personally know a developer who had to move away from it and tell users to update the extensions themselves.
- When a JS script is locked, the whole browser locks.
- If you close a window by mistake, there's no way to bring it back, so say bye to your precious browsing experience. "Undo last tab close" only works in tabs within that window! So frustrating. EDIT: apparently this is possible, check https://news.ycombinator.com/item?id=5905649.
- The latest contributions seem to focus on how to be more like Chrome, and less about providing users a better product[^1].
- Did you ever need to mess with about:config? Black magic.
- Tab groups suck. They're useless and there's no way to disable them once you activate it by mistake. You have to mess up with about:config (see above). Talk about a great UI.
They completely lost the track on what users need. We don't need another Chrome clone nor cool UI changes in each new version (especially when they get them so wrong). They probably spend lots of hours tweaking things that didn't need tweaking. What's wrong with the current UI that needed such a big overhaul? We need a browser that works, not one that looks like Chrome.
Mozilla, making Firefox look like Chrome won't make users switch back from Chrome. If people want Chrome, they'll stay in Chrome. Period. Get rid of termites before painting the house.
[^1] E.g. http://limi.net/checkboxes-that-kill or the new UI which is a ripoff of Chrome's. I can see his point about the "checkboxes kill", but removing features with perfectly fine use-cases instead of moving them to an advanced config page is never a good idea. How about an usable about:config alternative? "We designed a bad UI for advanced features... lets get rid of those features instead of fixing the issue!"
Ctrl-click also seems to work (on Linux).
Then I started to experience Chrome crashes.
These were total crashes, that either kill the browser or freeze the OS - Ubuntu 12.4 Linux. The only thing I could say was consistent is that every time I was in Google docs (if anyone on that team is reading, I'd swear it was a drag event in Drive).
Once you move your main email and Drive browser back to Firefox, you're kinda stuck there. Every link opens in that window, and unless you start the dance of copying links from one browser to another you just tolerate it.
Firefox is now the primary browser again in my work.
I use an extension for Chrome called Session Buddy because even in the initial periods of the browser, session management wasn't seemingly a priority. Session Buddy is way better than any browser's internal implementation, possibly only followed by Firefox but there again I use another session manager plugin so my thoughts are further skewed.
I guess tl;dr is I don't believe a browser really needs perfect session management internally, especially given how full featured these plugins are. My only gripe is they aren't magically grafted in but I suppose due to the sheer number of plugins and feature parity means choosing one wouldn't be easy and you'd want to promote a system where it could be replaced easily. The current mechanism of finding plugins that suit your needs is good enough to me but I'm a developer, not a grandma.
I originally switched from Firefox to Chrome because of some web code I was developing where I accidentally made the server send unlimited data (it was supposed to send one line of status information every 15 seconds - I forgot the sleep). Firefox's single process model resulted in a hung browser while Chrome let me find the cause.
https://dutherenverseauborddelatable.wordpress.com/2013/04/1...
https://dutherenverseauborddelatable.wordpress.com/2013/04/2...
https://dutherenverseauborddelatable.wordpress.com/2013/05/2...
https://dutherenverseauborddelatable.wordpress.com/2013/06/0...
The real problem though is chrome's interface really is completely inflexible. I like a thinner browser than either of those. Hence, my firefox setup: http://i.imgur.com/XAyc8Tu.png .. 17 pixels more space than chrome can be gained easily (firefox with only the extension 'pentadactyl'). And further more, since firefox's appearence is all just XUL it can be styled to be as thin or thick as I like.
So yeah, firefox you can change the ui to be vertically thin. It's simply impossible to do that with chrome.
I disagree. I find tab groups to be very useful.
I tend to keep multiple tabs open at once, and for multiple tasks. The tab groups lets me easily organize those tabs around a single thought or task. I can keep my music streams in one tab group, and my daily webcomics in another. News feeds go in their own group. The Python standard library reference and whatever tutorials or How-Tos are relevant to my current project get their own group. You get the idea. I can then quickly swap between these groups and the tabs within with hot keys without having to reach for the mouse and scroll through what might otherwise become a cumbersome number of tabs in a single window.
Yeah all car manufacturers copy each other as well. They all got steering wheels and other things that we expect of modern cars.
I don't think the fast release cycle nor the copied UI is an improvement, but they should take from Chrome whatever they think is an improvement. In fact, I believe Opera was the first to use this UI and you could just say that Chrome is lagging behind Opera, if you follow the twisted logic of howtogeek, but I might be mistaken on who was really the first.
Firefox OS has a multiprocess architecture, I believe the main problem for desktop is plugins / backwards compatibility
Today i was research on topics and shopping around for price. It has been a long time i have had more then 150 Tabs opened. Many of those has lots of image as well. Firefox nearly slow to crawl. Scrolling was no longer smooth, nothing were snappy.
I started using Firefox again and everything works except for some reason, I cannot login to Twitter. After entering the details, and clicking the Login button, I'm redirected back to the login page. I can view tweets just fine (without being logged in).
Still there. Loving it. shrug
A proprietary product of a data-mining company? Seriously? It's comical that the writer even bothers to mention "security" in such an unsecurable context.
Moz + Noscript + Request Policy is not perfect, but a lot closer to my ideal than Chrome.
That, and the whole privacy thing.
Three layers on top (buttons, tabs, url-bar), imagine if I enable bookmarks :P
Darker than others... forget the hacker look, come to the light
Simple tasks easy to do with Chrome web inspector are way more complicated in Firefox
Too many buttons, too many options (people like simplicity)
GGC, Generational GC, Hopefully there will be less pauses in Heavy GC Web Apps.
Necko - Their Network Engine that is now causing 30-40% of janks. Will get rewritten.
And there new Graphics Layer that god knows what happen to it.
Sigh..