Fruits of my recent search for a cross-platform ui toolkit.
Victor Mumford
victoremumford at gmail.com
Thu Dec 21 19:19:03 UTC 2023
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?
I can't compare it to the other options, but I've been very happy with
Flutter so far.
On Mon, Dec 18, 2023, 3:20 PM Brian Sturgill <c.brian.sturgill at gmail.com>
wrote:
> Primary Criterion: Must work on Linux, Windows and MacOS desktops.
>
> I want to use this to make open-source desktop apps.
>
> --
>
> # What I believe about cross-platform UIs as of 2003-12-18.
>
> Cross-platform and cross-language:
> wxWidgets: (Windows, Linux, MacOS, *BSD)
> https://www.wxwidgets.org/
> Uses native controls, bindings in a huge number of languages.
> It lags on mobile, iOS in progress.
> Apps feel dated, even though wxWidgets take steps to use latest
> controls on Windows.
> Linux toolkits support is great, but alas, those toolkits are also
> looking dated.
> Haven't done recent measurements, but is rather fat (disk/memory)
> unless you are using it directly in C++.
> Basically you have a language, wrapping a huge toolkit, which
> wraps native controls. It kind of has to be fat.
>
> Dart only:
> Flutter (Windows, Linux, MacOS, iOS, Android)
> https://flutter.dev/
> Does not use native controls.
> Most modern looking of all the options.
> Has the smallest runtime to lug around.
> (Still not that small - 20M on Linux).
>
> Dotnet only:
> (These obviously have to deal with the rather large .NET runtime.)
> Avalonia (Windows, Linux [Gtk], MacOS, iOS, Android)
> https://avaloniaui.net/
> Does not use native controls.
> If you liked Microsoft's WPF, you want to look at this one.
> Alas, doesn't seem to be nearly as popular as I think it should be.
> Microsoft MAUI (Windows, MacOS, iOS, Android)
> https://dotnet.microsoft.com/en-us/apps/maui
> MacOS "support" is really just for iOS app on MacOS.
> Uses native controls.
> Windows support is said to be buggy. (Shocking, really.)
>
> Python only:
> (These obviously have to deal with the huge Python runtime.)
> (Remember that Windows and maybe even MacOS will need Python to be
> installed.)
> (One would have to seriously consider using venv for app
> distributions.)
> Kivy
> https://kivy.org/
> Does not use native controls.
> BeeWare
> https://beeware.org/
> Does not use native controls.
>
> Java VM:
> (These obviously have to deal with the rather large
> Java/Kotlin/Compose runtime.)
> JetBrains/compose-multiplatform (Windows, Linux, MacOS, Android)
> https://github.com/JetBrains/compose-multiplatform
> Is Kotlin based (from JetBrains). Uses Google's Jetpack Compose.
> iOS support is in alpha.
> This toolkit has not really taken off yet, but it could.
> I am not certain, but it seems not to be using native controls.
> However, it appears you can use some native controls with the
> toolkit.
>
> There are a number of older toolkits, AWT, SWT, etc. but none seem
> to have really gained traction.
>
> Notes:
> Native controls yea, or nay?
> Native controls behave exactly like the user expects and blends in
> well.
> Not using native controls reduces bloat, gives pixel perfect accuracy
> across platforms and often is faster. (Native controls sets have gained
> bloat with time.)
>
> Most popular for mobile is 1) Flutter, 2) MAUI.
> React Native, Phone Gap, and Cordova are being left behind.
>
> I personally (for my open source desktop app work) am going with
> Flutter.
> My second choice would have been wxWidgets, not sure what language
> though.
>
> I will be using Material Design with Flutter as most people have seen
> it
> and it doesn't look like any of the native platforms. Looking _like_
> native when you're not, often leads to confusion.
>
> I don't consider JavaScript things here. They are all quite bloated.
> Their popularity has decreased rapidly in recent times.
> Electron is still the leader here if you want to go that route.
> (Before going there, take a look at the memory footprint of VSCode or
> Atom.)
>
> Also, not included is React Native which is complicated.
> It isn't really "native" in any meaningful sense.
> It was heavily used for a while but has been declining.
>
> I am only considering open source solutions here, so Qt is not
> included (not free outside of Linux).
>
> --
>
> Brian
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.nclug.org/pipermail/nclug/attachments/20231221/71b35054/attachment.htm>
More information about the NCLUG
mailing list