5 ms·
These changes are very welcome, but in my opinion are too little too late. Qt has missed the boat with the current developer mindset. While I want Qt to 'win',
by pippy 7y ago
These changes are very welcome, but in my opinion are too little too late. Qt has missed the boat with the current developer mindset. While I want Qt to 'win', as the end result is superior to say an electron app, most developers are willing to sacrifice usability and add bloat by using electron. Or simply paint them selves into a corner with a native SDK.
Qt has a massive uphill battle to try and stay relevant. Like it or not, there's a reason why electron apps and native ui sdks become the zeitgeist. While reusability is often cited as the main reason why electron has become the cross platform defacto, there's a lot more to it than that.
Personally, the difference between using electron and Qt is black and white. Looking at setting up alone, With Qt you have to struggle to compile a massive library which inevitably won't work. After sinking hours into compiling it, you're confronted with a unknown markup language and toolchain just to get a window displaying. And the documentation is incomplete, and to top it all off the minor versioning differences will cause your app to break in spectacular ways. Compare this to electron, where everything just works out the box, and with npm you have every single library you could ever think of. Microsoft and Apple roll out the red carpet for developers to make ui development super easy, so making two apps with a shared library is often just as tempting.
The way I'd try and save qt would be to make a react-native binding a first class citizen and ditch QML/js engines. I'd also remove the custom tool chains and release extensions for VSCode/Atom that outputted jsx that could get interoperated by a virtual dom. developers would kill for that.
- sho_hn 7y agoI respect your comment, but I think it's a narrow look at what Qt is and what it's used for. You mentioned "native UI SDKs" having become preferrable, but keep in mind that in many scenarios, Qt is the native UI. On desktop Linux there isn't a lower level toolkit Qt is translating to, but also in the many embedded products Qt is used on: Car and aviation infotainment (a prominent example is Mercedes-Benz' MBUX OS, but there's literally dozens of these built on Qt and shipping), medical equipment, industrial machines (e.g. the entire HMI sector), kiosk systems, coffee makers, ... Qt is an excellent choice for these, often the only one, and the web stack is very unattractive there due to performance/hardware overhead, quality, security, etc. They're product use cases in industry, with a lot of available very high-paying jobs. And it's worth keeping in mind that the use cases I cited above by and large pay better than making desktop software does today, unless you're an entrenched player like Autodesk (which uses Qt doe many of its apps). In the only "this pays for a decently sized staff of engineers" desktop app products that are new that I can think of, Qt is also still doing well - say, Pix4D's apps for drone mapping/photogrammetry - because they likewise solve hard problems where you don't want to deal with the web API abstraction/quality barrier and performance overhead. My bottom line here is: Right now, and very likely ten years from now, if you are good at at Qt you're probably going to work in a very good and stable job at a solid business. I don't see this being the case for Electron developers, and I know where I'd rather be. As for making desktop apps, if your experience is "Looking at setting up alone, With Qt you have to struggle to compile a massive library which inevitably won't work" it shouldn't be ignored and the developer experience should be improved - tooling, build system and getting modules to devs are all mentioned in this blog. However, I have to say this has never been my experience - between Qt being packaged in Linux distros and the SDK installer on other platforms it's never been hard to set up Qt for me.
- wwright 7y agoThe article itself lists portability as their most important selling point.
- sho_hn 7y agoYes, but - the point the blog makes is more subtle than that. If you read closely, you'll find two contrasting and complementary statements - "desktop is the root of our offering" and "we see our biggest growth in embedded". What's going on there is that for that lucrative OEM product market I mentioned, it's a very attractive quality of Qt that their developers can test builds (of what is technical not a desktop app as it doesn't aim to integrate with the host platform) on their desktop system instead of having to remote-deploy to the embedded device or spin up an emulator for every change (cf. https://www.youtube.com/watch?v=EswaK8hTonA&t=42s https://www.youtube.com/watch?v=EswaK8hTonA&t=42s). A lot of Qt's lesser competitors in the domain don't offer this to the same extent. The other reason is that the desktop is very important as a recruitment vector for the companies that end up picking Qt partly because of the quality of the developer talent available. Not every young developer has access to a car infotainment test rig, but they have access to a desktop system; Qt needs to be on the desktop to allow you to learn it with just a desktop system. Plus open source communities like KDE that make a lot of desktop and mobile software act as a breeding ground for talented devs. Portability is in many ways about Qt not narrowing into a specialist/niche product, many of which it outcompetes in domains where it's the best option. So it is critical, but it's critical to avoid that slippery slope that would eventually hurt the markets that keep it afloat, even if not all the platforms equally bring in the money all times. It's about generality as a feature for a healthy systems technology.
- infinite8s 7y agoAnother big user of Qt for their desktop products is Tableau, since it provides the same experience across Windows and OS X.
- sime2009 7y ago> My bottom line here is: Right now, and very likely ten years from now, if you are good at at Qt you're probably going to work in a very good and stable job at a solid business. I don't see this being the case for Electron developers, and I know where I'd rather be. What?! If you're specialising in Qt then your skills are tied to Qt and you are tied to the health of the Qt job market. Those skills are not very transferable. On the other hand, 90% of the skills needed for Electron development are web technologies which are relevant to the massive web related job market. I know where I'd rather be.
- kbumsik 7y agoDon't forget that Qt has its own market where Electron even can't play well: Embedded systems.
- Iv 7y agoI guess you are a JS developer. Some of us have a C++ background and C++ code base. Qt is for us a more natural choice (and has been for a long time) than electron is. "a unknown markup language and toolchain just to get a window displaying" is basically what JS/CSS is for me (is it still hard to get a text center-aligned vertically and horizontally or have they finally gotten over that?) Qt does not force you to use that language, the C++ API works fine and in my experience, the documentation has been one of the best I had the pleasure to work with. "Microsoft and Apple roll out the red carpet for developers to make ui development super easy" Microsoft I agree. Apple, on the other hard... Last time I checked (admittedly, a few years ago) there was no way to code an app without having a Mac hardware and a developer license. I ended up borrowing a friends' mac to compile... a Qt app. That worked immediately.
- anilgulecha 7y ago> is it still hard to get a text center-aligned vertically and horizontally This has not been true for over 5 years.
- Crinus 7y agoIt had never been true at all if you didn't care about gaining kudos from CSS purists and just used a table :-P.
- Iv 7y agoSince this discussion I have checked to see if one of the projects I want to do, that requires OpenGL rendering inside an UI, would not be doable with electron. Google Qt and OpenGL and you get the documentation of the appropriate widget. Google GL and electron and you get a bunch of github issues and people complaining it does not work well yet. Nah, JS is struggling to get where Qt has been for years. I am happy that it solved its text alignment issue in 2014 though.
- billconan 7y ago> With Qt you have to struggle to compile a massive library which inevitably won't work. After sinking hours into compiling it, you're confronted with a unknown markup language and toolchain just to get a window displaying. And the documentation is incomplete, and to top it all off the minor versioning differences will cause your app to break in spectacular ways. I'm not sure if you have used Qt recently based on this description. There is no need to build it from source, just use the installer, then launch QtCreator, everything just works, on win, linux and mac. The Qt document is the best I have ever seen.
- jcelerier 7y ago> With Qt you have to struggle to compile a massive library which inevitably won't work. After sinking hours into compiling it, why would you have to compile Qt if you just want to make an app ?