Firefox 54: E10S-Multi, WebExtension APIs, CSS Clip-Path
hacks.mozilla.org
hacks.mozilla.org
I'm giving it another shot now that Electrolysis is there. I've only been using it for half an hour now, but my initial experience has been promising.
Also, get ready for Firefox 57. Just one example, in one benchmark, but the last data point on the right is accurate: https://screenshots.firefox.com/1DYGktRBpiIJBc7T/arewefastye...
This work has been ongoing; a bunch of it landed in 53, more in 54, and more has been landing since. What makes it a bit harder to advertise is that it's aiming at reducing performance cliffs and improving the chance that real-life code lands on fast paths, not on improving the performance of those already-fast paths. WebAssembly is where the "make the fast bits faster" action is, mostly.
I was hoping FF would get something like Safari's Content-Blocking Rules. For such a common use case its an area ripe for optimization.
uBlock0.webext.xpi @ https://github.com/gorhill/uBlock/releases/tag/1.12.4
Edit: I've disabled the addon signing requirement and all seems to be working. Hopefully it gets on the AMO soon.
In the meantime ublock works fine and is e10s compatible.
It lists dozens of incompatible installed add-ons such as cookie monster, Live Http Header, UserAgent Switcher, Vimporator etc.
I did search and it looks like HTTPS Everywhere, LastPass, and RescueTime aren't compatible. Privacy Badger is compatible, which may satisfy people looking for an ad blocker.
LastPass and uBlock Origin have Chrome versions so I have some degree of confidence they will be ported over.
FireGestures is absolutely essential to me, and no confidence there. Once Mozilla stops supporting XUL extensions I guess I'll use a Firefox fork or switch to Vivaldi. After... geez... 13 years of using Firefox. They finally forced me away.
Hopefully Vivaldi supports customizable mouse chord gestures by then.
Foxy Gestures in particular claims to be deeply inspired by FireGestures: https://addons.mozilla.org/firefox/addon/foxy-gestures/
But thanks for the link to Foxy Gestures-- I'll give it a shot!
Edit: Tried out Foxy Gestures. Not usable. First, no support for mouse button chording. Second, every single gesture pops up the right-click menu. Third, gestures don't work maybe 75% of the time-- difficult to tell if that's due to the right click menu popping up or if it's just plain broken.
Seems like it's this bug at fault. Mouse gesture Webextensions are broken on MacOS and Linux.
(Though it's probably worth letting the Foxy Gestures author know what bits seem to be missing as a FireGestures user.)
https://medium.com/mozilla-tech/a-quantum-leap-for-the-web-a...
Servo looks super fast, but they don't seem to want to just rip-out Gecko and put Servo in there, just replace bits and pieces over time. I think that's a mistake, despite the hurdles of doing that, and especially if the end result in terms of performance is something like 60-70% of Servo as opposed to 100%.
https://www.phoronix.com/scan.php?page=news_item&px=MTgzNDA
https://www.phoronix.com/scan.php?page=news_item&px=Google-S...
It's hard enough to change the wheels of a car while driving on the highway, you really don't want to do all four at once.
I've seen many cases (and been frustrated) working in a corporation where high levels of caution end up creating much more total work to make changes incremental. And when you do finish, the code is often not is nice as if it had been all done at once (at which point it probably gets left as is as more important things than refactoring, in the eye of business people, come along).
https://github.com/servo/servo/pull/16971 is an example of Bobby Holley, a Gecko developer (who's awesome, by the way) landing almost a full rewrite of the multicore scheduler, making tons of sites faster in Servo.
Otherwise: http://chromium.woolyss.com/#windows
Which packages http://www.henrypp.org/product/chrlauncher in the portable edition
The degree of trust required to run Chrome is equivalent to the one you need to run Vivaldi; the only difference is who you trust (Google vs a bunch of ex-Opera developers). If you don't trust anything that is not opensource, you shouldn't run Google Chrome - you should run Chromium or Firefox builds published by trusted parties.
Everyone still seeing poor performance in Firefox 54, I personally would recommend to do a Refresh: https://support.mozilla.org/en-US/kb/refresh-firefox-reset-a... because usually it is an old add-on or wierd setting that causes it. At least it was in my case, and after Refresh firefox was running very fast
On a core i7 with 16GB and a completely fresh Windows 10 install that has never had Firefox on it (so we can't blame an old profile on the machine), Firefox with a single plugin (Keefox) is noticeably slower than Chrome. Just logging into my Google account I saw surprising amounts of basic UI stuttering. Something like Inbox (which is admittedly a pig) loads slowly and scrolls sluggishly.
Chrome, by comparison, is responsive and snappy.
I wish it were different. I really want to like Firefox, but on this machine, with some very basic tests it's clear that, for me, it simply does not compare...
As much as I don't "like" it.. I use Chrome 99% of the time
The tl;dr: is that, compared to the XUL API, WebExtensions provide a very limited set of functionality, such that many existing XUL add-ons can't easily be reimplemented in or ported to the new API. On the other hand, it's early days yet, and there appears to be a reasonable amount of interest and developer support devoted to extending the new API so that it offers capabilities comparable to the old. I'd imagine it'll probably be next year this time, more or less, before the dust has largely settled.
[1] https://bugzilla.mozilla.org/buglist.cgi?f1=status_whiteboar...
Is there a config switch for enabling legacy extensions in 57+?
(Self-Destructing Cookies looks like it could be reimplemented on the WebExtensions API, but the dev doesn't seem to have any interest in doing so. That's a shame, but it doesn't mean no one else will do it.)
I don't blame Mozilla for pulling the trigger this way, though. Opening the roadmap for general community discussion and veto would result in endless bikeshedding, and users unwilling to abandon XUL add-ons in November have the option of sticking with 52 ESR or just not updating past 56 for a while. Conversely, waiting for feature parity with XUL would mean probably another three or so years before e10s hit stable, and Firefox is already three or more years behind in that regard - that much more delay might well not be survivable.
It's not a great situation to be in, but I can't see how Mozilla could've found a better option than the one they chose, and I say that as one who will lose some cherished add-ons in the transition - but if it's that or switch to Chrome because Firefox is too slow to be usable, I'll take the former, and I was strongly contemplating the latter before e10s became a thing. I doubt I was the only one.
Back in the day, when xul extensions were the way to go, things were great, for years the api was reasonably stable.
Then xul extensions were to be replaced by things created by the addon-sdk. To make things more interesting the addon sdk used a python based tool first, later to be replaced by node-js tooling. So (minor)rewrite needed, even though legacy xul extensions still worked as well.. But not for long, noo, for no good reason (because there was already talk of webextensions in firefox), extensions suddenly had to be signed and often MANUALLY reviewed, xul no longer allowed, perfectly fine extensions would not pass automatic review and would not be manually reviewed for no other reason than using legacy code that was hard to review.
So this meant extensions had to be rewritten to use the addon-sdk and jump through hoops to avoid using javascript libraries that caused the automatic review process to break. This all happened a good year ago.
Now, all these addon-sdk extension have to be rewritten once again, because webextensions.
This whole extension review process for addon-sdk, imho, should never have happened and should simply have been postponed till webextensions are ready (they aren't now, they are buggy as hell, yet currently extensions have to be webextensions in order to be published...). As a matter of fact, the whole addon-sdk should never have happened and mozilla should have moved to webextensions immediately.
To me firefox greatest strength was how moddable it was. Not only is this advantage lost by moving to webextensions, the horrid process from xul to addon-sdk to signing and broken review to webextensions must have cost them much goodwill from extension devs. And yes, it has tainted my view on mozilla, i think they honestly mean well, but they desperately need better management that doesn't jump on any hype laden bandwagon, right now they seem to be pushing out new toys that are watered down half functional versions of what used to available. Google might have a name to abandon their projects, i now have the same level of fate in the continuance of any mozilla project.
I agree, but there's a bit of hindsight there. Several years ago, basically, Mozilla people looked at the explosion of Chrome extensions and thought "we are too slow, making an extension is too hard, we need easier onboarding". Hence the addon-sdk project, which itself had a few false starts iirc. It might have had to coordinate with work on FFOS, so that might be the reason it took too long to come to fruition. Whatever the reason might be, by the time the SDK was ready Chrome had run away, making WebExtensions a de-facto standard, so they had to start all over again.
Is there a similar extension for any other browser?
Edit: I googled and found https://addons.mozilla.org/en-US/firefox/addon/cookie-autode... which is compatible with FF 57+. Two gotchas: it doesn't work on FF Android yet and it doesn't clear LocalStorage (some issues opened on FF tracker)
They have some feature overlap but also accomplish different things.
I'm not familiar with the release timelines, but I hope they keep that up at least until they stop supporting Firefox 52 ESR. I switched to it explicitly to keep my XUL add-ons working longer while the add-on makers/Mozilla catch up with the new API.
Edit: Just tested, and it seems like this is not included yet again. Will it come out in FF 55, in... 6 weeks?
Edit 2: Not sure if this would reach anyone who can fix it, but heads up that both links about the multiprocess firefox point to the Mozilla blog, not to medium as stated in the second link. Is it supposed to be this page linked to from the blog post? [0]
[0] https://medium.com/mozilla-tech/the-search-for-the-goldilock...
Edit 3: Plenty of people seem to be suggesting this is available already. I think that has been the case for awhile now, but not by default. It was something that was mistakenly specifically called out in the release notes for 53. I thought it was a much large discussion thread, but this is the comment I was recalling [1] with a reply linking to the bug report [2] which claims it was added to the FF54 release notes 3 months ago, but has seen action since including discussion in another bug just two days ago.
In about:config, look for media.block-autoplay-until-in-foreground.
On the other hand, at least it doesn't take installing an extension, the way it apparently does in Chrome and Opera. (Safari, too? Webkit seems the common thread here.) Failing to surface it to the user is an odd decision, but perhaps still preferable to what's apparently the typical alternative.
Eh? This has been default in Chrome for ages based on my experience. I was actually surprised that it wasn't the default behaviour on FF when I made the switch a couple months back.
Apologies for the confusion, and thanks for the catch! I'd edit my prior comment to remove the error, but that would make this subthread incomprehensible, so I'll leave it as it stands.
I just don't know why I should recommend Firefox to my mom. They really seem to be forgetting the common user.
Because it is not made by an advertising agency.
> They really seem to be forgetting the common user.
No, they have less budget to work with. But they're doing pretty good.
You can set about:config pref "media.autoplay.enabled" = false to test. YouTube used to be broken. I don't know if it still is.
I still have "don't autoplay until tab focused" enabled, though - it isn't a problem there.
https://addons.mozilla.org/en-US/firefox/addon/youtube-high-...
https://www.browserling.com/firefox/54/news.ycombinator.com
I've a bunch of VMs available for free testing. If there are too many people wanting to try it, then you'll have to wait in a queue for a few minutes.
You can check in about:support
Multiprocess Windows 0/1 (Disabled by add-ons) <input> elements of types checkbox and radio with -moz-appearance: none; set on them are now non-replaced elements, for compatibility with other browsers
This means that checkboxes and radio buttons can finally be styled like regular HTML elements. Goodbye label hacks.I'm so sorry. This was rolled back during 54 Beta due to regressions on other websites: https://bugzilla.mozilla.org/show_bug.cgi?id=1368457
Where did you see this mentioned, so I can go and correct those release notes?
[0] https://developer.mozilla.org/en-US/Firefox/Releases/54#CSS
So for the incompatible ones, particularly if they're rather niche (= not many people tried them with electrolysis), you may want to force multi-process and try them. And don't forget to make a report using the Reporter add-on, whether it went well or not ;)
How do you force multiprocess without disabling these addons?
Addons won't be disabled, but they might not work properly. If you see misbehaving extensions, install the Add-on Compatibility Reporter extension, then report by either:
* going to the Addons/Extensions screen and clicking "Report Issue" near the misbehaving extension
* clicking on the green puzzle piece now in your main toolbar, clicking on the X near the extension name, and then hitting the Submit button at the bottom.
The latter will also send a report saying the other extensions are actually good, so I would do it only after making sure you've somewhat tested all of them.
(All this was learnt today by insistent experimentation; the Addon Compat Reporter could do with some extra documentation or hints on what to do.)
browser.tabs.remote.autostart
browser.tabs.remote.desktopbehavior
browser.tabs.remote.separateFileUriProcess
but not the one you mentioned.
I'm on Firefox Developer Edition 54.0b14 (64-bit) if that makes any difference.
The overhead is minimal since we're not doing process-per-tab: we cap the number of processes to 4 by default. So if you have 500 tabs, loaded or otherwise, you're not going to have 500 processes. I believe we spin up the processes on demand, so if you have 499 unloaded tabs and 1 loaded tab, you should only have one content process, but I'd have to source dive to confirm that.
one process per tab is specifically why I quit using chrome, it wasn't working even for small amount of tabs (100) it ate RAM like crazy. Mozillas approach is better, user can control how many processes are created - users have control.
If there was one thing that caught my attention with Chrome back when it was released (2008?) it was its reliance on OS primitives (processes) as the building blocks for a stable and secure browser. This is essentially the same argument the Varnish folks did when comparing to other proxy solutions like Squid back in the day. I don't understand why Firefox is taking this route.
It has no security benefit without Site Isolation (which isn't unconditionally a process per origin either for performance reasons). In both Chrome and Firefox, any site can embed another cross-origin site in an iframe, and it will share a process (and a main thread).
Chrome does not use an unconditional process per tab. Nobody would.
I hope that you ask them to add it as an option instead of replacing the current model. Firefox already uses my 8GB memory quite easily when I have many tabs open.
They are also working on a UI for changing that max process count (don't think that's in Firefox 54, but I could be wrong), but that UI currently only offers values 1 through 7, as it's just really unlikely that a normal user would actually want to sacrifice their RAM like that.
Four is a reasonable default, especially given that multi-process is so new. It's possible that the default number may increase in the future, but that will depend heavily on memory usage.
Not to do process-per-tab and 500 tabs. Each browser process is several tens of megabytes, somewhat unavoidably (that's assuming you do some sort of embryonic startup and then forking so const non-relocatable data can be shared; if you don't it's a lot more). So on pretty much any consumer hardware you would be constantly swapping at best.
Which is why there is not a single browser that does process-per-tab. Chrome certainly doesn't: once you have more than a few tabs they start multiplexing them across processes.
At least in the Beta release; https://bugzilla.mozilla.org/show_bug.cgi?id=1358946
the CSS clip path is another feature stoked about.
Firefox Portable is a portable package for Windows, so you can run Firefox without altering any local browser installs or leaving personal details behind. It's a fantastic way to run multiple versions side by side with independent profiles for testing both websites and extensions. All versions of Firefox are available including the latest Developer Edition, Beta version, Extended Support Release, and Nightly releases. All packages are open source under the GPL and totally free. And you can test alongside portable packages of Opera, Iron, Maxthon, and SeaMonkey as well as the three main channels of Google Chrome (Stable, Beta, Dev).
The updater inside FF says 53.0.3 is the most recent version and all the DL links point to that version as well.
Edit (11 minutes after writing original comment): now it provides the update through the "in-app" updater.
https://www.mozilla.org/en-US/security/advisories/mfsa2017-1...
Additionally, how are tabs sharing the same process isolated from one another? Chrome uses Linux namespaces for each of its processes, and this keeps tabs separated by a sandbox that requires a kernel exploit to break out of, how does Firefox's sandboxing work within a process?
Had to give up Chrome on this machine because it kept crashing my machine, and go back to Firefox, but I'm happy of the improvements they are constantly making.
Though managed to crash my browser by runnign a heavy javascript application in one tab already. But that would lock up the previous one also.
Just because Chrome is a winning formulation, doesn't mean it is the only one. My armchair example is themes... both chrome and ff now look like alien invaders of corporate identity on my desktop. While that makes sense for Google, it hurts Mozilla's image with the community of hackers/tinkers that love Firefox for features just like that one; features that quietly say, "its your browser, you likely know best". Especially because themes worked reasonably well for so long(at least from the users perspective, I'm told the implementation was fragile).
Maybe its time to go all in on the hacker community and make Firefox, a "Linux first" browser. The PC market shrinking, no one is arguing that. Trying to squabble over pieces of an ever shrinking pie is not a recipe for success.
This is especially true for Mozilla. All its competition can simply forget about their browser products and still be profitable. A failed Firefox likely means Mozilla disappearing for the digital landscape.
I propose that the Linux/Hacker community is the logical conclusion of PC itself and, by proxy, the PC browser market. Long after everyone has gone tablet or whatever, the last hold out of the PC market will be the Linux diehards, why not cater to them from the get go? You are going to be catering to them when all is said and done.
As a tangent, a great starting "performance feature", which is what all this e10s stuff is getting at, would be vaapi support for hardware accelerated video on linux. You can't really call your browser fast when it chokes the CPU on any 4k video. The the only browser to currently support it on linux... sigh... chromium.
I don't know, in many ways that's exactly what the original Mozilla was, to little success. When the project steered to Phoenix / Firebird / Firefox and focused on Windows, things improved pretty dramatically. I didn't like the "betrayal" of the suite at the time, but it can't be argued that project velocity got so much better afterwards. "Linux first" would be a step back both technically and commercially (after all, FF pretty much own that entire niche already, there is no growth to be found there).
The reality is that Chromebooks and Chromeboxes are great computers for the masses. They're safe, secure, always up to date, no virus. They're great for the elderly, schools, public libraries, etc.
You can buy a 85$ Chromebit dongle you plug into an HDMI port in your TV and you can browse the web on your big screen, watch Netflix, etc.
Where is Mozilla? Nowhere.
Generally being incompatible with whatever platforms applications (iOS, android, or debian/ubuntu) is a kiss of death. People need their apps and developers need aren't going to cater to a new minority platform with approximately zero users.
Considering that one of Mozilla's funding sources is tie-ups with Google and Yahoo (and others?) for placement as default search engine and getting money from those searches, a "Linux first" strategy could probably become a financial disaster. I'd rather have Mozilla continue to exist (there's no other company/foundation of equal competence and values to "save the web" to whatever extent possible). I'd prefer Mozilla to focus on providing great native experiences on Windows, Linux, macOS and Android (sorry if I missed other larger platforms where Firefox is available and used).
So it's finally not slow and laggy? I hope someday it can be as snappy as Chrome so I can ditch google forever.
If you want to check wheter or not it's active for you, go to: about:support and look at "Multiprocess Windows"