Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

20 years ago, when I was in college, I remember being super relieved that our Comp Sci course tutor wanted us to use Delphi/Pascal instead of VB.

At the beginning of the course, the tutor asked us all what other languages the class had experience with already. Being smug, I said I had used C++ and he then sarcastically announced to the rest of the class how they were all unworthy to be in my presence.

I really enjoyed Delphi. Those T prefixes still evoke nostalgia for Delphi 6 and 7, just before Borland went all-in on .NET and ruined the IDE.

Now that Qt is becoming more and more hostile, perhaps Delphi shouldn't be overlooked so easily for writing cross-platform desktop software... although it seems there's still no Linux support in the free edition.



> Now that Qt is becoming more and more hostile

Can you please elaborate on that? I thought the free edition of Qt was open enough to be the right choice for writing fast multiplatform code. Did they change anything wrt licensing, or there are technical issues?

> although it seems there's still no Linux support in the free edition.

And the insane price tag of the other editions wouldn't help either. Anyway, Lazarus may be far from being the same thing feature-wise, still it's worth of consideration for Linux development. https://www.lazarus-ide.org/


Qt's corporate owners have been openly hostile to the community for a while, and have been trying to get away with shady stuff. The license terms for commercial use are terrible, you need an active license to distribute existing software, not only develop new software, the prices are excessive and keep increasing, and once you get a commercial use license you have to keep it forever or you won't be able to distribute your existing work. Commercial license users are prohibited from contributing to the community version. They also made registration mandatory for all downloads, even of the GPL/LGPL licensed stuff, which information they use for Oracle-style license shakedowns. They keep delaying GPL/LGPL releases and have stated an intention to delay them by the maximum permitted amount (one year) meaning all community contributions are effectively blocked because contributors don't have access to the current codebase. While the contract with the Qt community does prevent the Qt Company from going completely closed, they're certainly not someone I'm comfortable with.


I can't add much to this really.

The Qt Company obviously don't think app developers using slightly old versions of their software provide any value to their shareholders, even though you're helping to grow the broader Qt ecosystem (libraries available, product awareness, knowledge sharing, growing the job market, etc).

As far as the Qt company are concerned if you're a FOSS app developer, and not on bleeding edge Qt 6 and actively contributing bug reports (i.e. acting as their outsourced QA), then you're just a worthless leech.

The feeling is the Qt library is only FOSS at this point because their hands are tied contractually by the KDE foundation.

This has lead the KDE foundation to create a surprisingly active fork of Qt 5.15:

https://invent.kde.org/qt/qt/qtbase/-/commits/kde/5.15

which is now the default Qt 5 base package on Arch Linux:

https://github.com/archlinux/svntogit-packages/blob/packages...


Isn't it the case that the KDE foundation can basically just yank away Qt for any reason they see fit? Seems like the Qt company would be playing a dangerous game there


No. Only if the Qt Company violates the terms of the agreement.


Right, seems like I misremembered this part:

>The foundation will control the rights to the Qt Free Edition and ensure that current and future releases of Qt will be available for free software development at all times. All changes to the Qt Free Edition license will have to be approved by the KDE Free Qt Foundation which will consist of two members of Troll Tech AS as well as two members of the KDE project. One of the representatives of the KDE project will have a double vote to be used in case of a tie.

so they have full control (majority of the votes) over approving license changes but I guess that doesn't mean they can enact them on their own

https://kde.org/community/whatiskde/kdefreeqt_announcement/


> They keep delaying GPL/LGPL releases and have stated an intention to delay them by the maximum permitted amount (one year) meaning all community contributions are effectively blocked because contributors don't have access to the current codebase

Qt 6.0 was released for both commercial and LGPL at the very same time.

> https://www.qt.io/blog/qt-6.0-released

Same for Qt 6.1

> https://www.qt.io/blog/qt-6.1-released

Same for the upcoming 6.2

> https://www.qt.io/blog/qt-6.2-beta-released

so that's very much FUD.

Sure, there's the LTS thing where some point releases past a given .z are kept private, but who actually uses that in the open-source world ? Even LTS distros that use LTS versions of Qt never upgrade their point releases:

* Ubuntu 18.04 is on Qt 5.9.5 while the latest point release of the 5.9 LTS branch is 5.9.9: https://packages.ubuntu.com/bionic/qt5-default

* Ubuntu 20.04 is on Qt 5.12.8 while the latest point release of the 5.12 LTS branch is 5.12.11 https://packages.ubuntu.com/focal/qt5-default


All you're saying is that FOSS developers targeting Linux might[0] be able to lean on the generosity and hard work of Linux distro package maintainers.

That's great, but if you're a FOSS (or free as in beer) app developer targeting Qt on macOS or Windows you're choice is basically between shipping a bleeding edge version of Qt 6.x that will almost certainly cause regressions for your users, or ship a version of Qt 5.15 that almost certainly has known security vulnerabilities.

As an app developer bumping minor Qt versions on my users isn't something I want to do every other month, since doing so requires a lot of regression testing and user feedback. Most of the time I just want to roll in critical bug fixes (security issues, crashers, etc).

[0] In reality shipping Qt apps for Linux is really horrible. As you noted every distro is using a different version, so the users of your app don't all get the same experience unless you go to a herculean effort to bundle your own Qt build.


I guess we have a different definition of herculean, I just have a script that builds KDE's 5.15 branch statically and run find_package(Qt5) in my cmake


1. Static linking is legally troublesome if you're distributing binaries because under the terms of the LGPL you have to allow for re-linking of your application. See ringworld's sibling comment on the Zoom app.

2. Even if you static link, you still need to build Qt for every single distro you want to ship your app on. On Linux the Qt GUI library alone has over 40 shared library dependencies. There are also ABI issues. Things like AppImage can help but are pretty nasty.

3. It's a lot easier on Windows and macOS, where there are fewer system dependencies and Qt Company themselves provide bundling tools (windeployqt, macdeployqt) to bundle libraries with your application.


Regarding 2. that is false, I build everything on a CentOS 7 docker and my appimage just works on every distro from that era onwards (~2015). Hy do you say that it's pretty nasty ? It's the same packaging mechanism than on Mac and Windows, the app ships everything except libc.

There's a linuxdeployqt tool for appimaged - I've never used it but saw a fair amount of apps using it I guess it works ?


> unless you go to a herculean effort to bundle your own Qt build

Zoom ships their own copy of Qt in the Linux packages as an example, lives in /opt/zoom next to their code.


And this is a perfect example to show the complexity.

On Arch Linux:

- /usr/bin/zoom is a symlink to /opt/zoom/ZoomLauncher which does not link against Qt. Presumably this just sets LD_LIBRARY_PATH and spawns /opt/zoom/zoom

- /opt/zoom/zoom is the main zoom binary and when run under 'ldd' actually tries to load /usr/lib/libQt* (Qt 5.15 on my system). Running this binary directly doesn't work (Error: "opt/zoom/zoom: symbol lookup error: /opt/zoom/imageformats/libqsvg.so: undefined symbol: _ZdlPvm, version Qt_5")


> Can you please elaborate on that? I thought the free edition of Qt was open enough to be the right choice for writing fast multiplatform code. Did they change anything wrt licensing, or there are technical issues?

The minor releases are free only until next major one is out. After that, further minor releases are proprietary-only. I.e. that means right now, no free updates to 5.x anymore, if you want maintained release, only 6.0 is an option.


> Can you please elaborate on that? I thought the free edition of Qt was open enough to be the right choice for writing fast multiplatform code. Did they change anything wrt licensing, or there are technical issues?

I believe it still is, as long as you can afford to have a law firm on retainer :)

Same for Delphi TBH. Two great products, dead.


There is Lazarus, which is an open source Delphi clone based on Free Pascal. Haven't tried it yet though. But the file manager I use daily (https://github.com/doublecmd/doublecmd) is written in it, and I have some ideas for improving it, so maybe I will try to compile that project for good old time's sake...


For anyone that's curious, popular game hacking/reverse engineering tool Cheat Engine(basically a fully fledged Windows debugger nowadays) is also made in Lazarus - though I can't seem to come up with anything else that is from the top of my head.


> just before Borland went all-in on .NET and ruined the IDE.

That was when it went off the rails and never recovered imho, others are mentioning Borlands business practices which were not the best at the time. Technically it lost direction as well, it never developed a response to Java, .Net and the web, and still doesn't, though you can actually develop web applications with Delphi to, with 3rd party components and they work very well.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: