I guess I don't know what your point is then. Isn't your argument: "progress means taking advantage of hardware advances to use more productive tools?"
I disagree with your assertion, because I don't think the only measure of progress is how productive programmers are (time-to-market, whatever). There are other measures:
- user experience
- program efficiency (battery life, fossil fuels burned)
- program security
- ease of contribution, maintenance, and improvement
I mean, correct me if I'm wrong. But I feel like I've directly addressed your points. I simply don't think that you can say, "well it's X% faster to build an app on Electron, therefore Electron is the best... even though it runs Y% slower and burns Z% more battery". That's why I talked a lot about tradeoffs, because there's more than one issue.
For what it's worth, I also dispute the productivity argument. It's hilariously easy to build an app in Qt Creator. Maybe web devs can build Electron apps faster, but that's because they're web devs. I'd bet if a web dev took a month to get to know Qt they'd be as productive. The difference is that the resulting app would be a lot more efficient.
No, my point is people will use anything that allow them to do what they want the easiest way possible, not matter the cost and cleaness.
The point is the web is the most active platform.
The point is doing things right is not winning.
The reason you are missing the point is that you think it's only a technical problem.
It is not. It's technical + cultural + societal + historical + economical.
> It's hilariously easy to build an app in Qt Creator.
You fail to put yourself in a web dev shoes:
- they are the majority on the most popular plateform
- they don't have the time to lear a hole new tech or API. You don't realize the ton of stuff you need to learn to do half of what you can do with HTML + CSS + JS with QT. It's huge.
- then you have to learn all the edge cases for packaging, distributing, updating and maintaining this software. On multiple OS.
- then if you need a tutorial or a doc to help you, how does it compare to the web stack ?
- then if you need to have new people added to the team ?
- then if you need a custom widget ? reuse something that has been done ?
- then the licence ? The versions conflicts ?
And if only QT was much easier than the web stack. But as a Python dev, I did PyQT dev. And Web dev. And the ratio power/easiness/flexibility is not on QT side at all, it's a mess of a badly documented powerhouse with abstractions everywhere. You want to get the value of a cell in a table as a date ? Unwrap 3 layers of composed classes, each of them with their own API.
Then of course you will end up creating a client/server architecture (with threads, multiprocessing or else) for your app eventually to deal with background tasks, an MVC layer on top of QT's, and then some DB for persistance. And use their markup to generate the UI in a declarative way.
So basically all what constitute a web app.
Basically, you have to put all that in the balance VS speed, memory and battery life. What do you think won ?
If we want native clean apps back in the game, we need to make it easy and convenient for the new generation of devs to provide the features the new generation of users want.
Otherwise, we have lost and we'll be dinosaurs, while people will just buy more powerful computers because "32gb of ram is not enough to display all those albums, you need to upgrade".
Thanks for clarifying :) You're right, I missed the point.
> people will use anything that allow them to do what they want the easiest way possible, not matter the cost and cleaness.
I disagree, because people are implementing things in Rust right now even though it's harder than doing it in JS. Generally, they do that because they care about things like performance, safety, and maintainability. For them, "harder" is a broader term than just, "I wrote this quickly", because they factor in things like bugs and performance.
> The reason you are missing the point is that you think it's only a technical problem.
> It is not. It's technical + cultural + societal + historical + economical.
I do not believe these problems are only technical, which is actually why I feel so strongly about this topic in particular. There's a certain level of "I know this is bad, but [my boss told me to do it]/[I have a deadline]/[competitor X is right on our heels]" in tech right now. No other serious profession acts this way. Doctors don't say, "I know this surgery is wildly unsafe, but my chief told me to do it, so if people die oh well, it's not my fault". They have professional organizations and laws to back them up, and maybe more than that they have professional ethics and pride too. I'm not trying to say all doctors/lawyers/etc. are perfect, nor am I saying devs are bereft of ethics, but software engineers need to realize that our work is shaping society in a fundamental way. We need to start sticking to our ethics, our judgement, and our values when faced with economic or cultural pressure, because there are more important things than shipping and making money.
In particular, we need to start taking security seriously. Starting an app in C/C++ should mean 100% test coverage, thorough fuzzing, and pervasive use of tooling to avoid security issues, and honestly it's better to use a memory-safe language like Go/Swift/Rust/Java/C#/Kotlin whenever possible.
We need to take performance seriously. Our code takes electricity, and we mostly still get electricity from fossil fuels. I'm not trying to dip into moral hyperbole by arguing that the cursor in Atom is causing future famines, but we need to realize that performance isn't some nebulous concept. Slow code costs money and burns things in real life.
We need to take user experience seriously. PGP is the poster child for this, but this concept exists elsewhere too: the best security software is the security software you use (the best exercise is the exercise you do, etc.). It doesn't matter if you built the perfect programming language if it's too opaque, it doesn't matter if you built a decentralized Facebook if users don't use it.
We need to consider that not everyone has fast computers, fast phones, and fast, low latency, ubiquitous Internet access.
We need to say no to addictive features and dark patterns. A lot of the reason the web is a cesspool is that we've allowed companies to build products that are addictive, or that are very difficult to get out of. Good luck building an open Facebook; they have huge teams of people working on ways to keep people on their site forever.
We need to push back on closed-source. Tech has boomed in the last 10-20 years because of FOSS. Linux is the leading server and mobile platform. Security research is where it is because of FOSS projects like OpenBSD. Practically all of our development tools are free software. Our web servers, our browsers, our JS engines, our UI toolkits, that's right, it's all FOSS. If you want an example of what happens without FOSS, look at the state of messaging.
> You don't realize the ton of stuff you need to learn to do half of what you can do with HTML + CSS + JS with QT. It's huge.
Having done both, I do. I prefer Qt because I can use pretty much any language I want, Qt Creator is great, and I have better tooling in general. Web dev requires JavaScript and a bananas toolchain, neither of which I'm a fan of.
You act as though web dev is the easiest thing in the world, but just look around for JavaScript fatigue posts. All the toolchain stuff you have to set up, all the library/framework decisions you have to make, all the knowledge about the DOM, Babel, ES2017, CSS quirks, blah blah blah. It's "easy" (kind of) for web devs because they've been doing it for a while, but it's definitely not prima facie easy.
> they don't have the time to lear a hole new tech or API.
They absolutely do, and if their jobs don't give them time for professional development they should find ones that do. Lots of professions get this, nurses, teachers, attorneys, managers. This is in line with my "professional standards" rant above.
> - then you have to learn all the edge cases for packaging, distributing, updating and maintaining this software. On multiple OS.
> - then if you need a tutorial or a doc to help you, how does it compare to the web stack ?
> - then if you need to have new people added to the team ?
> - then if you need a custom widget ? reuse something that has been done ?
> - then the licence ? The versions conflicts ?
I guess just look at Qt projects like Telegram Desktop. Hey look they managed to distribute their code. Hey look custom widgets. Hey look, a lot of people worked on it. Or even stuff like GitHub Desktop written using WPF. Or major desktop apps like Photoshop, Nuendo, etc.
The Qt license comes up all the time, and it's seriously just don't link your app statically. Or advocate for your product to be open source. Or just Google LGPL.
> If we want native clean apps back in the game, we need to make it easy and convenient for the new generation of devs to provide the features the new generation of users want.
I view this from the "professional standards" perspective as well. I don't need to change my values and prioritize developer productivity above everything else, in fact I think that's disasterous. Instead, I think we need to advocate our values to "the new generation of devs": be willing to learn new things, take responsibility for the major role your work plays in society, realize none of this would be possible without FOSS, and consider that "better" doesn't just mean "I shipped faster".
> Otherwise, we have lost and we'll be dinosaurs, while people will just buy more powerful computers because "32gb of ram is not enough to display all those albums, you need to upgrade".
Re-reading your posts, I kind of get the feeling we're on the same side. While I think it's important to create a better culture in software dev, I also think it's probably just as important to make it easy to write a program "the right way". Right now, it's just way, way too hard.
I kind of blame Electron for making it easy. It's sort of a trick right, "hey, I don't know what those C++ people are doing, just use JS, it's super easy". I don't necessarily think projects should post a table of pros and cons of their software -- there's definitely a certain level of "do your homework" involved -- but I do think some level of self-awareness is warranted. Think of SQLite's "Appropriate Uses For SQLite" page.
> If we want native clean apps back in the game, we need to make it easy and convenient for the new generation of devs to provide the features the new generation of users want.
Yeah, thinking about it a little more, I super agree. I don't think we should compromise all our values, but we definitely need to spend some time making software dev a lot easier.
I don't think there are many people in the industry who are in denial (though I am known to over-estimate the average Homo Sapiens' abilities).
The reality is already well-acknowledged. What would you do next? Surely, trying to beat people's faces in this reality via your 10+ comments in this thread isn't a next step, more like infinite repeating of the acknowledging part.
I'd definitely volunteer to make Qt more dev-friendly. As it is though, I am too late because my personal life and health are in a dire need of attention and money. So I'll sadly leave it to others. But if these others only repeat the reality, then what hope do we have, I wonder.
Business interests and the resulting pressure have been a fact ever since first written history. Again, the reality is well-acknowledged for a LONG time now.
I disagree with your assertion, because I don't think the only measure of progress is how productive programmers are (time-to-market, whatever). There are other measures:
- user experience
- program efficiency (battery life, fossil fuels burned)
- program security
- ease of contribution, maintenance, and improvement
I mean, correct me if I'm wrong. But I feel like I've directly addressed your points. I simply don't think that you can say, "well it's X% faster to build an app on Electron, therefore Electron is the best... even though it runs Y% slower and burns Z% more battery". That's why I talked a lot about tradeoffs, because there's more than one issue.
For what it's worth, I also dispute the productivity argument. It's hilariously easy to build an app in Qt Creator. Maybe web devs can build Electron apps faster, but that's because they're web devs. I'd bet if a web dev took a month to get to know Qt they'd be as productive. The difference is that the resulting app would be a lot more efficient.