Opinions regarding Qt for Python for cross-platform desktop apps

Python and QT is an expensive Idea!

Speaking about PyQT from riverbank computing we have the following licensing policy:

https://riverbankcomputing.com/commercial/license-faq

inside this faq there are two interesting details. You need when your Software is not gpl licensed a commercial PyQT license. means: 550,- Euro you have to pay immediately or you are only allowed to deliver gpl licensed Software. It is not without a risk to do that different.

If your Software licensing is not lgpl compatible means: a clean commercial licensing: you have to buy also QT license. Means: 316,- per month. Neat.

That is something nobody realizes while everybody means: oh, gpl I can use it for development without any problem. You canā€™t. I know many programmers which thought they are legal with the lgpl Versionā€¦the curts writing that completely different. No chance.

So I would always try to recognize this factor also in their thinking about a platform. A platform which is half way stable and reliable und coming from a small company. They do not even have the need for a qt license and they do not have to think about that while they do not deliver qt libraries. QT is delivering them.

So I would really be happy when at least one time somebody would speak about this site of using it: it is not for free. Not at all.

Beside that: it is also not native. Do not forget that in your plannings. I know we had often the discussion about natiove or notā€¦I donā€™t want this flamewar but I want that comparsions are comparsions and not a propaganda mix.

Important is also when thinking about pyQT: you may not forget that you have to pack and deliver the Python Files, the runtime and the QT runtimes for your application. That is not a small package. Only to compare. Yes, a hello world not packaged as a python file is small. Thanks for that comparsion and for the comments. But. If you say: I can distribute Python without the Python interpreter I have a newsflash: You can also transfer only the jar File. Makes for the hello world app I wrote just: 3.4 kb. So not that big. I guess to compare bananas with cars will not give a correct comparsion. This jar File I can roll out to any customer which has Java 20n installed. So what? I canā€™t understand this Ideas behind.

In many cases I am delivering jar files while I can use them on all platforms. No problem. All libs included and thatā€™s it. Only need: JRE has to be installed then. So writing for the customers: Minimum Java 20 JRE is installed. It is the same with Python. It needs to be installed in the right version. And with QT you have to have all the platform Files installed and also PYQT you need to deliver with. That makes it bigger than a packaged Java App.

But also a Xojo App is not that small. And many others allso not. Look on Dotnet Apps. Big overlay of needed installs before one app is running. And the C++? If you want to have it really small think about the needed runtimesā€¦which also have to be installed.

you can with JavaFX.

Yes Norman, I know. But it is also not really from interest. We have Apps in many businesses. And I had never any question about. And that Xojo Marketing says: hey we are nativeā€¦it is something they claim but not fulfill. Not my problem, not from interest. But as a side factor: too much missed functionality. Like the small color problem. And many others. I would not say that Xojo is a real professional environment. It is a one click toolchain, all others not. Thatā€™s the difference. Yes. But the rest?

I would be happy if they would get it really running and stable, with Android and IOS. That would be really nice. For the customers. No question. But they are not able to deliver that.

If I may, I sell directly to end users, and in order to do that I feel I have to impress 4 categories of people.

  1. The end customer, I need to impress them to part with their hard earned cash. If they have a good experience with my product, theyā€™ll do a little bit of marketing for me via word of mouth or social media.

  2. The social media Mac influencers, I need to impress these guys as they have a large number of followers on social media, so when they talk about my products, a large number of people are more likely to learn about my products.

  3. The remaining Mac media. A dying breed, but still very relevant. If they write a favorable review of my products, these become etched in stone. They not only announce the product to a large audience, but they also help create confidence in end users, when they search for a professional review.

  4. App Review, not only to get the product into Appleā€™s store, but also to increase my chances of Apple promoting the product.
    Without promotion on the Mac App Store, customers will only find your application if they look for it, and in my opinion over the last half decade, this basically eats my profits, because the App Store takes more work and their fees are higher than other places.

So thatā€™s why I tell myself I need to create an application that feels native, value for money and polished, while at the same time it also has to feels unique, but in a good way, not because the data list here scrolls like it is 1990.

4 Likes

Is discord native? No. Do the earn money? Tons of it.one of hundreds of examples that showing: this arguments are letā€™s say not arguments for everyone.

But why are you speaking about PyQt? Itā€™s a third-party project that predates the official bindings. Itā€™s not needed.
.

The deploy tool @acaland linked to utilizes Nuitka which transpiles Python code to C and then compiles the C code.

Having read their ā€˜native controlsā€™ marketing boast, it was quite a surprise when I discovered the ā€˜DesktopListboxā€™ scroll bar on Mac.

P.S. Xojoā€™s ā€˜Native controlsā€™ true and full reading is ā€˜Native controls for naive customers - hey you, buy a license!ā€™

1 Like

Not all of the code can be compiled and not all of the libsā€¦super idea. And by the way you need a qt license. And nuitka is not free for commercial use. Only for information. 400 per year. Plus qt. And nuitka has MacOS issues.

Are you sure? I havenā€™t looked at Qt for a long time but NOKIA made it available under the LGPL during the time they owned it.

Only when you fit their license needs.

1 Like

Sure, you have a fair point here. Many macOS users love ā€œnativeā€ applications (including myself), though the consumer market has changed quite a bit as well. The days when almost every Mac app behaved nearly identically are gone. However, when targeting the consumer market, it is still somewhat necessary. The mentality of expecting everything for free or at a very low cost puts a lot of pressure on developers targeting the macOS consumer market. Thatā€™s probably another reason why macOS developers need to impress with top-notch designs, at least more so than in the Windows market.

In a business context, people and decision-makers want to get their jobs done. Often, they target Windows or Linux exclusively for their internal apps. macOS becomes important because the higher-ups refuse to work with anything other than macOS. A similar mentality can be observed, in my opinion, in the consumer market. If people want a certain functionality (Discord, for example), they care far less about the appā€™s appearance. At most, it is important to them that the app looks the same across all operating systems.

In your particular situation, it would likely be more beneficial to use the approved workflow (XCode, Swift, Objective-C) instead of trying to persist with Xojo. Iā€™m already struggling with my bugs; I donā€™t need additional ones from a development tool. :slight_smile:

Requirements vary, and I think we often overlook this fact. Most of the time, I keep cross-platform aspects in mind when discussing alternatives. You, on the other hand, are focusing solely on the Apple landscape, which is a different story, isnā€™t it? For me, Realbasic was a great ā€œalternativeā€ to struggling with Objective-C and the somewhat confusing Apple documentation (for me). Documentation 20 years ago was different than it is today, with so many online resources now available. With Swift, Xojo lost yet another competitive advantage, in my opinion. Of course, some people understandably wonā€™t invest in migrating or learning something new. But for a beginner? Why should they even consider Xojo? It doesnā€™t seem like they do BTW ā€¦

1 Like

Where does it state that?
Nuitka Commercial gets you additional functionality and support but I donā€™t see any restriction on what you do with Nuitka standard.

GPL ā€¦ Read the license :pray: and the additional license Infos from qt please also. Do not forget: only parts of qt are lgpl. Read it careful. A friend of mine paid around 28000 after loosing a trial. Works fast.

Why would I read GPL when Nuitka uses the Apache license?

you are an expert. There are tons of GPL stuff used by nuitka. All the qt sources they used. They canā€™t make it apache license. They link it. And you? And for commercial use the want you to license it. Read again please.

Nuitka is a separate thing to Qt, it is not dependent.
The fact Qt have used Nuitka for their deployment tool doesnā€™t mean Nuitka suddenly belongs to Qt.

I donā€™t know if this is of any interest but thereā€™s been a new version of IronPython released recently. In terms of compatibility with CPython itā€™s several versions behind ( i.e. 3.4 ) but looking at it in its own right it does give you access to the full .NET framework.

I didnā€™t said anything like that. But it needs QT Sources to publish Python QT GUI Apps. And so you can run really fast in the need of a qt license. What I said: be careful that you fit the license conditions not more not less. But when you really want to: use qt and python and learn the hard way- not my problem at all. I would not use it. That`s it

As Addon: if you want to use qt you could do even with javaā€¦qtjambie is community driven free of any charge und good documented. But with javaFX: why should I use qt

Just some clarifications:

I was referring to Qt for Python (also know as PySide, PySide 6 is the latest version).
Both Qt and PySide have LGPL/GPL and Commercial licenses. Not all modules (for example Qt Bluetooth) are LGPL, So in that case you should be compliant with GPL or buy a commercial license. But, as we are just talking about UI here, I guess almost all the GUI modules are available under LGPL. But itā€™s true, Qt licensing is a little bit tricky and one should careful check which module is LGPL and which not.

By the way, Qt license for small business and start-ups is quite cheap:

$499 per year for everything, as soon as your business has a combined revenue and funding equal to or less than two-hundred and fifty thousand ($250000) USD.

If I pass $250k of revenue per year, I would be more than happy to pay $3,790 per year for the full Professional license.

By the way, all of your opinions (thank you) are helping a lot and giving me a better picture of the market and everybodyā€™s needs and requirements. So opinions are completely different according to the target market, ie. consumer vs business market.

When I am writing I am thinking mostly to the consumer market, as I mentioned my requirements of deployment to the app stores. Xojo in that regard is good choice, allowing this kind of deployment quite easily.

So another option that came to my mind, reading your answers would be to decouple the business logic from the UI and use two different toolset for the respective purpose: build the UI (and the final packaging) with the native tools and the business logic with the tool you are mostly comfortable with.

So I am exploring this: use SwiftUI for UI and deployment, embedding a Python interpreter for the business logic. Not sure if there is any Swift/Java interoperability, but for sure there is Swift/Kotlin combo: this idea, in fact, is not new and is the one that uses Kotlin Multiplatform (Kotlin Multiplatform | Kotlin Documentation)
Not sure what would be the best and easy way to build UI and packaging in Windows, any hints would be appreciated

thank you again for all the useful comments