<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/">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/">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/">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">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/">https://kivy.org/</a><br>  Â  Â  Â  Does not use native controls.<br>  Â  BeeWare<br>  Â  Â  Â  <a href="https://beeware.org/">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">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>