this post was submitted on 03 Sep 2023
147 points (98.0% liked)

Linux

48074 readers
749 users here now

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.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

By now it is probably no longer news to many: GNOME Shell moved from GJS’ own custom imports system to standard JavaScript modules (ESM).

Extensions that target older GNOME versions will not work in GNOME 45. Likewise, extensions that are adapted to work with GNOME 45 will not work in older versions.

You can still support more than one GNOME version, but you will have to upload different versions to extensions.gnome.org for pre- and post-45 support.

Please file bugs with your favorite extensions or have a friendly conversation with your extension writers so that we can help minimize the impact of this change. Ideally, you could help with the port and provide a pull or merge request to help maintainers.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 8 points 1 year ago (5 children)

I have a question: wtf is javascript doing in a modern desktop?

[–] [email protected] 21 points 1 year ago (1 children)

It's probably the best scripting language, especially for developers of C-style languages. Python has weird syntax and is slow, Lua is really fast but also has weird syntax. JavaScript looks pretty much like C syntax wise. It's also possible to use a wide range of existing JavaScript projects to make extension development less burdensome

[–] [email protected] 6 points 1 year ago

The JS bindings to GTK4 (GJS) are complete, AFAIK; & allow for facilities like Gtk.Expression which 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.

[–] [email protected] 18 points 1 year ago (1 children)

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!

[–] [email protected] -2 points 1 year ago (1 children)
[–] [email protected] 2 points 1 year ago

Gnome Shell has been first released in 2011.

[–] [email protected] 9 points 1 year ago

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.

[–] [email protected] 8 points 1 year ago* (last edited 1 year ago) (3 children)

Um, you're like more than a decade too late to ask this question. Javascript is pretty much everywhere now, whether you like it or not.

For the record, I dislike it as well - not the language itself mind you, but the fact that they're using it to make bloated desktop apps and desktop UX. Long gone are the days when devs cared about performance, sometimes going as far as writing code in ASM to get the most out of paltry hardware.

Nowadays, even a $25 computer like the Raspberry Pi has enough computing resources to run bloated JS apps, so no one really cares any more, except for old fogies like us who grew up using entire operating systems that fit on a single floppy disk.

[–] [email protected] 3 points 1 year ago (1 children)

I like to tell people Chris Sawyer wrote Rollercoaster Tycoon 1 and 2 by himself entirely in ASM. Still amazing games in 2023

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago)

Equally (or more?) impressive is the procedurally generated 3D FPS .kkrieger, which weighed a paltry 96KB. 96KB in 2004 was quite impressive, considering that Doom, released a decade prior, was 2.39 MB, and even the original Wolfenstein 3D, released in '92, was 1MB.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (1 children)

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.

[–] [email protected] 2 points 1 year ago

I never claimed that Javascript itself was bloated - it's about using the right tool for the right job. The bloat comes from using awful frameworks like Electron to create fake "native" apps, and then fooling users into thinking they're getting a native app, wasting tons CPU resources and sysadmin time trying to fix these bloody Electron apps into shape (speaking as a DevOps guy).

Also, there's a world of options to chose from for shell programming that strike a better balance between performance and practicality, in the spectrum between ASM and JS. Oh, and writing a modern shell in ASM is most definitely fun, you should give it a try sometime. ASM shells - actually, entire operating exists already, if you aren't aware of it. You really should check out MenuetOS or KolibriOS sometime. Sure, it's nothing more than a hobby project, but it's quite fun to take it for a spin, and experience a preview of how fast and effecient operating systems could be.

[–] [email protected] 1 points 1 year ago (1 children)

You could still get a basic Linux system on a floppy if you really wanted to.

[–] [email protected] 1 points 1 year ago

Yeah, but not a full-fledged GUI OS with all your basic GUI tools, including a GUI web browser. QNX had a floppy version back that that fit everything - even a bunch of games - on a single 1.44MB floppy.

In saying that, there are modern GUI OSes which you can fit on a floppy, such as MenuetOS and KolibriOS. And because they're coded fully in assembly, it can actually fit and do a lot more that what QNX-floppy could do back then, which is very impressive for modern code.

[–] [email protected] -2 points 1 year ago (1 children)

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

[–] [email protected] 3 points 1 year ago

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.