this post was submitted on 03 Sep 2023
145 points (98.0% liked)
Linux
46875 readers
1102 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
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I have a question: wtf is javascript doing in a modern desktop?
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
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.
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.
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.
I like to tell people Chris Sawyer wrote Rollercoaster Tycoon 1 and 2 by himself entirely in ASM. Still amazing games in 2023
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.
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.
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.
You could still get a basic Linux system on a floppy if you really wanted to.
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.
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.