148
Extensions in GNOME 45 - New import system is not backwards compatible
(blogs.gnome.org)
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
I have a question: wtf is javascript doing in a modern desktop?
The JS bindings to GTK4 (GJS) are complete, AFAIK; & allow for facilities like
Gtk.Expressionwhich the Python bindings still don't have& they've made rapid progress in a short time. The online documentation that's available is also getting really good.
Though I'm not sure why extensions have to be in JS, since JS is acting as a 'glue language' to the GObject bindings anyway. Isn't an extension just a GTK application that talks to specific DBus interfaces?
I suspect that the issue boils down to not-so-well-fleshed-out (to put it politely) dbus interfaces on GTK apps. Probably GJS has an easier time setting/sending messages & signals over DBus, so that's why extensions are in JS.
Many languages have well functioning bindings to GObject, Gdk, etc.; some are more complete than others (lua's (lgi) are trailing behind -- but still, you can do things like subscribe to a dbus_proxy in an embedded lua that lives inside vim or neovim, and send-receive messages with that) & some even come with good documentation, tutorials, etc.
Yeah! They should have invented their own obscure language for no reason rather than use probably the single most well known programming language on earth!
… or just use Rust?
Gnome Shell has been first released in 2011.
The same it does everywhere else. Capitalizing on the sheer number of web devs, and the fact that we get things done without being petty about things we don't like.
I like to tell people Chris Sawyer wrote Rollercoaster Tycoon 1 and 2 by himself entirely in ASM. Still amazing games in 2023
JavaScript itself is not particularly bloated. It is smaller than Python and fast as luajit. Probably the best scripting choice.
If you want to write a modern shell in assembly have fun.
You could still get a basic Linux system on a floppy if you really wanted to.
The only real alternative to an embedded scripting language is lua, and too few prefer it over js. Lots of internals in gnome-shell is also written in js, allowing the scripting language to hook straight into the api and data structures without a plugin interface.
In a distant future everything is we assembly, with typed stable interfaces for plugins. But the might happen in gnome 8
The day it has a stable API is the day everyone’s favorite extension dies. The powerful part of it is that they are monkey patched in.