JS as an extension language, at the time and less so now, came at an _enormous_ performance impact.
Core event polling was pushed through to JS in 2010! We were accustomed to snappy, 60 fps UIs and along comes Gnome3 as it struggles to render a response within a few hundred milliseconds of user input.
It's still unusably slow on low end machines; like ARM SoCs.
Is the issue JS as an extension language, or is it using JS for core events? Or maybe something else? People write successful games with Pygame, and Python's VM is much less optimized than what's available in the JS world, even in 2010.
To get 1-frame response time, you need to poll and redraw in the same 16.67ms window. That's an eternity inside a computer. I can write a JS curses app using blessed and it feels pretty snappy, so I'm guessing JS isn't the fundamental problem. The GNOME folk have always been a fan of IPC though (remember ORBit?), so I wouldn't be at all surprised if the latency is due to context switching.
JS in 2010 was not nearly as efficient or fast as it is today. But yes, it was a number of things as well as Javascript. It was entirely possible to spend time in stock Gnome3 without executing JS with any meaningful frequency, because the core Gnome shell doesn't really have much; but being the extension language, using any Gnome3 extensions would immediately bring JS into the profile. Being someone who likes to customize my desktop, and typically uses hardware five or more years out of date, the Javascript was a pain point for me.
There's an excellent blog post from 2019 by one of the Ubuntu devs regarding their efforts at the time to fix Gnome3, as they were abandoning Unity:
Going farther back, Gnome3 was plagued with lots of similarly bad design decisions, like allocating and freeing large amounts of memory on the same thread that handles animation rendering:
It's quite a storied history for Gnome3 performance; it's come a long way in the last decade. Sadly, it's still nowhere near as responsive or efficient as Gnome2/MATE.
Core event polling was pushed through to JS in 2010! We were accustomed to snappy, 60 fps UIs and along comes Gnome3 as it struggles to render a response within a few hundred milliseconds of user input.
It's still unusably slow on low end machines; like ARM SoCs.