Cross-platform development


  • Java Dev

    As I want to develop my development skills for making cross-platform stuff I could always check for some input into the various different toolkits and such available to ease the process. It feels a bit redundant if I am to write a mobile app to do two versions with different languages just because I want to release on both platforms. But this also extends to desktop development if I want to write for regular computers and have something that works on Windows, Mac and Linux.

    I am thinking of .NET MAUI (Xamarin) as a possible candidate for regular desktop/mobile applications with Unity for games as they both use C#. Does anyone have any experience with MAUI and can tell if that's good, bad or :wtf: to use. Or are there any other frameworks and toolkits I should look into too?

    Also goes for game engines, although the one that seems to do any kind of game well is Unity, the others are more specialized from what I have seen and going either into heavy 3D focus (Unreal) or only 2D (all the ones with "Maker" in the name). And due to work-related reasons it would be best if I do focus on learning more and using Unity as I need it for work too.

    Most things goes as far as suggestions goes. I do want to avoid web tech-based stuff like CEF and the like, as I don't want to write desktop/mobile applications with HTML/CSS/JS/PHP and the likes.


  • 🚽 Regular

    I'm interested in suggestions too.

    Just to add confusion to the mix, here's a few other frameworks I've heard about and which I've considered, also in the C# space.

    I have no experience with any of these, but maybe someone else has.

    Sorry/not sorry for piggybacking on your thread.


  • Discourse touched me in a no-no place

    @Atazhaia said in Cross-platform development:

    I am thinking of .NET MAUI (Xamarin) as a possible candidate for regular desktop/mobile applications with Unity for games as they both use C#.

    The problem with going cross-platform between desktop and mobile is not the language or the toolkit, but rather that the way you interact with applications is different between the two environments. Mice and keyboards simply aren't the same as touch screens, and there's nothing you can do about that (unless it is light interaction such as typing forum comments in a webpage, where you can get away with it).

    You need to test in both environments, and probably to do some development with each in mind.


  • Java Dev

    @dkf I think for the most part if I make applications it would be either for only mobile or only desktop depending on what I make. Just I would want my mobile apps to work on both Android and iOS, and the desktop apps to work on Windows, Mac and Linux.



  • @Atazhaia Flutter seems an option worth considering. When I looked it was a new thing, it's probably better now, and it was getting adoption quickly on new projects

    @Atazhaia said in Cross-platform development:

    I do want to avoid web tech-based

    Don't let the anti-JS ideas keep you from taking a look at react native, it's nice for writing mobile apps



  • @sockpuppet7 said in Cross-platform development:

    @Atazhaia Flutter seems an option worth considering. When I looked it was a new thing, it's probably better now, and it was getting adoption quickly on new projects

    I tried Flutter. It's Widget hell. Everything is a widget. You can get 20 levels of nesting without trying too hard - and even with refactoring you'll still end up with 7+ nesting levels.

    @Atazhaia said in Cross-platform development:

    I am thinking of .NET MAUI (Xamarin) as a possible candidate for regular desktop/mobile applications with Unity for games as they both use C#. Does anyone have any experience with MAUI and can tell if that's good, bad or :wtf: to use. Or are there any other frameworks and toolkits I should look into too?

    It works fine. You just need to decide how much UI stuff you'll want to reuse for both mobile and desktop. If you're fine with maintaining two different sets of UI, go with XAML, otherwise with Blazor.

    There's also this nice feature of Visual Studio I recently learned about which is Dev Tunnels. You usually have a bit of a problem if you're developing an API server and a mobile application at the same time because a development server usually only listens on localhost unless you want to putz around with certificates and proxies and whatnot. The Dev Tunnels feature creates just that on the fly.



  • @sockpuppet7 said in Cross-platform development:

    Flutter seems an option worth considering. When I looked it was a new thing, it's probably better now, and it was getting adoption quickly on new projects

    The thing that puts me off of Flutter is that it comes with it's own special snowflake language, and one that does not seem to have any significant innovative feature.

    @Rhywden said in Cross-platform development:

    I tried Flutter. It's Widget hell. Everything is a widget. You can get 20 levels of nesting without trying too hard - and even with refactoring you'll still end up with 7+ nesting levels.

    Everything's a widget in Gtk too and I found that model fairly nice and easy to work with, and with HTML you also tend to end up with pretty deep nesting of <div>s, so I don't think I'd mind. But learning a new language, and then having to bind all the libraries I want to use for the logic side of things (that exist for a handful of languages, but not this one)? :why.tif:?



  • @Bulb said in Cross-platform development:

    Everything's a widget in Gtk too and I found that model fairly nice and easy to work with, and with HTML you also tend to end up with pretty deep nesting of <div>s, so I don't think I'd mind. But learning a new language, and then having to bind all the libraries I want to use for the logic side of things (that exist for a handful of languages, but not this one)? :why.tif:?

    Yeah, but with HTML you offload styling and animations and stuff onto CSS. With Flutter that's often also a widget.


  • Considered Harmful

    @Zecc said in Cross-platform development:

    I'm interested in suggestions too.

    Just to add confusion to the mix, here's a few other frameworks I've heard about and which I've considered, also in the C# space.

    I have no experience with any of these, but maybe someone else has.

    Sorry/not sorry for piggybacking on your thread.

    I have excellent reports of Godot from an indie game dev I know.



  • @Atazhaia said in Cross-platform development:

    and the desktop apps to work on Windows, Mac and Linux.

    I've stayed in the C++ realm - I'm using wxWidgets for this. (I actively release on Windows/Mac. It will compile on Linux, but I'm not going to push up a binary release for the Linux-flavor-of-the-month.)



  • The problem with going cross-platform between desktop and mobile is not the language or the toolkit, but rather that the way you interact with applications is different between the two environments. Mice and keyboards simply aren't the same as touch screens, and there's nothing you can do about that (unless it is light interaction such as typing forum comments in a webpage, where you can get away with it).

    Please tell Microsoft this circa 2012


  • Discourse touched me in a no-no place

    @slapout1 said in Cross-platform development:

    The problem with going cross-platform between desktop and mobile is not the language or the toolkit, but rather that the way you interact with applications is different between the two environments. Mice and keyboards simply aren't the same as touch screens, and there's nothing you can do about that (unless it is light interaction such as typing forum comments in a webpage, where you can get away with it).

    Please tell Microsoft this circa 2012

    That's one of the ways in which we know.


  • BINNED

    @Zecc said in Cross-platform development:

    I'm interested in suggestions too.

    Thirded.

    My current goto solution is still Qt, which I compile for Windows, Linux, and Mac. It works fine on all three of them, but looks a bit uggo on Mac.
    However, with the computing industry's general trend of adopting worse technologies, it feels like it's becoming outdated. Also, the Qt company is increasingly following the letter and not the spirit of their open-source obligations, so I feel like I might have to jump ship at one point.

    However, I'm not going to learn Dart just for them to kill it before I'm done. :fu:



  • @topspin said in Cross-platform development:

    However, with the computing industry's general trend of adopting worse technologies, it feels like it's becoming outdated.

    I find the React and Elm ways of defining UIs to be an improvement over the imperative with callbacks style used with Qt (and Gtk, WPF etc.) for ease of development and maintenance. Unfortunately Electron is a massive misuse of resources, but now there's lighter-weight alternative Tauri.


  • 🚽 Regular

    @Bulb

    Looks like this:

    public class MyPage : View {
    
        readonly State<int> clickCount = new State<int> (1);
    
        public MyPage() {
            Body = () => new VStack {
                new Text (() => $"Click Count: {clickCount}"),
                new Button("Update Text", () => {
                    clickCount.Value++;
                }
            };
        }
    }
    

    and it's based on MAUI.

    Filed under: one more for analysis paralysis.


  • Java Dev

    @Zecc Although the readme also says:

    Comet is a proof of concept. There is no official support. Use at your own risk.

    So maybe I would not rely on it for anything production-like yet.


  • Notification Spam Recipient

    @Atazhaia said in Cross-platform development:

    Does anyone have any experience with MAUI and can tell if that's good, bad or :wtf: to use.

    If you don't think that XAML and MVVM are horrible ideas, even worse in practice, then it's fine.

    When I played with it, none of tutorials from Xamarin's site worked, XAML editor crashed every 2 hours, VS crashed once a day at least. Finding relevant info or answers to problems is never ending forum hunting, with lots of incorrect information for deprecated versions.

    XAML and MVVM are horrible ideas, btw.

    Just make a website wrapped in a browser control and save yourself some sanity.


  • Discourse touched me in a no-no place

    @MrL said in Cross-platform development:

    Just make a website wrapped in a browser control and save yourself some sanity.

    You seem to be assuming that making a website would imply saving any sanity. :laugh-harder:


  • Notification Spam Recipient

    @dkf said in Cross-platform development:

    @MrL said in Cross-platform development:

    Just make a website wrapped in a browser control and save yourself some sanity.

    You seem to be assuming that making a website would imply saving any sanity. :laugh-harder:

    Well, relatively speaking of course.


  • Java Dev

    Also found another consideration for the pile:


  • BINNED

    @MrL said in Cross-platform development:

    Just make a website wrapped in a browser control and save yourself some sanity.

    As someone who has no idea about webdev crap, how do you make it do stuff then if it's just a website? Like, load/save files from disk, start processes, etc.?



  • @topspin said in Cross-platform development:

    @MrL said in Cross-platform development:

    Just make a website wrapped in a browser control and save yourself some sanity.

    As someone who has no idea about webdev crap, how do you make it do stuff then if it's just a website? Like, load/save files from disk, start processes, etc.?

    Through browser APIs



  • @topspin said in Cross-platform development:

    @MrL said in Cross-platform development:

    Just make a website wrapped in a browser control and save yourself some sanity.

    As someone who has no idea about webdev crap, how do you make it do stuff then if it's just a website? Like, load/save files from disk, start processes, etc.?

    It's not just a website, it has a native wrapper that uses browser componentš to display the UI, but can still make native calls outside of the browser context.

    That said, a lot of things were indeed added to the browser lately so a “progressive web app“² can now read and write files, show notifications, get location, connect to speakers, microphone and camera and even to USB and BLE devices. All subject to a system dialog for user approval so it can't do those things behind user's back.


    š Electron carries it with it, which makes it Bloated, Cordova (for phones) or Tauri use the system one, or you can use the system one by hand. In either case there is a way to provide extra functions to the browser sandbox that can do the things that are normally not possible from browser.
    ² A rather poor technical name for web apps using a bunch of features that ultimately allow a web app to get “installed” to get a desktop or start menu icon, run in its own window that looks native, and run offline (it's cached during the “installation”). If the browser APIs are enough for what you want to do, big advantage is that you don't need to deal with all the platform-specific installers and app-stores.


  • Java Dev

    Well, I could try summarizing the things this far:

    MAUI/Xamarin: Suffering from a lack of proper desktop support as it does Windows, Android, iOS and Mac Catalyst.

    Avalonia UI/Uno Platform: Both of those are mainly building on the Microsoft tech for cross-platform. Avalonia seems to be more towards doing its own thing while Uno is more of build a WPF/WinUI app that can run on other OSes. So C# and XAML-based for both, Uno seems the more promising of them based off available features. Has support for all the things (Win/Mac/Linux/iOS/Android/Web).

    Codename One: Also promising, although lack of Linux desktop support. A benefit is able to use my current skills, at least for the mobile side of things. A con is that it looks like I need use their cloud-based build servers, as offline build support is an "advanced feature"

    And some short comments on a few things:

    Flutter: Bit too far from what I'm looking for, don't have any desire to learn Dart.

    Kivy: I'd rather be bitten by an actual snake over having to use Python in any greater capacity.

    NativeScript: I do not have enough self-loathing to love JavaScript on that level.



  • @Atazhaia said in Cross-platform development:

    I'd rather be bitten by an actual snake over having to use Python in any greater capacity

    Pythons don't bite 😜 They strangle instead.


  • @topspin I've been tempted by the combination of an embedded server that serves an actual webpage/webapp for UI. Server app, which is native code, would then do the heavy lifting. I've used it on small scale stuff with Wt before and didn't hate it more than e.g. GTK or Qt.

    I don't do much UI stuff, though. (The other option for me is something like ImGui, but I wouldn't do a fully fledged GUI app in that.)


  • Considered Harmful

    @cvi said in Cross-platform development:

    @topspin I've been tempted by the combination of an embedded server that serves an actual webpage/webapp for UI. Server app, which is native code, would then do the heavy lifting. I've used it on small scale stuff with Wt before and didn't hate it more than e.g. GTK or Qt.

    I don't do much UI stuff, though. (The other option for me is something like ImGui, but I wouldn't do a fully fledged GUI app in that.)

    Why on earth... well, it may be the saner option but it shouldn't be. Could you at least use a managed language instead of native code?


  • Java Dev

    @Gribnit said in Cross-platform development:

    it may be the saner option but it shouldn't be

    That, and many other things in development.



  • @Gribnit said in Cross-platform development:

    managed language instead of native code

    :eek:

    FWIW. I usually have native code anyway, so adding another language in the mix likely wouldn't make things simpler.

    Edit: But, yeah, agreed on the sanity front. That shouldn't be a sane option, but here we are.


  • BINNED

    @Bulb said in Cross-platform development:

    @topspin said in Cross-platform development:

    @MrL said in Cross-platform development:

    Just make a website wrapped in a browser control and save yourself some sanity.

    As someone who has no idea about webdev crap, how do you make it do stuff then if it's just a website? Like, load/save files from disk, start processes, etc.?

    It's not just a website, it has a native wrapper that uses browser componentš to display the UI, but can still make native calls outside of the browser context.

    So would the rest of the process be a C++/C#/whatever process with just the GUI in JS/TS/..., or is everything JS? If the latter, can it at least do FFI calls?

    Status: Now wondering how I'd get a large bunch of simulation data over to the JS side, but curiously enough, it'd probably actually be simpler to display stuff with Three.JS. Again, shouldn't be, yet here we are.



  • @topspin On the other hand, if you're mainly rendering 3d stuff, going down the ImGui route might not be terrible.


  • BINNED

    @cvi said in Cross-platform development:

    @topspin On the other hand, if you're mainly rendering 3d stuff, going down the ImGui route might not be terrible.

    No, and no thanks. It’s more of an “also” than a “mainly”. I still need text inputs and combo boxes and tables and all the usual stuff that I don’t want to look like wannabe-Blender.



  • @topspin said in Cross-platform development:

    @Bulb said in Cross-platform development:

    @topspin said in Cross-platform development:

    @MrL said in Cross-platform development:

    Just make a website wrapped in a browser control and save yourself some sanity.

    As someone who has no idea about webdev crap, how do you make it do stuff then if it's just a website? Like, load/save files from disk, start processes, etc.?

    It's not just a website, it has a native wrapper that uses browser componentš to display the UI, but can still make native calls outside of the browser context.

    So would the rest of the process be a C++/C#/whatever process with just the GUI in JS/TS/..., or is everything JS? If the latter, can it at least do FFI calls?

    The rest of the process would be in C++/C#/whatever. Where whatever might be JS, but then it's nodejs, which has functions for all the usual OS API and support for native (C/C++/Rust/Pascal etc.) modules.



  • … the trouble with the C++/C#/whatever code is that it is still rather difficult to make it portable. C++ can be compiled for everything, but lot of APIs are platform-specific, C# being portable is fairly recent development, Java on Android has a lot of platform-specific API differences too and I'm not sure how well it even works on iOS, node is, as far as I remember, still desktop-only etc. So usually you use the standard components provided by the Electron, Cordova, Tauri or other framework, which are implemented in different languages on different platforms, but provide equivalent interfaces, and try to write as much as practical inside the browser component, because that behaves consistently across the targets.



  • @MrL said in Cross-platform development:

    @Atazhaia said in Cross-platform development:

    Does anyone have any experience with MAUI and can tell if that's good, bad or :wtf: to use.

    If you don't think that XAML and MVVM are horrible ideas, even worse in practice, then it's fine.

    When I played with it, none of tutorials from Xamarin's site worked, XAML editor crashed every 2 hours, VS crashed once a day at least. Finding relevant info or answers to problems is never ending forum hunting, with lots of incorrect information for deprecated versions.

    XAML and MVVM are horrible ideas, btw.

    Just make a website wrapped in a browser control and save yourself some sanity.

    2vl2rrhz4f461.jpg



  • @slapout1 Serious question--what are the alternatives?

    HTML/CSS? That's xml, but slightly differently flavored. And very designed around web document interfaces, which makes it sucky for non-document-style interfaces.

    Explicitly wired and built in code? Seems like a really really easy way to end up with spaghetti and difficulties changing anything.

    A gui builder? Those serialize to some flavor of XML most of the time, or worse, a proprietary binary blob. And these tend to not play nice with source control, since they're partially-generated.

    What other, better solutions am I missing? IMO, user interface work just sucks because it inherently is ugly.


  • Considered Harmful

    @Benjamin-Hall said in Cross-platform development:

    IMO, user interface work just sucks because it inherently is ugly.

    Development is so much easier without those pesky users.


  • Discourse touched me in a no-no place

    @Benjamin-Hall said in Cross-platform development:

    Serious question--what are the alternatives?

    A lot of GUI building is setting up a layout of components in a particular configuration. If you are lucky, that includes setting up the rules for how the components relate to each other in the layout so library code can handle resizing for you too. All of that is essentially declarative: whether in code or a description document, or even something spat out by a designer tool, it's just a gigantic fiddly declaration. It's also really dull.

    How you respond to events (especially user-initiated ones like clicking activating a button) is more interesting, and is where you definitely get to needing code.


  • Considered Harmful

    @Benjamin-Hall said in Cross-platform development:

    And these tend to not play nice with source control, since they're partially-generated.

    That's not the problem of the format itself, is it? If the code generator is non-deterministic, it's shit and you should get rid of it.
    For simple layouts code also has the advantage of checking at compile time (whenever that is).

    For the actual question: almost anything is better than XML. XML is ugly, evil, slow and stupid.



  • @Applied-Mediocrity MAUI does support using Blazor pages (i.e. HTML with stuff) instead of XAML.

    And honestly I'm not seeing the big difference you guys are foaming at the mouth about. Sounds a bit :belt_onion: to me.


  • Discourse touched me in a no-no place

    @Rhywden said in Cross-platform development:

    I'm not seeing the big difference you guys are foaming at the mouth about

    There isn't a big difference, and if the XML generator spat things out nicely indented and in a consistent order with consistent IDs, it would work fine. But cram everything onto one line, reorder things (where the order doesn't technically matter for correctness) and use random IDs (because they're substitutes for pointers in a graph in the in-memory model), and you get a serialization format that works (:technically-correct:) but which is absolute hell for source control.


  • Discourse touched me in a no-no place

    @dkf said in Cross-platform development:

    out nicely indented and in a consistent order with consistent IDs, it would work fine

    Case in point: Maven POMs are XML but work fine in source control.


  • Considered Harmful

    @dkf said in Cross-platform development:

    @dkf said in Cross-platform development:

    out nicely indented and in a consistent order with consistent IDs, it would work fine

    Case in point: Maven POMs are XML but work fine in source control.

    Hold my beer.



  • I do wonder about Godot actually. Since Godot's editor is actually implemented in Godot itself, it definitely works for non-game implementations too.

    Honestly though the question for me about cross-platform dev has always been 'to native or not to native' - going native raises different questions to having your own widgets that you display your way even if they're not platform appropriate.

    But we even see this in the webland these days, with people (me included) replacing the native checkbox and radio buttons with styled components.


  • Considered Harmful

    @Arantor said in Cross-platform development:

    But we even see this in the webland these days, with people (me included) replacing the native checkbox and radio buttons with styled components.

    User (well, payor) expectations - the pixels approved were the pixels on the comp, by durr!



  • Apologies for hijacking a bit OP's thread...

    @topspin said in Cross-platform development:

    My current goto solution is still Qt, which I compile for Windows, Linux, and Mac. It works fine on all three of them, but looks a bit uggo on Mac.

    This is also what I use and I'm reasonably happy with it (I don't into Mac so I don't really know about that). But I'm ready to admit that this might simply be because I don't really know anything else.

    (that was the part to try and stay on-topic...)

    However, with the computing industry's general trend of adopting worse technologies, it feels like it's becoming outdated.

    Can you elaborate on that? Are there things that it doesn't do? Or is it that it's one of the rare things that is not becoming worse as time goes? (which is how I see it, I don't really see any difference between using it now and 5, 10 or 15 years ago)

    Also, the Qt company is increasingly following the letter and not the spirit of their open-source obligations, so I feel like I might have to jump ship at one point.

    Again, can you elaborate? I don't follow news, I just get new versions every now and then, so I have no idea which way the community/company is going.



  • By the way, a short while ago

    declared first officially stable release.

    • It has a DSL for declaring the UI, which can be compiled to native code.
    • Works on Linux, Windows and MacOS (and tries to look natively on each). Web (webassembly) is in progress. Android and iOS are planned.
    • It is lightweight and can be run on low-power embedded hardware.
    • The application logic can be currently written in C++, Rust or JavaScript. They mentioned somewhere they are planning more languages, but I couldn't quickly find any roadmap.
    • Oh, and it was designed by people who were before that involved in designing QtQuick.

  • Considered Harmful

    @Bulb said in Cross-platform development:

    It has a DSL for declaring the UI, which can be compiled to native code.

    Huh. I actually find the syntax kind of nice. It looks somewhere between JS and SCSS.

    import { Button, VerticalBox } from "std-widgets.slint";
    export component Demo {
        VerticalBox {
            alignment: start;
            Text {
                text: "Hello World!";
                font-size: 24px;
                horizontal-alignment: center;
            }
            Image {
                source: @image-url("https://slint-ui.com/logo/slint-logo-full-light.svg");
                height: 100px;
            }
            HorizontalLayout { alignment: center; Button { text: "OK!"; } }
        }
    }
    

    Though I have reservations about using any brand new framework for serious projects, as it seems like these things die out as quickly as they pop up.


  • BINNED

    @remi said in Cross-platform development:

    However, with the computing industry's general trend of adopting worse technologies, it feels like it's becoming outdated.

    Can you elaborate on that? Are there things that it doesn't do? Or is it that it's one of the rare things that is not becoming worse as time goes? (which is how I see it, I don't really see any difference between using it now and 5, 10 or 15 years ago)

    Not sure myself, exactly, as I said it just feels like it. I'll try to list a few thoughts but this might be rambling...

    I'm not sure how much development Qt still sees, outside of the Qt company's efforts to push it onto high revenue embedded automative systems. Of course you could argue it is already mature, so it doesn't need that much development. There is orders of magnitude more going on in the webshit ecosystems. Partly to their own detriment because they're all running on the CADT model and constantly reinventing the wheel, new frameworks popping up every day and dieing the next. However, much as it pains me to admit, there is also apparently real development progress going on, new paradigms, reactive this, whatever that ...

    Then there's the schism introduced between QML based applications, which is the "blessed" new way to do things, versus Qt widgets based applications, which is the "legacy" way. Thus, it seems most development happens on the QML front, with widgets only getting maintenance but not really new feature development. However, a lot of people, myself included, never adopted QML stuff, which seems like a hot mess to me. It appears that most of their own applications are still widget based. Prime example being Qt Creator, which apparently uses both in different areas, but "even things like the welcome page were once rewritten in qml and then replaced again with widgets because back then qml was not mature enough."

    Likewise, how do you style widgets to either give them "a modern look" or just adapt a few things here and there while trying to keep an otherwise native look? Well, if it's something simple like giving a label a red warning color, I prefer to use QPalette, which doesn't mess up everything else. If you need more control though, you have to either write your own custom QStyle, which is an immense pain (and it pisses me off to have to subclass shit for that, although in this case it's kind of reasonable), or use Qt style sheets, the modern webshit way. Which would be fine, the only problem is that once you set a style sheet on a widget, it looks like absolute shit, unless you style everything well. So yeah, pick your poison. There's also disagreements on which of those is better (that looks pretty nice until you need to figure out how to do it).

    The whole thing about OpenGL and rendering backends ... That seems a mess. There's apparently Qt Quick 3D, but that's GPL only. Other things I can't keep track of what is still in development, supported, or abandoned.

    I think general usage of Qt is becoming less widespread as more developers just run idiotic tech like electron, so that's one reason for it. Sticking with Qt makes me wonder if I'm making myself miss relevant technological developments and skills.

    Side note: A coworker recently remarked that my new application I've built with Qt looks "dated". Of course my thought is that she has no fucking clue, and just because webshit abandons all ideas about native looks, then doing it right doesn't make it look bad. But I guess if all "modern" stuff does crap like that, then in turn not doing that does make it look old by definition, even if it's not technically a bad thing.

    What are native looks anyway? Mac still has quite stringent looks, but ever since Win10 jumped back to the Windows 3.11 look (or arguably even before that), it's been a hot mess of everybody just doing whatever they want, tools shipped with Windows and MS Office included.

    Also, the Qt company is increasingly following the letter and not the spirit of their open-source obligations, so I feel like I might have to jump ship at one point.

    Again, can you elaborate? I don't follow news, I just get new versions every now and then, so I have no idea which way the community/company is going.

    Well, what new versions did you get? Even though Qt is LGPL, Qt 5.15.2 (?) was the last public release for the LTS branch, and newer releases have been hidden behind the commercial license paywall. Can they do that? I guess they can.

    How do you install it? If you google for an installer, the "Download. Try." button at the top of their web page sends you to a page for either buying the commercial version or if you click "Download" in the "Try Qt Framework and Tools" section, it shows a form where you have to fill in your information to get a "free evaluation" version. After which their sales drones will probably contact you and keep an eye on if you actually buy it. Digging a bit more in the home page you can instead find the link to "Go open source", where you can just download it. But this is heavily implying that you can only use the free version for open source software. Wrongly, of course. You can use Qt and LGPL software in closed source applications as long as you link dynamically. They just don't want you to know that. It is not a good sign if you want to obscure the details of the product you offer.

    And then, when you finally got the installer, it requires that you log into an account to install. Sure, that account is free for the open source version, but that still feels sketchy. There's been a lot of complaints about this, and you used to be able to skip this entirely, or set it to offline mode, but those options have been removed. Of course you could just download from source and build all of it yourself, but I don't feel like doing that.

    Oh, and then there's the additional packages you can license. For example, I was interested in the Qt Charts module. That is commercial or GPL. How much does it cost? Well, you can't just license that module and use it with LGPL Qt, you have to buy the commercial license for all of Qt. Yeah, no thanks. I would've bought that module separately (back when that was still an option), but the cost of the whole Qt framework commercial license is stupidly expensive.

    My patches to Qt Creator / their gdb bridge I've been sitting on for the last two or so years, I've not gotten around to contribute. On the one hand, that process seems painful, and on the other what I've wrote above makes me reluctant to do that.


  • BINNED

    The other week someone pointed me to egui:

    I don’t know much beyond what’s immediately visible on the page, but relevant here is that it claims to runs natively on the three desktop OSes, as well as producing webassembly and webgl. If you click that link you immediately get such a webgl demo and I must say, the demos alone are impressive indeed.

    In fact, to quote myself,

    I must say, you’ve tempted me to learn rust for this alone

    I must say, something about this seems to make me say ‘I must say.’


Log in to reply