I have been toying with the idea of forking Servo to make a scriptable keyboard-driven browser, like Nyxt but with something else instead of Lisp.
Probably too huge of a project for one hooman though.
I have been toying with the idea of forking Servo to make a scriptable keyboard-driven browser, like Nyxt but with something else instead of Lisp.
Probably too huge of a project for one hooman though.
Despite whatever your lead/manager says, there is always an option to nuke it from low orbit and start over.
As a programmer, I concur. I sit on my arse all day pushing keys , anybody can do that.
A genuinely cool and somewhat lean alternative to Electron!
It’s not that native UIs are lagging behind, there is a whole set of reasons.
TL;DR: browsers, as opposed to desktop apps, are stardartized - because they were originally designed to display and deliver text documents. We were never supposed to build complex application UIs on a web stack.
First, there is no standard way of making native UI on a desktop. Every OS uses it’s own solution, while Linux offers several different ones. Browsers rely on a set of open standards developed specifically for the web, and even there not everything works exactly the same.
Second, browsers are designed to draw a very specific kind of UI through a very specific rendering mode - they run an immutable hierarchy of elements through layouting and painting engines. It works great for documents, but it becomes extremely unweildy for most other things, which is why we have an entire zoo of different UI implementations (crutches, most of them) for browsers.
On the desktop we often make a choice of what UI technology would fit best our purpose. For a game engine I would use an immediate-mode UI solution like ImGUI, for the ease of prototyping, integration and fast iterations.
For consumer software I might choose between something like QT or GTK for robust functionality, reliable performance, acessibility and community support. Mobile platforms come with their own native UI solutions.
For data-intensive UIs and heavy editors (e.g. CAD, video and music production, games) I might need to designan entirely new rendering pipeline to comply with users requirements for ergonomics, speed, latency etc.
It is also easy to notice that as a team or employer, it is often much easier to hire someone for web stack, than for native development. Simply put, more people can effectively code in JS, so we get more JS and tech like Electron enables that.
If you are interested in a single solution that will get you nice results in general, no matter the platform - you might see some success with projects like Flutter or OrbTK.
UI rendering in general is a deep and very rewarding rabbit hole. If you are in the mood, this article by Raph Levien gives a good overview of existing architectures: https://raphlinus.github.io/rust/gui/2022/05/07/ui-architecture.html
“I deployed an edge compute environment on this thing, so it can run out SSR backend-for-frontend, but we now have a left-pad issue in our supply chain”
What’s so bad about the Rust compiler? I know it’s slow, but given all the analysis it’s doing, it makes sense. And, from my own experience, setting correct optimization levels for dependencies along with a good linker makes incremental builds plenty fast.