4 ms·
Serious question: Why do so many people think building desktop application GUIs with web-technologies is a good idea? I'm currently trying to formulate some th
by eivarv 9y ago
Serious question: Why do so many people think building desktop application GUIs with web-technologies is a good idea?
I'm currently trying to formulate some thoughts on this;
While I understand that HTML/CSS generally seems more flexible and may be more easily accessible to more/newer devs, it carries huge, negative implications in the forms of HCI (not having consistent interface elements on the user platform), performance and energy usage (particularly Electron), OS-integration, and accessibility features.
Can someone please give me some arguments as to why this not only seems like a good idea, but also why it's the best tool for the job?
- Kalium 9y agoIt appeals to people who regard desktop resources (memory, CPU cycles, etc.) as functionally unlimited. Thus, there's no reason to worry about low-level efficiency, such as with C or C++. So why not use all the technologies you already know and use everywhere else, like JavaScript? I don't know if I agree that it's the best tool for the job, but I can see the appeal to someone whose world is JS and Python only. Especially if memory management is a foreign and scary world to them - and having done it, it certainly is scary!
- zamber 9y agoI do Python and JS daily. Never had to do hand memory management in my life (maybe once in Objective-C). Webdev is not the best tool for the job but it's cheaper and substitutes for a sleeve of other specialised tools. The user experience is secondary if you do a product on a budget and iterate over it all the time. Especially if you are a web-first experience like Slack. Having native stuff there would make it even worse adding cognitive dissonance to the overall design. I guess there's a method in this madness.
- digi_owl 9y agoWhat has happened is that "we" have divorced software from hardware by adding an increasing number of abstractions. There is a increasing number of people that never had to deal with boot sectors or config files to get a computer up and running, they just hit a button and a few seconds later it lights up in massive colors and sounds. And the only languages they know are web related languages, because that was the thing to know when they got interested in computers. And as the saying goes: When all you have is a hammer, all problems looks like nails.
- sangnoir 9y ago> it carries huge, negative implications in the forms of HCI (not having consistent interface elements on the user platform) This is a double-edged sword for multi-platform apps, but isn't a drawback for monoculture environments. > Can someone please give me some arguments as to why this not only seems like a good idea, but also why it's the best tool for the job? For a certain class of apps (such as IDEs), its a great idea due to the ease of extensibility as well as making multiplatform releases effortless. I doubt VS Code would have been available for Linux had it used a non-web-tech stack, and it has displaced PyCharm for some of my lighter tasks. PyCharm is written in Java, so it's also not native, but it's the best IDE in the world, IMO.
- ReverseCold 9y agoIt's easy to do. That's it. Why learn frameworks and UI paradigms for different platforms if you can just build it once? You can have a desktop app in under an hour if you already have a web app.
- anaptdemise 9y agohttps://msorvig.github.io/qt-webassembly-examples/gui_opengl/gui_opengl.html https://msorvig.github.io/qt-webassembly-examples/gui_opengl... [edit] There is also emscripten-qt. Full circle. http://vps2.etotheipiplusone.com:30176/redmine/projects/emscripten-qt/wiki/Demos http://vps2.etotheipiplusone.com:30176/redmine/projects/emsc...
- nodja 9y agoOne codebase catchall. Most apps need some sort of web version and desktop version. So doing it all in web tech makes sense. Then as you get familiar with web tech doing it in native toolkits requires you to learn new paradigms and quirks which is a barrier to creating new apps so people revert to what they know (web tech). It's just that web is so popular so people stick to what they know. Same reason people would use say python with c extensions over golang. Even though go is faster out of the box, if they're used to the python ecosystem it makes sense for them to prototype in python and then optimize with c extensions, they can get something that works with less cognitive friction.
- kelnos 9y agoA few thoughts: * Cost. Why hire a separate dev team for each of web, Windows, and MacOS (and in this scenario, you never get a Linux app) when you can hire a single dev team to work on the core of the app with maybe one person to handle platform issues (and you get a Linux app nearly for free, which you wouldn't otherwise bother with)? Hell, you might not even need to hire more people to deal with your desktop apps initially, if you have at least one web developer who is resourceful and can figure out the remaining details. * Hiring. Web developers are everywhere and easy to hire. Finding someone with expertise in a particular GUI toolkit is harder. Even if you initially don't care about which particular GUI toolkit, after you start building in one, you need to find more people to hire who are familiar with it. (This is also another "cost" item, I guess.) * Ignorance. My biases are probably showing here, but my impression of most frontend developers is that they don't worry about performance too much, at least not to the level that, say, a C++ or JVM or CLR developer would. They seem to view many performance issues as something to be solved by the Javascript engine or browser renderer. They also likely develop and test their app on a high end machine and don't notice perf issues until users complain. * Marketing. Visit Electron's website, and then visit PyQt's (or Qt's, though they're a little better) or GTK's. I guess it shouldn't be a surprise that the websites made by people who work on web technologies look better and tend to have better marketing. * Tooling. Web debugging tools have gotten pretty great during this decade, closing the gap with native-code IDE debuggers, gdb, valgrind, etc. Electron's tooling make it fairly easy to build for each platform. Building a cross-platform app in Qt or GTK requires native compilation for different platforms, which is still, even today, a bear to set up.
- dan1234 9y agoBecause system resources are cheaper than expert knowledge. We've got enough RAM & CPU cycles spare that we can run GUIs in a headless browser and CSS & JS have come along far enough to make this easy(ish) to pull off, especially when combined with a framework such as React or Angular. I can see why it's done, from the cost PoV, but I'm always a little dismayed when I find yet another desktop app which has the 'uncanny valley' of an almost-native look and feel. Same goes for ReactNative vs true native mobile apps.
- movedx 9y agoSo we're getting lazy because the availability of resources lets us. Got it.
- eivarv 9y agoWhat's really "enough RAM & CPU cycles"? I think one can argue that this is really offloading development cost as a a resource cost onto the users - who must run "native", inefficient applications. This means not only implicitly making a choice about the users' hardware, but it may in some cases exclude certain user segments as well.
- zamber 9y agoThere's demand for web devs in my area. Not so much for GUI people except for iOS/Android. The market shapes the tech that's developed and companies shape the market. It's a self-reinforcing vicious cycle of hype-driven demand. Disclosure: I'm a web dev :(.