With every GNOME upgrade, some extensions break; that's not new. But, with GNOME 45, every extension will break 😱
And why is that? Let me tell you more about it.
GNOME 45 Extension Changes
With every upgrade, there is always a technical improvement or change.
And, GNOME 45 comes with pretty exciting changes, except this one.
The technical change is that GNOME Shell and Extensions use ESModules instead of GJS' custom import system.
While this modification was intended to encourage developers to use a more standardized approach for GNOME Shell and Extensions codebase, it might have added a big hassle.
This is because the legacy system and the new modules approach are incompatible.
Here's what Florian Müllner had to mention for the technical bits:
Modules are loaded differently than scripts, and some statements — namely
export— are only valid in modules. That means that trying to import a module with the legacy system will result in a syntax error if the module uses one of those statements (about as likely as a pope being Catholic).
And the hassle? All GNOME extensions break.
- All the extensions targeted for older GNOME versions will no longer work on GNOME 45 (unless ported).
- New extensions tailored for GNOME 45 will not work on older versions.
The good thing is that a GNOME extension developer can support multiple versions of GNOME. But they will have more work to do and re-upload versions for pre and post-GNOME 45.
So, even if a developer chooses to do that and utilizes the porting guide to migrate to the new system, it will take extra time for them while the end-users (us) encounter broken extensions when using GNOME 45.
Not a pretty user experience. Is it? 😒
GNOME upgrades were not perfect for extension compatibility; now, it is worse.
While I do not rely much on any available GNOME extensions, many users do. And, for them, an upgrade that breaks the experience is not good news.
📰 Want our news updates on your Google News feed? Follow us here:
💬 What do you think about the change for extensions in GNOME 45? Share your thoughts on it in the comments below.