How much of a performance improvement does this make?
How much of a performance improvement does this make?
(I'm paranoid and FUDing because I care: there's some UX low hanging fruit before they could get rid of userChrome.css. For instance, you need userChrome.css to autohide the toolbar in full screen mode on macOS — that's not even a customization, it's a missing feature.)
For what it's worth, this change happened because people were seeing the stat() call involved in startup profiles, taking sufficient time that it seemed worthwhile to avoid it if possible, as far as I can tell.
Yes, there are. They are not a niche cohort.
EDIT: In fact, we have many more users with magnetic HDDs than who use userChrome.css. That tells you everything you need to know about this decision right there.
C'mon the directory structure would be cached already, even if it was not - the seek times for HDD are 3-4ms.
If your HDD has a seek time of 3-4ms on average, that means it needs to rotate completely in at most 6-8ms, which gives you a rotation speed of 7500-10,000 rpm. HDDs in data centers do that, sure. Consumer HDDs just don't do that, last I checked; they're mostly in the 5400-7200 rpm range, with laptops firmly in the 5400 bucket. See https://www.dell.com/en-us/shop/dell-laptops/sc/laptops?appl... for example (currently offered Dell laptops "for home" with an HDD: they're all 5400rpm). At 5400 rpm, your average latency from just the rotation is 5.5ms and your worst-case latency from the rotation is 11ms. That doesn't include other latency sources, but let's assume those are somehow scheduled away to happen during the rotation.
Keep in mind that what typically sticks in users' minds is worst-case, not average-case, behavior, so you have to bring your worst-case time budget down to whatever your target is.
You can still install Tridactyl in a normal installation of Firefox by following the instructions on our readme [1]. Admittedly, that may cease to be the case if Mozilla ever tire of us; people in locked-down corporate environments would then find it hard or impossible to install Tridactyl but we'd make it as easy as possible for everyone else.
On topic, I'd argue that Mozilla are just desperately trying to cling on to ordinary users; the "war" against power users is a war of (totally understandable) neglect rather than spite.
[1]: https://github.com/tridactyl/tridactyl/blob/master/readme.md
There was some of the same phenomenon with Google, but the real difference is that Google pushed Chrome very strongly on the biggest web properties in the world, had it packaged in some other software installers, and advertised it. That's why Chrome has the market-share it does today.
Mozilla appears to now be courting the ordinary user market without having either the passion of power users driving it, or the world's biggest web properties shilling it.
To this day, visiting google.com (#1 website) in my default browser pops up a large notification informing me I need to switch to Chrome to 'hide annoying ads and protect against malware on the web.' Visting YouTube.com (#2 website) pops up a slightly less annoying notification on the bottom that says "Google recommends using Chrome, a fast and secure browser."
I haven't been able to figure out for years now how they think this is going to work. Ordinary users are going to do what their IT administrator/IT friend says, use the OS default, or use products recommended by massive marketing campaigns.
Just about every person I know that uses or used to use Firefox does so because I told them to use it or (more likely) I installed it for them. That's how most people start using Firefox.
> On topic, I'd argue that Mozilla are just desperately trying to cling on to ordinary users; the "war" against power users is a war of (totally understandable) neglect rather than spite.
Perhaps, but meanwhile, as we muse about Tridactyl and the abandonment of userChrome and userContent, a thread about the possibility of Firefox removing webRequest in the future rises to #2. It's getting harder to justify Firefox and Mozilla by the moment.
For a user with an SSD, perhaps not much. But there are still a lot of users out there with magnetic hard drives. Firefox has to do a decent amount of I/O at startup, and unneeded disk seeks add up for these users.
In addition, Firefox formerly checked for these files on the main thread, which is especially bad for performance. (Firefox engineer Mike Conley wrote about this at length at https://mikeconley.ca/blog/2019/05/16/a-few-words-on-main-th...)
If you read through the related bug (https://bugzilla.mozilla.org/show_bug.cgi?id=1541233), you can see that folks went to some trouble to keep anything from breaking for people using these files today. The claims that this is a step toward removing the files completely is FUD.
I don't know if it's a purposeful process or not, but I'd say it's perfectly reasonable for users to think that pref-gating is the first step toward removal. The long road to RSS being completely removed from the browsers started with "just" taking it away from the defaults.
They moved the option to keep browsing history but not keep download history to a user-pref, and then later removed it.
They moved the option for tabs-on-bottom to a user-pref, and then later removed it.
They moved the disable-automatic-updates to a user-pref, and then later buried it in an external policy JSON, which I guess it's okay to see if that file exists at startup but not the user*.css files.
And on and on.
However, I don't believe that's an issue for the specific features discussed here (userChrome.css and userContent.css). These are by their nature features that are only accessible to users with particular knowledge/skills and the Firefox user base is much broader than web developers. But moreover, nobody is proposing to remove this capability and I think its debatable whether it is now harder to access in practice (existing profiles that use this capability were automatically converted, for new profiles you already have to manually add a file to the profile directory, flipping a preference in addition is not a serious barrier).
> I don't know if it's a purposeful process or not, but I'd say it's perfectly reasonable for users to think that pref-gating is the first step toward removal
It might be reasonable if no other reason was given, but there is a specific and compelling reason (avoiding unneeded main thread I/O during startup for something like 99% of users) here.
But I also would imagine the usage was quite low already and any incremental hassle will push it lower and it won't be hard to get to an analysis where maintaining a rarely-used non-default codepath is seen as not worth it. Of course it all depends on what's going on with the specific code at issue, but the basic point of my post is that "nobody is proposing to remove this capability" is true, until it isn't.
This isn't a feature I actually use, but I also find the removal of a minuscule startup delay of a program I don't actually start very often to be a pretty marginal improvement, so I don't really have skin in the game in either direction.
Unfortunately they also changed the css model, so even with the flag on - userChrome.css has become useless (to me)... I guess 66 will not be seeing an upgrade for the time being.
As for the question - should be less than 1ms (depends on the OS/filesystem obviously but still negligible)
I fear the change is just to take away this important customization option in the future and I don't like it.
A few ms isn't much by itself, but when you add up a bunch of small optimizations like this one, it can add up to be a significant improvement.
Even just checking for the existence of a file can take a really long time depending on the disk speed and other on going IO.
Why wouldn't they just load them asynchronously?
I read that custom CSS files are often used by disabled users, which makes it doubly odd that they would just disable it by default.
I'll have to run an extension that will be injecting JS/CSS into every page, to get the same effect. That will likely be slower. Not a speed improvement exactly.
At least it's more powerful. I can replace any rule inside already loaded CSS. Useful to escape this braindead age of "font-size < 16px && font-weight < 400".
Antivirus software does add a measurable delay to file operations sometimes, and each file is gonna be in its own sector so I could see them losing at least a few milliseconds there. Applying CSS does add overhead but the average user can't have that many rules in there so I suspect it's purely on the file i/o level.
And yes, file I/O was the issue.