lmao, so even anaconda is a webapp now…
Here's what they say in that article about why they turned it into a web app, for those who don't want to look for it
Since we’d likely have to rewrite a lot of the frontend anyway, we took another approach [an approach different to keep using GTK] and have taken advantage of the modularization efforts to retool the frontend to have a web-based interface instead. The Cockpit team has been providing a web-based interface for Linux systems for managing systems for many years in the Cockpit web console, so it made sense to reuse Cockpit as a base and its web-based widget set, PatternFly, as a starting point for the next generation of Anaconda too.
By-the-way: We’re using Firefox to render the UI when you’re installing locally. (There’s no Chromium or Electron involved.)
Web-based benefits
While it’s not a native toolkit like GTK, using a web based UI does have several benefits:
- It’s easier to update and maintain versus a traditional desktop application
- We now use Cockpit’s testing frameworks to test Anaconda’s web UI
- It’s easier to adapt to future changes
- It enables more community contributions, as it “lowers the bar” for know-how, as there are many more developers familiar with web development than GTK development
- We can extend it to interactively install a remote machine using Anaconda from another computer’s Web browser in the future
Huh, I wonder if developing a web app is that much easier than developing a GTK app, or a Qt app… I mean, sure, there are way more web developers than people experienced with native development toolkits, but I wonder if it isn’t a tooling problem from the part of the toolkits. I certainly don’t have any experience in any of these, so I’d love to hear other people’s thoughts.
Developing cross platform native apps sucks a lot no matter the tech stack. Compared to web technologies where the burden to follow the spec is the platform if they wanted to have interop with the web, the dev doesn’t have to fight the platform.
What you discovered is that today’s mediocre developers implement everything in web browsers, or web brower-like frameworks like Electron, and set them up to masquerade as normal applications, but with 100x the disk, RAM and CPU footprint.
Let’s be honest, it’s the easiest. I’ve been trying to write UIs in pure rust and python recently and let me tell you, it’s a drag.
Some frameworks don’t even support writing your own components, some don’t allow reusing parts of the UI, some don’t even have proper layout engines you can modify, theming can be difficult, others dont have reactive values, most don’t have a fast dev loop (make a change, see it, repeat), and so on. I’ve even tried using game engines like Godot and Bevy.
We like complaining about Electron, but let’s be serious, as bad as it is, the other stuff is worse.
Writing stuff in a proper gui framework using the tools we’ve had for decades is not really that bad, it’s just not what all the tutorials are for. CSS can be an absolute pig to get things just so, or was until quite recently.
CSS is terrible, no doubt about it, but the problem is exactly that: native GUI frameworks haven’t changed in the way they work. Why else do you think electron became popular? Obviously there was reason for it
I think it became popular because you can deliver the same app to mobile and desktop platforms. And because js gave people a very easy intro to development on the web so tons of people know it.
I don’t think it became popular because it was better at making an application on a single target. I’ve never made a webapp with the equivalent of GLADE or QtCreator so I don’t know if it even exists - but those tools are very decent if you had a basic understanding of UI layout.
Then why can’t QT provide the same benefit of delivering cross platform developing experience? See, that is the core issue. You write FOR the platform not for yourself. In the web space, the platform writes FOR you lest they want to break compliance with the rest of the web standard. When you are writing web application, you are writing program in a standard that the platform WILL follow instead of you following whatever the platform dictates at the time of their convenience


