Hacker News new | ask | show | jobs
by di4na 1511 days ago
For market no idea.

For electron, because it is the only reasonable multi platform UI platform out there. I do not like that fact but it is true.

For why, because the terminal protocol is atrocious, mix data with control signalling, mix together multiple layers making it really hard to extend it, is stuck emulating an emulator of a physical device from the 70s, is bursting at the seams and is blocking dozens of possibilities in ergonomics that would make our industry kill less people.

Is it well done or can it make money ? I doubt it. Is there an obvious need with wide impact? Fuck yes.

6 comments

> For electron, because it is the only reasonable multi platform UI platform out there. I do not like that fact but it is true.

Why do people constantly repeat this? Did we all forget about Qt? Did Qt do such a good job of driving people away from it?

I think QT has two problems:

1. It's based on C++.

2. The licensing makes it very expensive for non-open-source applications.

Small correction: 2. The licensing makes it very expensive for non-open-source applications that are unable to comply with the restrictions of the LGPLv3.

As stated _many_ times: Qt can be used via LGPLv3 in commercial software. Only a few components like QtQuick3d are GPLv3 only.

Having used both QT and Electron, my subjective experience is that Electron is just more ergonomic to use. And it's not because I'm new to C++ either. I have more years logged writing C++ than I do in the JS ecosystem. It's also not because I actually like Electron very much (I have several big problems with it), but if I needed to build a new cross-platform UI app these days Electron would be my default.
> Did Qt do such a good job of driving people away from it?

Yes, they did, with their hostile licensing changes and the fact that you cannot customize it as much as you can Electron apps.

Lack of customisation should be seen as a good thing. As a user I want apps built to fit into my platform, not for the app to be consistent across disparate platforms. I understand why marketing does not like this, though.
Qt doesn't magically help you with this either.
Indeed, it’s not “native” many places, but at least does not tend to become a blank canvas for marketing to build something completely custom on. I’d take QT over electron any day, but would pay for a native app over using either.
> Lack of customisation should be seen as a good thing

It’s not.

> As a user I want apps built to fit into my platform

As a user, I don’t care that about that. As long as the standard keyboard shortcuts exist, as well as reasonable integration with the OS which Electron does perfectly, I’m all set.

Yes. Because the experience of building something with QT that looks good and work cross platform is like pulling your own teeth.
I'd substitute "looks good" for "looks like a web application".

Taking music players for an example, I prefer the way Amarok (Qt) looks compared to something like Amazon Music or Spotify.

I don't use Amarok, but looking at screenshots, it looks similar to other Qt applications on Windows that seem to sit in this uncanny valley of coming quite close to looking native, but just different enough to feel strange. I also don't use the Spotify app, but it seems from screenshots to do a better job of appearing like a native Windows 10 application to me.
Not with Qt6/CMake/QML. For example, I've been developing a cross-plattform live wallpaper app for the last 5 years alone: https://screen-play.app/
QT talent pool and ecosystem is a rounding error compared to what we have with the web ecosystem. If you want to make something with medias, graphs, a few custom widgets, a reactive layout and deep routing, it will take 10 to 30 times longer with QT.

I myself prefer the snapiness of QT apps, but budget and time to market will win.

Electron apps are always resource hogs, frequently slow and generally integrate extremely poorly. As a consumer I care not one whit for how large the "talent pool" for the web ecosystem is, I care about how terrible the application is.

As a developer I must say calling it talent is in most cases a huge stretch, as I do believe you can probably make something in Electron that performs passably, integrates passably and will still be a resource hog. The reason we see basically none of this is because people simply don't care to engineer these applications well. "It's just the browser", after all. Why look deeper?

Sure but most teams do the maths for the cost/benefit ratio and make the call.

In this context the argument is moot: a better app that is too expensive or slow to make is simply not going to be released vs the worse one that actually gets published.

That's all there is to it.

That's why people still use wordpress, excel or jupyter notebooks for important stuff.

You may want things to be different, and for good reasons, but it's still what's the market has decided.

What does "deep routing" mean?
Views, sub views, partial views and complex hierachic workflows. Url base routers are great for those, but QT controllers let you reinvent the wheel.
I assume either deep nesting or deeplinks.
Qt costs money and is as native as electron.
> For electron, because it is the only reasonable multi platform UI platform out there. I do not like that fact but it is true.

For developer? Maybe. For user? No way.

Quite, I guess developers like that electron looks equally wrong everywhere? There’s teams of smart people at Apple, Microsoft, GNOME, KDE and other environments that spend a lot of time making things consistent (okay, perhaps not MS) so that users know intuitively how things work. Why throw all that away?

Not to mention it spins up an entire chrome process for every app? And doesn’t work on natively wayland?

It’s hard not to conclude that devs working this way hate their users.

> For electron, because it is the only reasonable multi platform UI platform out there.

Swing.

I suspect if it's for a terminal emulator the "multi-platform UI platform" you need is OpenGL or something.
Yep, look at Wezterm. It's what you're thinking of.
I’m 100% confident that a Multi-Platform Terminal can be built with C#, XAML and .NET 6. The dotNET ecosystem has multi-platform UI toolkits such as MAUI, Uno and Avalonia UI and Standard APIs to interact with all OS.
If your terminal can't work over a serial port, is it really a terminal?