One of the very first steps into
my Mozilla contribution story was playing around with the CSS files that styled how the early Mozilla suite looked. Due to the user interfaces ingeniously using the the same rendering engine as Mozilla needed for websites anyhow, it meant that I actually understood some of the underpinnings and could hack them myself - like changing some colors and icons into a look similar to
LCARS - which I always found to be awesome-looking, and whose creator, Mike Okuda, I have met in person meanwhile. When I later assembled those playings-around into a proper theme, I called that
LCARStrek, and that one is still around for Firefox and SeaMonkey nowadays. I also did an adaptation of the theme that the Mozilla suite had in the early days, which is called
EarlyBlue and only available for SeaMonkey (too much work to adopt and esp. maintain it for Firefox as well right now, though it would be a fun one as well).
Even LCARStrek, which I'm using myself on both products, is often late to release new versions as it's a real lot of work to maintain it - not just because it changes the looks of the browser rather radically and has a lot of details to pay attention to, but also because the current way how full themes work needs me to copy a whole lot of CSS from the default theme into my work, and painstakingly track all changes and adapt to them. With some larger work in Firefox recently and the constant flux of Developer Tools work, this is a real lot of work and not a lot of fun (and I already pretty much leave out any support for devtools or devedition themes as well as lightweight/wallpaper themes). I'm not alone with this, and there are only slightly over 30
complete themes on AMO that have been updated in the last 3 months - even though you need to adapt to changes in every Firefox release, i.e. every 6-8 weeks at least.
This is something that the
Mozilla teams working with theming have noticed as well, and talks have been going on for a long time to change how themes work to both make it easier to maintain the themes and to also make Firefox break less significantly when a themes is not updated all the time. Also, as with add-ons in general, Mozilla wants less risk to breaking people's customization experiences with the shift to more HTML UI (instead of XUL),
Project Quantum and similar updates of Firefox' technology, and themes need to be modernized in that light as well.
Having been a theme maintainer for more than a decade and a core Mozilla contributor (even on staff for a few years), I naturally have my thoughts on what the new theme architecture should be.
As a general rule, I'd like a future theme architecture to be
simple where possible, but if you want to, powerful enough to make radically different designs like LCARStrek possible.
I imagine building upon what we have for "lightweight themes" (or "wallpaper themes" called "Personas" in the past, AMO just calls them "themes" now), and extending this with functionality for changing browser colors in general, potentially to exchange icons, and, for those that really need it, with in-depth CSS-powered styling.
Here's a list of things I'd like to see in the underpinnings this next-generation themes architecture:
- Use CSS variables for all colors in Firefox, and expose some simple way for a theme to only adjust those colors. A lot of people will be happy with just potentially a "wallpaper" and a changed color scheme across the whole Firefox UI (also, not just the browser window).
- Make all icons be SVGs (if possible), create some way to apply above-mentioned colors to those icons. It's so easy for icon colors to clash with theme colors, they should instead just fit themselves into the theme color scheme nicely.
- Create some way to easily exchange specific icons - some themes only want to adjust certain icons and not all of them, and we also should not break when Firefox adds icons. Also, some themes only want to apply a different set of icons, e.g. to match an operating system's icon scheme, we should enable that with needing to do everything else as well.
- For those that want to fiddle with the details, have one theme-defined CSS stylesheet in addition to (not instead of) the default theme CSS - just make sure it's always loaded after Firefox' own styles so overriding rules does not necessarily need !important (as the last rule of the same specificity wins). Support @document for those theme designers that want some rules to only apply in one HTML/XUL document of the product. Also, for those that want to define a whole lot of rules, it should be possible for them to split that one stylesheet and @import the parts in that one (but let's hope that's not needed too much).
- Pretty please make the devedition and devtools theme selections use the actual Firefox theming mechanism and not add even more complexity for theme designers to take care of.
With that structure, we'd have easy mechanisms for those that only want to change colors and/or icons, which are use cases we see a lot from what I remember in past theme discussions.
That said, we'd also have a mechanism to go and adjust all the nasty details that I know I want to have in LCARStrek - with full knowledge that anyone who uses the advanced option of the theme CSS stylesheet makes maintenance harder for themselves - but still easier than now, as loading this in addition and after the default theme CSS eliminates all the tiring porting of the rules you need anyhow and leaves the theme author with the really interesting pieces of what their theme changes in comparison to the default.
If it's possible to get the effects that I want with LCARStrek, I'll stay one of the theme authors that use a lot of the power of what the system can do - and my time spent in maintaining will still be significant, albeit definitely less than it is now. That said, if I can't achieve a look that is neat to LCARS, I'll probably just not do themes again in the future. As I love this look though, I hope the simple but powerful architecture I'd like will be implemented - that could be what I proposed above, could potentially be achieved in different ways as well, I guess. I care mostly about the outcome.
Let's have a Firefox that can be distinguished by how powerful its customization options are while still making it fun to maintain add-ons and themes and to develop Firefox into a more modern application for using our beloved Web!
http://home.kairo.at/blog/2016-11/my_thoughts_on_next_generation_themes