Desktop GUI Is an Efficient and Fulfilling Way of Human-Computer Interaction
prahladyeri.github.io
prahladyeri.github.io
- Ease of deployment/execution (just enter the name of the app and we're in),
- Strict sandboxing (webapps can't break your computer),
- Ease of administration (automatic updates),
- Fast development is possible by cutting costs (there's only one "platform" -- the web, not Win+mac+Linux, no need to do any real error handling, "something went wrong" is fine).
The downside of this is that those 3 points come together with some disadvantages, like e.g. complete regression and ignorace of the last 30 years of UI research, and low stability/quality of software.
How a desktop application success could look like we can see in the form of the mobile apps (which are desktop apps), which fulfill all the points above; there's no real need for web apps on mobiles. Providing these mechanisms for apps targeted at traditional desktop computers could render webapps unnecessary.
I just hope this "fast development, low quality and low usability web trend" will end soon, or at least the hype will finally meet its correction. Web development rides on the acceleration provided by desktop software, and when this acceleration will slow down, because people will think that web apps are sufficient, that's I think when we'll see the correction.
I used to be on the other side, but now I think that it's more likely that web apps meet the old standard of the classic software than the old software somehow becoming better and more useful somehow. For now, the only things that have not switched are large software with big performance and latency requirement. As the hardware evolves and the web platform matures even more (especially with web assembly VM) it is unlikely we will go back to previous ways. Heck, even Apple build half their apps with a lot of web technologies mixed with their own stuff. I wish they would just commit to the web completely because this way we could somewhat have decent cross platform experience; but that wouldn't sell many Macs so it's wishful thinking. In the end, they are probably obsoleting themselves in the long run...
GTK is good on Linux but taking it to Windows is usually an uphill battle and that too with a language like C. Same with Qt with C++ for that matter.
On the other hand, you can choose a high level toolkit like Java Swing or .NET WinForms but they also have their own nuances with regard to cross-platform configuration and support.
The only practical solution that I've found when it comes to writing portable desktop GUI applications was C++/Python and Qt. The "C++/Python" part is because the Qt bindings really exist for these two languages. It's possible to use a different language as well, but as you've said, that's an uphill battle as well.
Nowadays there are also some new frameworks like Flutter Desktop, or Compose Multiplatform, but I haven't used them (just used Flutter on mobiles, and the development part was fun, the deloyment part not so fun).
I never could overcome my dislike for Gtk+ development, especially for new versions. Gtk+ for me ended with version 2.0 :)
> Too much bloat as one software must cater to everyone’s needs.
Yes, maybe, but especially web apps are usually quite focused on a limited feature set, in my experience. Isn't the usual prime example of bloat (Microsoft Office) a desktop app?
> Open invitation to authoritarian software like DRMs, Adware, blobs, etc.
So there's no DRM or Adware in desktop apps? Surely the author can't be serious about this one. At least a browser gives me simple tools to control them, for installed desktop applications it becomes much harder.
> Use of Internet as propaganda tool.
Sure, but on the other hand I would argue that Twitter works well as a website and there's no need for a desktop application. It's actually great that I don't need to install anything to access it.
> Inefficient and bloated JavaScript.
Fair enough. I do however think that, by now, there are many "time-tested and efficient best practices" in the world of web development. The web world isn't moving half as fast as critics like to pretend, and the underlying technologies have stood the test of time remarkably well. I think time-tested is actually one of the main reasons that web technologies are as popular and successful as they are.
For example, the table view doesn't support browsing through pagedown/pageup/home/end, although it supports moving by cursors. Clicking a button with the mouse, and trying to re-click with the keyboard (enter, space) it also doesn't work -- mouse click doesn't move the keyboard focus from the previous widget.
Do you target only mouse/touch users with this framework?
Slint seems very good especially for environments where you don't have a (modern) browser, like embedded, and the API looks clean and first class Node.js is great. And the website is great. Property binding looks promising Separating the widget definition from the code is probably a good idea, although IMHO the content-style-logic separation of HTML/CSS/DOM is even better.
What brings me some really bad memories is the widget-tree-style API (especially with absolute pixel units in all the examples). But this may be prejudice from my part.
Web apps are a pain to develop, pain to port, pain to build, pain to debug as well.
Besides:
In a desktop program, any network traffic is just the necessary data.
In a web program, all the network traffic is the necessary data + the interface itself.
I'll never get over how inefficient this is.
You can make web apps without building at all. But if you want to build, even webpack is heaven compared to e.g. CMake. And there are a lot better tools nowadays, e.g. esbuild. DevTools are by far the best debugging environment around.
The interface is typically data wise very small compared to the data. It gets cached. And if you are still worried, you can use Service Worker, and it works even offline.
Not really. Languages and tools have been very good since more than twenty years with comfortable IDEs and cross-platform frameworks, and the result can be a single, statically linked executable which you can just download and run. See e.g. Qt or Delphi. Of course, one can also make things unnecessarily complicated.
And at least IMHO the languages and tools are far from very good. Qt Creator is horrid, Qt C++ is a weird language of its own and requires hackery like moc. And if you want to do something not included in Qt, it's often welcome to the hell that is CMake et all.
Delphi is proprietary, Windows-only and the language is niche and IMHO not very good even compared to Qt C++.
That's no problem at all. In case of Qt I only need a C++98 compiler for each platform, and also Qt Creator is available everywhere. Usually I only have to debug on the development platform though, since it is the same code on all platforms, and the framework in use abstracts the platform away.
> And still have to download, hunt down in the file system and potentially require admin to grant rights to run it
Downloading is not really an issue, is it? Just download one ZIP or TAR.GZ or DMG, unpack it and run the executable. No admin rights required.
> Qt Creator is horrid, Qt C++ is a weird language of its own and requires hackery like moc
Well, that's your opinion. In fact the tool is very good, the call and linking of moc and generated files is transparent, and C++ is an excellent work horse.
> do something not included in Qt, it's often welcome to the hell that is CMake et all.
No problem at all. Of course you have to know both Qt and C++ good enough, but that's something a developer can master.
> Delphi is proprietary, Windows-only and the language is niche and IMHO not very good even compared to Qt C++
There is FreePascal/Lazarus which is open source and runs even on more platforms than Qt. Even Delphi runs on other platforms. Whether you prefer C++ or Object Pascal is a matter of taste.
- operating systems,
- browsers,
- aspect ratios, or,
- devices
Web technology is a scam, constantly reinventing itself. There are no true experts, everyone is scrabbling for the next framework which promises the world but just expresses the same set of problems in a new and interesting syntax, with increasingly unintuitive paradigms.
It is eternally "almost getting there", near enough but not good enough, needing to own increasingly more things that should rightly belong to an operating system to work acceptably.
But perhaps that paradigm becomes a bit difficult to implement in a landscape like Linux where there are already interoperability issues between native toolkits like GTK, Qt, WxWidgets, etc. Indeed, which one would you call the "native linux GUI toolkit" among these! When you add other complications to the mix like various desktop environments, X vs Wayland, GTK 2/3/4 inconsistencies, etc., it's understandable why a desktop developer would want to throw away their tools and run away from the linux desktop!
It is indeed quite a miracle that something like Java Swing/SWT works on top of all this fragmented mess at all.
Cross-platform Bluetooth (and Bluetooth in general) is a world of pain anyway. Web Bluetooth API is a lot less painful than any other Bluetooth API I've encountered.
Of course there are cases that don't work in web. Does this mean it shouldn't be used for cases where web works?
Here's a little utility I wrote to help me set up gear cutting machines. [1] I wrote it in about an hour, in Pascal/Lazarus, most of that time was writing it up for others.
I can't bring myself to try to dig through all the layers of cruft required to build a GUI version in a web app. Plus then I have to host it somewhere and worry/pay for that forever, which is nuts.
…that will expose yourself at a really high risk. I think that security was one of the main factors that pushed browsers to become the definitive UI. Interoperability also is a big deal; making a website work with Firefox and Safari is much easier than develop a cross-platform GUI program.
But agree that security considerations is what is making my hand shake if I am installing any desktop app that doesn't have over 10 millions downloads.
Within a corporate or enterprise LAN, people still use desktop apps more heavily, or at least should be using ideally.
Web's utility is as an information tool and at most, things like e-commerce and shopping. If we let the "cloud" become be all and end all, the results aren't always good for society or desirable as seen in recent years.
The hilarious thing about most human-computer interaction is when we use GUIs for imparting purely text information.
For example, on this HN page that I'm writing, and you're reading, the only graphical thing really is the orange bar across the top.
Actually, the world has evolved slightly as even the text is rich text-today. Many people like to use emojis in text, for example, HN is a rare one that doesn't support. There is even talk of support for cross-platform utf-8 emojis without the need for additional images, stylesheets, etc. Then there are other things like code syntax highlighting, formatted block quotes, bolds and italics, etc. which are like "deemed graphics".
Google Photos on Android now has some effects behind paywall... I guess hackers jailbreaking the iPhone 1 and making Apple start the app store for "commoners" (iirc their idea was it'd be a place for big corporations) was a bad idea after all.
On the topic of paywalls, I have a blood pressure measuring device with Bluetooth connectivity. Their original app was decent, but it got discontinued. Their new app also puts features behind paywalls... and I just looked again, they're even offering to fucking gamifying measuring my blood pressure, giving me reward points for using the device, exchangeable for... who knows what?
- not Bill Gates
I used to care, because I felt I had to use macOS and Apple sell the configuration that would make those types of software painless at an exorbitant price. But then if you say fuck you to Apple, voila, not much of a problem anymore...