Multi-process Firefox brings 400-700% improvement in responsiveness
techcrunch.com
techcrunch.com
That's the money quote here. I've been waiting for this for a long time actually. Every browser I've tried except Firefox just basically eats all my RAM and other app performance (e.g. compiling stuff) goes down the toilet.
Then on the other hand FF has not been so snappy and responsive traditionally. So responsive + soft on RAM is the combination I've really been waiting for. Let's hope they can deliver.
I do get what you're saying though.
Source?
RAM available in mobile phones seems to grow exponentially [1]. Power efficency of processors also seems to grow exponentially [2] (does anybody have a source for ARM processors?).
[1]: https://i.imgur.com/AWkmMJc.png (note logarithmic scale) [2]: https://www.karlrupp.net/2013/06/cpu-gpu-and-mic-hardware-ch...
Remember that RAM has to be powered on for every refresh cycle...
It is "nothing" compared to screen or radios, but it is there. So you won't be seeing more than one Dram chip in there, footprint notwithstanding.
The average consumer hardware improves at nowhere near exponential rate (although I guess it depends on the timescale and your willingness to fudge the graph to sparse data points).
The performance has gotten worse for users of a computer from 2006, but it has improved for users of ten-year old computers (since a ten-year old computer in 2012 would have been from 2002). If you assume that a computer is less likely to be used the older it gets (and that this rate is roughly stable), then I am not ignoring older hardware at all.
>although I guess it depends on the timescale and your willingness to fudge the graph to sparse data points
thus is the nature of all real-live long-term trends. If you pick a sufficiently small timeframe, they never work.
I'm not sure I follow that logic.
/edit: Yes this is wrong. I made a mistake. My "gaming" desktop is "only" 8 years old. It has a 4 core AMD processor. It's on par with current atoms.
Maybe it should be "00es"?
A 11 year old Pentium 4 @3.4GHz has a passmark score of 401. A modern 2-core $40 Celeron G1840 @2.80GHz has a passmark score of 2984. And that's among the cheapest processors you can get as end-user.
1: https://www.cpubenchmark.net/cpu.php?cpu=Intel+Pentium+4+3.4...
2: https://www.cpubenchmark.net/cpu.php?cpu=Intel+Celeron+G1840...
It is meaningful when you consider what the average user is purchasing. Back then you had to purchase good stuff to run the latest office apps, etc. It was common that the only thing needed to get a friend into the gaming world was the purchase of a graphics card. Now most casual users do not have anything close to what is offered in high-end gaming PCs.
I don't think that's representative of how Firefox works. I used Firefox similarly in 2013 and didn't see those problems; the users supported by my company, mostly on 4GB machines, also didn't see them.
I have a 112 tabs open right now and Firefox has been running for a couple of weeks, which means thousands more have been opened and closed. It's using 4 GB of memory (EDIT: Which is more than usual, but it's fine with me).
Firefox is still a lot better at RAM and CPU usage when hundreds of tabs are present in the browser. This persists when using e10s.
I have an extension that basically unloads a tab (I guess it freezes the state and serializes it to disk) and frees its ram.
It works very well, so well I'd love to use it on my phone too.
I have commented at length why I use so many open tabs. Basically that's my cache-to-do-list. Once I revisit certain tabs enough times they get upgraded to a bookmark. What bookmarks don't do well but tabs do marvelously is preserve the trajectory and context of how I arrived at the page. Very useful to recreate the state when I visit it later.
It only loads the actual tab when you activate it though, so I don't think all the tabs are being stored in memory, just the ones you activate during a session. I probably actually load about 30 or so during a session, with many more being opened, looked at then closed.
Tab Mix Plus FTW!
That indicates really poor buying decisions! I'm curious about why would this happen.
TP5 loads 100 popular webpages, served from a local webserver.
I don't know if that means the test pages are up-to-date copies of real-world pages or not. On one hand, real-world pages have certainly been getting heavier, and it would bear mentioning if that fact was not reflected in this test. On the other hand the graph becomes really hard to interpret if the test suite isn't a constant.
[1]https://build.mozilla.org/talos/zips/tp5.zip
[2]https://github.com/mozilla/areweslimyet/blob/a42e69eaac4c764...
its good to monitor and ensure that stays within acceptable parameters though, and potentially improved upon again. at least the gain is pretty slow since they "fixed all the stuff"
I really wish I had the option to trade off responsiveness for memory usage by being able to mark tabs as "no background activity allowed" so FF could serialize that content to disk when the tab isn't in focus.
I've heard that some people set Firefox to not autorestore tabs on load, and then periodically close and reopen Firefox, so their background tabs aren't loaded. Pretty clumsy, but I guess it gets the job done. I don't know if there's any addons that do something similar.
My phone reports it has 600MB of RAM free, so I dunno what's causing FF's behaviour here nor how to disable it. I can't always reproduce it, but it happens enough that every browsing session has some sort of frustration.
> What if you spent a few hours filling out some government form online, then you went and took a break by watching a few YouTube videos? Memory usage might spike up, and the browser decides to unload the tab with the form. You'd be mad if form state got lost when you switched back.
GP is talking about actively marking tabs as "no background activity allowed".
I have been searching in vain for something like that: stop scripts in background tabs except for specifically whitelisted pages.
There is absolutely no reason that I can see why every website and their ads should be allowed to roam around freely in the background.
There is however a number of reason why they should not be allowed. Battery life and phishing attempts readily comes to mind.
I guess whoever comes up with a well-working extension for that can easily ask me for USD 30 or even 40 and expect me to be a walking billboard for it ;-)
Have you tried UnloadTab?
If it is unloaded that means I have to connect to the Internet again to get hold of my page again?
(I'd think what I want is just to pause any javascript or other processing from any webpage that us not focused in the browser and not specifically whitelisted.)
That's also a bit beside the point. I have a workstation with 48 GB RAM. I left a browser running in the background and had one tab consume 20 GB on its own before I killed it. Many of these leaks seem to just be unbounded memory growth, so that hypothetical 2 GB you add is going to be eaten up in short order anyway.
Of course the extra 2Gb might help for someone with less than 48Gb in their machine (most of us!).
But my original point is really that dismissing gross memory usage by saying you can buy more RAM for cheap is no longer accurate. In many cases, your machine's configuration is unchangeable. Getting an extra 2 GB RAM isn't $30, it's the cost of a brand new device. In other cases, where you might have configurable hardware, you often have to buy the largest capacity chip available and the economics get skewed. For SODIMMS, going 8 GB -> 16 GB is reasonably cheap, 16 GB -> 32 GB is fairly expensive.
I'd argue having to do a hardware upgrade for a web app in the first place is a bit silly. There's often very little reason for these apps to be so large in the first place.
It is about things like harrassing my CPU multiple times a minute after my search results have loaded (looking angrily at you googlers, google was the worst offender here it seems! (Windows 10, FF))
To make this work reliably would be quite difficult.
Or you could be really conservative: only assume statelessness for pages without forms and without any Javascript. (These do exist!)
We have seen things people wouldn't believe. Webpages without any Javascript. Webpages using correct http responses. Watched C-beams glitter in the dark near the Tannhauser Gate. All those moments will be lost in time, here come the transpilers
I tried to use chrome once and it ate all my ram, and they were saying it uses less ram then firefox back then.
https://addons.mozilla.org/en-US/firefox/addon/tree-style-ta...
For me, it is /the/ absolute killer feature for browsers.
---Alex
More search tips can be found here: https://support.mozilla.org/en-US/kb/awesome-bar-search-fire...
edit: oh, I'm using ad blocking add-on and maybe you don't, that could be one reason, besides different websites another reason could be that you have the browser open longer than me.
> so FF could serialize that content to disk when the tab isn't in focus
Isn't there an extension (Suspend Tab?) which does this?
Its also one of the most energy efficient on most platforms.. (edge is more efficient on Windows, though it does not take into account that the engine is always running even if another browser is in use)
I've been tracking lots of programs with powertop, including many browsers, in the quest of an efficient desktop and Firefox is pretty good.
I also appreciate its great plugins. With vimperator I can configure Firefox using a dotfile, and setup lots of neat things like:
1. A ssh proxy mode that also routes DNS queries
set! network.proxy.socks=localhost
set! network.proxy.socks_port=8888
set! network.proxy.socks_remote_dns=true
command -nargs=1 proxy set! network.proxy.type=<args>
2. Site-specific Google searches, with autocomplete for the site URL
command -nargs=+ -complete=url site open google site:<args>
map s :site<space>
All this is really neat functionality, and very simple to achieve. I am waiting for good per-tab sandboxing, but in the meanwhile I have aliased firefox to /usr/bin/firejail so the whole application is sandboxed.
Apologies for the offtopic, but it's really exciting how a program that seemed to have lost development momentum is becoming really great again. Quite close to being the emacs of browsers if you ask me, with so many features and scriptability. Paradoxically you can get best access to these features with a plugin that tries to emulate vi, but you get the idea!
I couldn't find much doing a google search for "vimperator ssh".
Firefox was first released for android around the time I bought it though, and turned it into a capable web browsing device.
As for security, no, unless there's some unknown vulnerability now (or that they create), that will be ported over and somehow more effective between (potential) processes. So, I doubt it.
Ref: https://labs.vmware.com/vmtj/memory-overcommitment-in-the-es... (search "page sharing")
Should be vulnerable to FFS, if I'm not mistaken: http://arstechnica.com/security/2016/08/new-attack-steals-pr...
It's sort of like when WebGL was first getting going, and the GPUs of the time didn't expect to be fed shaders directly from potentially-malicious web sources. Rather than severely restricting the WebGL API, we got a new generation of GPUs that fail safe.
When Rowhammer was first announced, people said "it's okay, we have ECC". Then ECC was shown vulnerable. "It's okay, vendors have promised to fix it in DDR4", they said. Now DDR4 is out and vendors have not deployed the fixes systematically[1] and you have to benchmark every single RAM stick to make sure you're not vulnerable.
I'd really appreciate software workarounds as long as hardware vendors keep fucking up.
[1]: http://www.passmark.com/forum/memtest86/5395-rowhammer-mitig...
fork(2) does COW. With careful design† forking a new process only results in new and modified pages being not shared.
† Hard! But single-process threads + security is hard too.
http://unix.stackexchange.com/questions/58145/how-does-copy-...
Just wanted to point out that memory usage isn't necessarily inherent to multiprocess, but with a sizable portion of users on Windows the point is practically moot anyway.
There are many things that can be done
A lot of the improvement in the reliability of consumer grade SSDs is due to OS improvements in how they manage their write operations to the hard drive. Windows is considerably more conservative in how it uses it's page file and what does it write off to the SSD, linux has also made a lot of improvements in how it uses the swap partition if it uses it at all, other things like having to be able to suspend the PC in "hibernation" mode without actually having to write a "hibernation" file to disk by keeping the CPU at pretty much an off state but refreshing the ram also saves a lot of day to day write operations especially on mobile devices.
So overall I highly doubt that Firefox went with the suspend to disk route, because if it did it would be a pretty big step backwards.
Also as power conservation goes writing to SSD/HDD is more expensive than writing to RAM and keeping it refreshed, so using the SSD as a storage device instead of the RAM can also have negative effects on the battery life of mobile devices.
>A lot of the improvement in the reliability of consumer grade SSDs is due to OS improvements in how they manage their write operations to the hard drive.
We're talking on the scale of writing 500gb to your SSD every single day for 10 years in order to reach their endurance limit (on average). Writing a few more gb at worst from your browser is hardly going to affect that. It's even doubtful that OS improvements change it much, as Windows 7, which a lot of people are still on, doesn't come SSD optimized.
Also, from a more philosophical standpoint - this isn't Mozilla's issue. They shouldn't have to worry about conserving SSD writes. That's not their problem. That's the OS / Disk firmware / manufacturer's problem. If I want to write files to the disk at a very reasonable rate, I should feel free to do that.
Do you have any references for this? I don't think I've ever heard a story of a consumer user running out their writes. Not saying it hasn't happened, but it's not enough of a common occurrence to be a major factor in reliability.
In my experience the overwhelming improvement in reliability is in the firmware of these drivers coming out of the perpetual beta phase (and the death of OCZ)
b) hosting some tabs in the same, sandboxed process is still stronger than hosting all of them in the parent process.
So you shouldn't assign too much weight to it.
So splitting everything in sandboxed processes can play a big part in the security in a defense in depth approach. Of course you are not going to call it a day with just that, but still, it's extremely significant.
How so? Are you saying that simply by being single-process currently firefox is orders of magnitude less secure than other browsers?
And that it would still be orders of magnitude less secure even with sandboxes, where just multiple tabs might share a sandbox?
From a modeling POV it might actually be better than ASLR, DEP, etc, which are "only" mitigations for which multiple approaches are know to exploit other holes up to arbitrary execution and complete compromises in some cases, even if they are perfectly implemented (in limited conditions), while multiple sandboxed processes can be, at the model level, perfect. In practice (when you add bugs in the picture in all layers, and not just one, and when you actually don't isolate everything like crazy), it is obviously just another tool, but a very significant one (let's drop the "extremely" - it not about being an order of magnitude more "efficient", which would be a very blurry notion anyway -- I mean I guess at one point DEP even alone could maybe be considered orders of magnitude more secure, depending on your precise definition of everything).
What I want to convey about defense in depth is that it is about layering various mechanisms, independent if possible, to protect against various risks, while making the hypothesis that some will fail. You don't casually remove a layer (or pretend that a layer is equivalent to almost none because it does not protect you against one risk in some cases). Defense in depth is actual engineering, like the various safety components in any dangerous system. And the value of sandboxed processes is pretty clear. That it is not a silver bullet does not render it useless.
that said i think firefox's choice is more sensible.
Can't wait for this fix!
FF is for work, Safari for non-work. Chrome when I need Flash or testing Chrome-only content (some great plugins) - pretty rare.
Firefox is my favorite browser overall (especially on other OSes), considering its smaller memory footprint and lack of sluggishness with tons of tabs (compared to Chrome) and the fact that it's from Mozilla, a company I hugely respect and admire (even with some of the missteps that have happened in some aspects in the past few years).
In actuality, very few non-server PCs can be populated with any more than 16-32 GB. It's not a matter of bother or expense at all. It's a design limit.
Every single time I've driven a non-server PC into hopeless swap thrashing, it's been the damn browser that was the culprit. Don't bother trying to advise me to bookmark 100 open tabs in 10 windows to save space. That is (forgive me) an insult to one's intelligence.
> you need to close some tabs
This comment is really not contributing anything to the matter. Obviously everybody could think of closing tabs without you advising to do so, and if they don't, it may be because they want these tabs around. I regularly keep a lot of tabs around because this is my work pattern.
Personally I wouldn't buy a laptop that is incapable of supporting the amount of ram that I need for my "work pattern".
> Personally I wouldn't buy a laptop that is incapable of supporting the amount of ram that I need for my "work pattern".
Clearly you've got it all figured out. Too bad not everybody can be you, otherwise we wouldn't have any tradeoffs to deal with.
Of course I have tradeoffs to deal with... But yes, I do have it figured out. Thanks.
If it's just inefficient, that's a different story.
So what you might think of a benefit one day might be a drawback the next if you want to open twice the same amount of tabs, or run a big build in the background.
It has been mostly fine (except for an annoying OS-X multi-screen bug where it screws up the sizing).
I was really looking forward to this feature to help close the gap on Chrome performance.
Until August (I think Firefox 48.x), when it became unusable on any site with... something. I'm not entirely sure what triggers it- I don't think it is just video alone. Something make the entire browser lock up entirely for minutes, and sometimes it even runs out of memory and I have to kill it via the OS.
No add-ins (except for Firebug).
Frustratingly, I can't replicate it well enough to be a useful bug report.
I'm this close to switching back. Muscle memory and shortcuts to Firefox is the only thing stopping me.
So.. this will be great, but please make it a workable browser.
I have to use Chrome for anything video related or JS heavy (monitoring/graphing stuff for the most part), but I'd hate to switch to it for everything. There are too many addons that I rely on in Firefox, on top of my general dislike for Chrome's minimalist UI and standard Google privacy concerns.
I've tried turning on the config option for electrolysis, but it breaks some addons, so that's still a no go for me for now.
All this takes maybe five minutes on Linux, on Mac OS X it will freeze the OS for long periods of time and take 40 minutes to run. In terms of hardware, the Linux box has less RAM, CPU and slower discs.
Regarding the Javascript stuff: Part of it may be that Chrome is the new Internet Explorer. People develop on and test for Chrome (because everyone uses Chrome, right?). Chrome does have the better Javascript engine, still, I believe that much of the slow Javascript on Firefox (an other browsers) could be avoided if people bothered testing a little more.
Chrome does have the better Javascript engine, still, I believe that much of the slow Javascript on Firefox (an other browsers) could be avoided if people bothered testing a little more.
All major engines are pretty much comparable speed-wise. The biggest difference is probably in memory management (of the HTML & JS engines), which may favor some forms of site/lib structure and architecture over others – that's IMHO where the majority of slowness comes from (for any browser).Safari is the only logical choice on OS X laptops, at least. Everything else just eats up the battery like crazy.
Afaik firefox still doesn't have OpenGL accelerated compositing (at least not enabled in stable builds yet) on linux
On OSX and Windows it has hardware accelerated compositing, video decoding, canvas etc...
Edit: I should emphasize that I'm not saying Firebug is superior, just that I'm used to it.
https://blog.getfirebug.com/2016/06/07/unifying-firebug-fire...
[1]: https://developer.mozilla.org/Firefox/Developer_Edition
I wish I could use this on my phone.
EDIT: Looks like I should switch to the https://github.com/StevenBlack/hosts source, as it includes the one I referenced plus a lot more.
You might want to try Firefox's built-in Web Console. I switched a year or two ago when it was less powerful than Firebug, but notably more stable, and I haven't gone back since.
> except for an annoying OS-X multi-screen bug where it screws up the sizing
Can't argue with you there. At last exiting full-screen video no longer takes the entire browser out of full-screen.
Maybe it's a personal thing, but I much prefer the built in developer tools on Firefox to that of Chrome.
But firefox scrolling is especially slow. irccloud.com is the main culprit (and I use irccloud a lot). It's pretty bad in gmail as well.
The react app my team is working on is also far slower in Firefox. Try scrolling this in Firefox and Chrome and see the difference (the scrubber is at the bottom of the blue area, like a video). Butter smooth in Chrome, horribly slow in Firefox: https://hsreplay.net/replay/7VAKLeMNaXvshAawnUUoni
It's pretty bad on both Windows 10 and Arch Linux (different computers). Worse on Windows, actually, but only after some time -- I'm in ~30 channels, fwiw.
Mind filing the bug, since you can reproduce and profile?
Edit: mstange did in fact file one: https://bugzilla.mozilla.org/show_bug.cgi?id=1300848
It doesn't fix performance in your react app, though. I've filed a bug about it: https://bugzilla.mozilla.org/show_bug.cgi?id=1300848
[1] https://bugs.chromium.org/p/chromium/issues/detail?id=393395...
Get Chromium.
However, something recently has changed. Firefox will work fine and then something will cause it use a large amount of CPU that it doesn't let go of even after closing all the tabs. I have to close the whole browser and re-open it. This can happen a few times a day.
I'm hoping it's a regression that will be fixed soon.
Which one do you use? There are several.
Tab Mix Plus [1]
TooManyTabs [2]
Tree Style Tab [3]
Use one or more of these with the Session Manager [4] extension and life becomes a lot easier with several hundreds of tabs. I highly recommend looking at the configuration options provided by each of these extensions and adapting them to how you'd like them to behave. Some of these are also developed with compatibility with the other extensions in mind.
[1]: https://addons.mozilla.org/firefox/addon/tab-mix-plus/
[2]: https://addons.mozilla.org/firefox/addon/toomanytabs-saves-y...
[3]: https://addons.mozilla.org/firefox/addon/tree-style-tab/
[4]: https://addons.mozilla.org/firefox/addon/session-manager/
I also switched from Chrome, but for slightly different reasons...I got to thinking about Google, and Chrome,and ad-blocking, and it occurred to me that Chrome will probably never allow extensions on Android, not because it's technically not possible, but because ad-blocking is bad for business (if your business is showing ads).
How does the Chrome team reconcile this? We know that ads are annoying, and ads can track you, and some ads can even be malicious. It seems that blocking ads make a browser better. But the Chrome team is not allowed to block ads on Android, so they are purposefully making a worse mobile browser.
Anyway, I do a lot of surfing at night in bed on my Android tablet, and I'm going to stick with Firefox.
You can get Chromium for desktop with sync and codecs as well : https://github.com/henrypp/chrlauncher
I tried again on 48.0.2, ... same thing.
I can't nail it down specifically enough to file a proper issue report, so I guess I'll keep trying when the next releases come out.
I also notice that webapps seem to like Chrome better, but FF usually performs "well enough" that I've put up with it because I find it (for me) to be markedly better at helping me deal with the ginormous amounts of text content I apparently consume. But webapps have been degraded enough for the last month-or-so that I'm running chrome in parallel just for those.
I love FF and I'm hoping that this is one of those isolated things that the fabulous team over there fixes before too long. (I suspect it's a JS related something or other, but I haven't been able to track it down specifically.)
(Wow. Now there is a rambling comment!)
I had an issue but on Windows 10 where sometimes on video playback FF would just lock up and windows would restart the graphics driver. I also couldn't reliably reproduce it, it sounds like a similar problem.
This is my bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1280706
Now, it's a huge burden on Firefox and it's good to finally see progress on this front.
No, back then Mozilla was trying to do the entire UI logic in JS. That was the whole point behind reusing the same JS engine for both: https://en.wikipedia.org/wiki/XUL
By doing so (running both the UI code and scripts from the internet on the same non-reentrant JS engine) means that only one gets to run at a time (either UI code or JS from the internet). That's why FF's responsiveness sucks at times, any long running JS script from the internet also prevents the UI code from running.
The JS engine should either have been reentrant (so UI code could run even though some random internet script was still running), or there should have been two independent JS interpreters loaded, one used for the UI code only and a second for all the JS from the internet.
The same asynchronous logic used to have multiple browser engines with multiple JS runtimes talk to each other could also be used for multi-threading while making shared, thread-safe datastructures of non-JS parts much easier.
For now though you'll have to disable any plugins for it to work which can be a bit of a handicap. But... almost there :).
Not sure I would trust that list, the only two addons I run, is Tree Style Tab and Greasemonkey, both listed as compatible on the website, but going to about:support shows:
> Multiprocess Windows 0/1 (Disabled by add-ons)
The current version of LastPass is a big culprit, I've had it lock up nightly for >30s some times. They have a beta version that is e10s compatible which doesn't have this problem.
This thread seems to be the latter, my experience is the former. If you see bad performance/memory usage with a small number of tabs, are you sure that it's not due to bad plugins?
I think about:memory and about:performance could be helpful. I seem to recall they used to have some reporting on known problem plugins (perhaps as part of https://www.mozilla.org/en-GB/plugincheck/).
Is it possible that two users will see different functionality when they are both using the same OS and release, say Firefox from the latest version of Ubuntu?
With e10s, it was clear that it would be included in Firefox, so they just tested it by pushing it through the normal chain of Nightly->Developer Edition->Beta->Stable.
e10s code is present in all builds. The system add-on contains logic that decides whether to turn it on or not. The system add-on can be updated daily (or more often), in all channels.
* I apologize for the naming, this is entirely my fault. I spent a lot of the last twelve months scheming/designing and developing experimental update mechanisms for Firefox.
I'm also a little surprised there hasn't been an attempt to launch a completely new Firefox from the ground up. Regardless of what they're doing right now, its still a legacy code monster and much more laggy than the competition. Maybe this is Servo's ultimate purpose, but every Firefox advance is welcomed but always feels like another layer of lipstick on this pig.
Disclaimer: I use Firefox as my main 'non-work' browser several hours a day. Its good, but its very obvious when I'm not in Chrome from a performance/stability perspective.
I (hopefully) think this is what Servo is and will end up being. Has no legacy code, and is tiny in comparison to Gecko. It's OS support is fairly modern, and has no interest in supporting Windows XP. It's also written in such a way that allows them to be more multi-threaded and more concurrent than traditional rendering engines.
At some point you have to draw a line in the sand and start again, and I hope Servo is that.
You can check out https://github.com/browserhtml/browserhtml which is servo running standalone
Not really the plan. Servo may eventually become a product, but that would be in the very far future. But Gecko can use lessons learned from Servo, and try to share code with it, so you can incrementally replace parts of Gecko.
> and has no interest in supporting Windows XP.
I don't think that's the case? We don't have users on XP so we may not support it right now, but that's just an issue of priorities and not having the resources to fix all the things at once.
There are more XP users of Firefox than there are on Linux (probably for other browsers too). If Servo was a product it would probably care about XP.
Yup, hence my "hopefully", I'm aware small parts of servo may go into Gecko incrementally, however im still routing for something like browserhtml to be at a usable state, and for servo to run on its own.
> I don't think that's the case? PR link https://github.com/servo/servo/issues/1908 https://www.reddit.com/r/rust/comments/2vg0g1/this_week_in_s...
It might be worth making it clear what Servo's OS support is going to be, (for now and in future) to save any confusion
That is because Servo is currently not a product. You said "I (hopefully) think this is what Servo is and will end up being.", which talks of a future where Servo is a product (which can happen, though it would be in the far future). In such a case Servo would reevaluate supporting XP (unless it is so far in the future that XP support is no longer important, in which case most probably other browsers will drop XP support too). I say it in that comment too, "we're currently a research project" and "If/when we stop being a research project, maybe, but I doubt it". I'm less doubtful now, but yes, it's possible that Servo would continue not supporting XP as a product if there was a good enough reason for it.
The reason Servo doesn't support XP is not because Servo is Servo, it's because Servo is not a product.
Check out Servo: https://servo.org/
Also, browser.html already exists in an early form (and is bundled with Servo). It provides a new UI written in HTML, CSS and JavaScript, so it can be rendered by Servo as well.
(Servo developer here)
This isn't really the case. There is interest in doing this, but it's not something we definitely want to do. The problem with writing a new JS engine is that you need to duplicate years of performance tuning so while it might be safe, it would take immense amounts of work to make it efficient. Rust's safety benefits get reduced when you have JITs and all involved, too.
It would be nice to have, sure, but the amount of work in making a usable one is huge.
The same happened with the original Mac OS!
It's interesting how the history goes.
We had Netscape 4, and it was crap (remember when resizing a window reloaded the whole page?)
So they was a ground-up rewrite of the rendering engine, resulting in Gecko, which was put in Mozilla.
Gecko was great but Mozilla was a bloaty amalgamation of features, so this was created a pared-down Gecko version called...
~Phoenix~ ~Firebird~ Firefox, which had the great rendering engine and a lean, native-like UI.
Then there was KHTML/KJS which was built for KDE, which had a lean architecture but didn't have the investment to get the compatibility 100% there...
Which Apple then poured into the project in their fork to WebKit, which paid off in spades on the resource-limited iPhone a couple years later.
But Safari was only on the Mac (aside from their "Cocoa on Windows" version and a few open source ports), which Google took as a reason to create...
Google Chrome, where the biggest innovation was rendering each page in its own process (since Safari could freeze up due to one page going in an infinite loop in JavaScript).
So will someone out-Firefox Firefox and do what Chrome was to Safari for multi-processing? Take the rendering engine and put a new chrome on top of it?
KHTML was originally forked from QHtml (part of Qt) I believe (or they shared the same origin?).
Webkit later became a Qt component, the circle of life.
I would argue chromes biggest innovation was the UI, putting the address bar as part of the tab where it belongs (cue holy war) and better tabbing in general.
Mozilla was also the first to integrate the search and address fields, which they unfortunately stripped out of firefox (and many people think chrome introduced it).
Do you know when this was introduced/removed? I'm curious as to what this implementation was as I don't recall when this happened.
I always attributed this to Opera but I may be wrong
I highly doubt it, as there's very little incentive to create a gecko based browser vs a webkit or chromium based browser.
With thousands of MIPS and a gigabyte of memory on the job, it had better be responsive. It's pathetic how much compute power it takes to run a browser. Even when the pages aren't doing anything interesting. It's not like they're running a 3D game or something.
If you make the window smaller you can still do some stuff, but you need to restart FF (and wait for your 732 tabs to reopen!) to get everything back to normal.
Computers are meant to solve problems, not create mindless tab-closing jobs for humans! We should never have to close a tab! Tab hoarders unite!!
But I might be wrong as I have no ties to the development process of this.
I imagine they could have instead changed the architecture to be multithreaded in such a way to avoid my imagined sequential bottlenecks, but performance is not the only goal in a multprocess architecture. Sandboxing is another design goal, and that cannot be fully achieved with a multithreaded design.
This is all speculation on my part, so if anyone who actually works on the Firefox codebase could correct me, that would be very welcomed.
So the real decision point was whether to take an existing large C++ codebase and try to safely make it multithreaded or to take that same existing codebase, run it in separate processes, and make the communication work.
The latter is actually a simpler engineering task, in my opinion, and paves the way for doing things like sandboxing and whatnot once the initial rollout is complete.
I am also using Ghostery, however, with virtually everything blocked. It wasn't my intent to block ads, but that's mostly how it works out.
Amazon works for me though. Hmmm.
If memory serves, workers are unable to directly communicate with each other in Firefox when the UI thread is blocked, because message handling runs on the same process as the UI thread. Chrome doesn't have that limitation since it's already a multi-process architecture.
Chrome is right now way faster for me, but I prefer using FF so I am in the Mozilla camp right now. Eager to see this rolled out. Early versions of e10s were very fragile and not so usable for me, so I switched it off.
about:performance is a rather good indicator, if an add-on is causing slow-downs.
Where do you draw the line at what's acceptable use of ram and what's not? I have 32G on my desktop, is it unacceptable that chrome is using 8G?
If Firefox should conceivably run in 8GB, but ends up trying to use 33GB (in your case), that would obviously be bad.
Mozilla just targets efficiencies that include people with much, much less RAM than you for their baseline.
For example, Chrome could keep a hundred pages from your browsing history cached in RAM, so that when you go back, it loads that instantly. That is a speed-up, but you probably will never go back one hundred pages in a row. So, another program could almost certainly use the RAM more sensibly than Chrome, if that was the case.
And what Dotzler is referring to, is the worst kind of offense. If his promise holds true, Firefox's implementation will be just as good as Chrome's in terms of speed, but will use less RAM. Which would mean that Chrome is using some RAM without providing a speed-up, i.e. actually wasting that RAM. And that is always unacceptable.
I tried turning on the about:config option and the URL bar broke, so obviously something I have is incompatible - I suspect it's Classic Theme Restorer, although that site does list it as compatible.
At some point it became very usable and it still is today. HOWEVER while the interface is, yes, much more responsive, it is also NOTICEABLY slower.
I ended up reverting recently and I'm using single process Firefox right now. Its fast even thus from time to time the UI may block if there's heavy stuff going on.
Whatever makes e10s slow they gotta fix it... I suspect there's a lot of synchronization code.
Why so much RAM? I thought the OS could share pages across processes...
But you are also quite clearly underestimating how terrible modern browsers are. Mozilla is also currently working on a research browser called "Servo", which has been written completely from scratch and employs a more modern architecture, and that isn't too far away from 400-700% performance increase over other browsers in certain aspects.