<div dir="auto">Thanks for the overview Brian! I've never heard of Avalonia UI, but I'll be glad to look into it, I'm glad to have a reason to practice C#. I wonder why Microsoft is working on MAUI though if Avalonia seems more mature and feature-full, at least on a surface level?<div dir="auto"><br></div><div dir="auto">I can't compare it to the other options, but I've been very happy with Flutter so far. </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Dec 18, 2023, 3:20 PM Brian Sturgill <<a href="mailto:c.brian.sturgill@gmail.com">c.brian.sturgill@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Primary Criterion: Must work on Linux, Windows and MacOS desktops.</div><div><br></div><div>I want to use this to make open-source desktop apps.<br></div><div><br></div><div>--</div><div><br># What I believe about cross-platform UIs as of 2003-12-18.<br><br>Cross-platform and cross-language:<br>    wxWidgets: (Windows, Linux, MacOS, *BSD)<br>        <a href="https://www.wxwidgets.org/" target="_blank" rel="noreferrer">https://www.wxwidgets.org/</a><br>        Uses native controls, bindings in a huge number of languages.<br>        It lags on mobile, iOS in progress.<br>        Apps feel dated, even though wxWidgets take steps to use latest<br>            controls on Windows.<br>        Linux toolkits support is great, but alas, those toolkits are also<br>            looking dated.<br>        Haven't done recent measurements, but is rather fat (disk/memory)<br>            unless you are using it directly in C++.<br>        Basically you have a language, wrapping a huge toolkit, which<br>            wraps native controls. It kind of has to be fat.<br>    <br>Dart only:<br>    Flutter (Windows, Linux, MacOS, iOS, Android)<br>        <a href="https://flutter.dev/" target="_blank" rel="noreferrer">https://flutter.dev/</a><br>        Does not use native controls.<br>        Most modern looking of all the options.<br>        Has the smallest runtime to lug around.<br>            (Still not that small - 20M on Linux). <br>   <br>Dotnet only:<br>    (These obviously have to deal with the rather large .NET runtime.)<br>    Avalonia (Windows, Linux [Gtk], MacOS, iOS, Android)<br>        <a href="https://avaloniaui.net/" target="_blank" rel="noreferrer">https://avaloniaui.net/</a><br>        Does not use native controls.<br>        If you liked Microsoft's WPF, you want to look at this one.<br>        Alas, doesn't seem to be nearly as popular as I think it should be.<br>    Microsoft MAUI (Windows, MacOS, iOS, Android)<br>        <a href="https://dotnet.microsoft.com/en-us/apps/maui" target="_blank" rel="noreferrer">https://dotnet.microsoft.com/en-us/apps/maui</a><br>        MacOS "support" is really just for iOS app on MacOS.<br>        Uses native controls.<br>        Windows support is said to be buggy. (Shocking, really.)<br><br>Python only:<br>    (These obviously have to deal with the huge Python runtime.)<br>    (Remember that Windows and maybe even MacOS will need Python to be installed.)<br>    (One would have to seriously consider using venv for app distributions.)<br>    Kivy<br>        <a href="https://kivy.org/" target="_blank" rel="noreferrer">https://kivy.org/</a><br>        Does not use native controls.<br>    BeeWare<br>        <a href="https://beeware.org/" target="_blank" rel="noreferrer">https://beeware.org/</a><br>        Does not use native controls.<br>        <br>Java VM:<br>    (These obviously have to deal with the rather large Java/Kotlin/Compose runtime.)<br>    JetBrains/compose-multiplatform (Windows, Linux, MacOS, Android)<br>        <a href="https://github.com/JetBrains/compose-multiplatform" target="_blank" rel="noreferrer">https://github.com/JetBrains/compose-multiplatform</a><br>        Is Kotlin based (from JetBrains). Uses Google's Jetpack Compose.<br>        iOS support is in alpha.<br>        This toolkit has not really taken off yet, but it could.<br>        I am not certain, but it seems not to be using native controls.<br>        However, it appears you can use some native controls with the<br>        toolkit.<br>     <br>     There are a number of older toolkits, AWT, SWT, etc. but none seem<br>     to have really gained traction.<br><br>Notes:<br>    Native controls yea, or nay?<br>    Native controls behave exactly like the user expects and blends in well.<br>    Not using native controls reduces bloat, gives pixel perfect accuracy<br>    across platforms and often is faster. (Native controls sets have gained<br>    bloat with time.)<br>    <br>    Most popular for mobile is 1) Flutter, 2) MAUI.<br>    React Native, Phone Gap, and Cordova are being left behind.<br>    <br>    I personally (for my open source desktop app work) am going with Flutter.<br>    My second choice would have been wxWidgets, not sure what language though.<br>    <br>    I will be using Material Design with Flutter as most people have seen it<br>    and it doesn't look like any of the native platforms. Looking _like_<br>    native when you're not, often leads to confusion.<br>        <br>    I don't consider JavaScript things here. They are all quite bloated.<br>    Their popularity has decreased rapidly in recent times.<br>    Electron is still the leader here if you want to go that route.<br>    (Before going there, take a look at the memory footprint of VSCode or Atom.)<br>    <br>    Also, not included is React Native which is complicated.<br>    It isn't really "native" in any meaningful sense.<br>    It was heavily used for a while but has been declining.<br>    <br>    I am only considering open source solutions here, so Qt is not<br>    included (not free outside of Linux).<br></div><div><div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><br><div>Brian</div><div><br></div></div></div></div></div>
</blockquote></div>