5 ms·
The usual retort is "people use Electron because they only know web technologies". No, it's not only that. I've been programming GUI apps for 30 years, going
by hrififjkrjr 5y ago
The usual retort is "people use Electron because they only know web technologies".
No, it's not only that.
I've been programming GUI apps for 30 years, going through TurboVision, Delphi, MFC, WinForms, wxWidgets, Qt, WPF, native Android/iPhone, and probably 2 more I forgot about.
They all suck terribly when compared to React/Vue/HTML/CSS.
Creating a GUI app with web tech it's just so much more productive. It's like comparing the productivity of Python to C++. Sure, you can't write an audio editor in Python/Electron, but for 90% of GUI apps it makes no sense to use native frameworks. They are as productive and expressive as writing in assembly.
- VoodooJuJu 5y agoCompletely agree. I'm developing a desktop app with Qt and while the API is pretty nice for most of the logic, there's just so much friction when it comes to the GUI design, I feel like it's working against me. Compared to designing in HTML/CSS, it's night and day.
- rcurry 5y agoCompletely agree with you, hardcore XAML developer and I walked away for React and Tailwind CSS. I will never write another desktop app again.
- the_only_law 5y agoI wanted to do a mockup of a UI a few moth back. It was moderately complex, I suppose. And I was just trying to find something that would let me build out a shell. I started on Linux and I found most of the UI frameworks to be quite disappointed and a bit involved for what I was wanting to do. I think I was splaying with Glade and then QT creator and realizing just how much boilerplate code I'd have to write to get things to look how I wanted. I then ran over to Windows, because I recall having done similar things with WPF. I instantly recalled why I hated it though, as doing any custom styling on components is a miserable mess of boilerplate XML and overriding values I have little knowledge of and seem not related or tangentially related to what I was styling. I was able to create what I wanted relatively easily with a mix of HTML and CSS though. I think something like WPF but with CSS-like styling would be nice.
- fiddlerwoaroof 5y agoLazarus is still pretty nice for putting together an app: the Cocoa port is still a bit unstable, but the app it self captures a lot of what was great about Delphi in the 90s
- Gene_Parmesan 5y agoI unabashedly love WPF but I 100% agree on the need for a CSS-like interface for styling. It's a blind spot that was forgivable ten+ years ago but nowadays there's really no excuse for it.
- native_samples 5y agoJavaFX + Scene Builder gives you that. FX CSS isn't exactly the same as HTML CSS but it's quite close. When I've used it I've felt that the limits on the styling of my app are mostly my own lack of design skills.
- jbverschoor 5y agoAgree, but at least use react native or nativescript Also the web has a superior distribution and sandboxing model
- BackBlast 5y agoReact native locks you into react. Their debugging tools are sub par, especially using two different JavaScript engines for production and debugging is a source of frustration. The platform has historically been unstable, requiring heavy investment to update the system with every new release. I haven't used native script but my casual research is that it's in an even worst state. Compare to a browser, which just fixes most of these issues, the wins provided are not worth the costs IMHO.
- deleted 5y ago[deleted]
- nyanpasu64 5y ago> It's like comparing the productivity of Python to C++. I've written apps in Python and regret it. The pain of packaging to end users, the 20-30 megabytes of OpenBLAS to get NumPy to get vectorized operations on the same order of magnitude as fast as a C++ loop, the dependence on prebuilt wheels and inability to write fast C/C++ code without foisting a dependency on a C++ compiler on your users (unless you have a Windows, Linux, and Mac machine to build wheels yourself), the lack of multithreaded parallelism... From observing a JS audio app being developed, they're also struggling with the inability to write C/C++ code without foisting a dependency on a C++ compiler on your users (unless the developers build native packages themselves), dependence on upstream fixing bugs rather than being able to fix the bugs themselves, and download sizes of over 50 megabytes zipped, plus recurring packaging issues where the native libraries don't run properly on user machines.
- bsder 5y ago> Creating a GUI app with web tech it's just so much more productive. It's like comparing the productivity of Python to C++. So, if I have, say, Python as my scripting language for that tool, how do I alter the UI? The only program that gets this right is Blender. And they had to build their own UI toolkit from scratch to do it.
- beamatronic 5y agoFor comparison the best UI building experience I ever has was with Motif. There was a high degree of orthogonality, each dialog box could have Rows or Columns, and those could both contain either Rows or Columns. You go down the tree until you have your foundation elements, buttons and the like. It was so easy. And after that it was just filling in the callback functions for the events.
- kumarvvr 5y agoYeah, This I agree. Even WPF is too complicated, in spite of including XML based UI and binding paradigms. I am really surprised there are no projects that extract the essence of the HTML/JS/CSS UI system (declarative UI with on the fly control) and use that to render to any surface.
- sircastor 5y agoThis is how I think of QML. I don’t think C++ and Qt as accessible as JavaScript, but QML will get you pretty far before you have to wiring the business logic.
- native_samples 5y agoXAML is declarative UI, no? JavaFX has done what you ask, actually. There's FXML which is an XML UI description language (actually it can describe any object graph) and you can style it with a dialect of CSS2 tuned for desktop apps. But React/Vue etc aren't quite the same thing are they. React actually throws out normal HTML and replaces it with some sort of HTML-esque simulation that they then try to performantly map to the real thing.
- mixmastamyk 5y agoOdd take, given that with web we end up doing a lot of implementing and styling widgets that are free in desktop toolkits. In three or more languages, scouring docs from every corner of the web at that. Sure there are libraries of the season to handle most of it, but selecting the best of multiple libs has a cost. Libraries like Delphi/Lazarus and wxPython, Qt, et al are incredibly productive.
- deleted 5y ago[deleted]
- pjmlp 5y agoAs someone with a similar background that only applies if we are speaking about CRUD forms, anything else Web is a joke versus native tooling for GUI design.
- BackBlast 5y agoDisagree with you, I find the grandparents observations to be right on. Especially for layout, I haven't seen a layout system that can match html/css for all screen sizes. The web is a bit rough around the edges in some spots but for the wide target base and productivity of the tools and frameworks nothing I've used previously comes close.
- pjmlp 5y agoXAML, where CSS grid was born. Now you have seen one.
- blub 5y agoSince you haven't provided any actual arguments, one would have to rely on your reputation to evaluate the claims you made, but since this is a new account with only one post, that's not providing any support either. For the record, I've also used Delphi, MFC, WinForms, Qt, native Android and iOS, but not TurboVision and very little wxWidgets. I didn't use React, nor Vue, but I am familiar with web development and web technologies in general. If I look at https://reactjs.org/tutorial/tutorial.html https://reactjs.org/tutorial/tutorial.html, I find it really really hard to believe that's in any way better than at least Delphi or Qt, to pick just two of the technologies I'm familiar with. There are functions which return HTML code which contain JavaScript code in there. How can one return an <h1> from a function with a straight face? :-)
- hrififjkrjr 5y agoI didn't provide arguments because there are other articles explaining why reactive/declarative programming is superior. I just wanted to point out that there are experienced GUI programmers who find web tech better for this purpose, it's not just kids who only know JavaScript. You really need to try React/Vue. Vue is actually much simple to get started with and understand if you just want to try it out. Once you use a reactive GUI, there is no going back to manually managing controls state like in Qt. > How can one return an <h1> from a function with a straight face? People used to say that about Python, that no serious programmer would use a language with significant white space.