Thoughts on Avalonia UI


2 min read

After searching for a long time, I have settled on using the Avalonia UI framework as my base for software. My desired language is F#, which I have followed for more than 10 years but still am a newbie. I have accepted that my sweet spot is more in the design and documentation of a domain and what the software should accomplish rather than the actual programming of the functions. The "Product Manger"/"Product Owner" role. Regardless, I press on (mainly with the help of the Copilot AI).

The advantages of Avalonia that I see are that I can utilize the cross platform aspects and use one codebase to cover everything basically. For my intended designs, having local file access is crucial, so the "desktop" features fit best with doing data storage on the hard drive. But being able to make android native apps and running in the browser are both in the plans (sorry ios people, I am just not going pay Apple for the benefit to code for your phone and then be gate-kept). [android phones can be "sideloaded" (not through Google App Store) as well a can be done through F-Droid which my apps should qualify for if they ever get to that point. The small device options are also interesting.

Trying to do something with F# in Avalonia as a start has been less than fruitful. Again, trying to understand, design and learn too many things at once. I am completely self-taught, watching countless videos and reading blogs and failing at pretty much all attempts at creating software. Add that I am new to actually using Linux and I am glutton for punishment. Recently, I did manage to hack together some F# scripts (Polyglot Notebooks actually) to accomplish some data entry tasks, so there is progress. Albeit that success was completely because of Copilot, even if the F# solutions it provided are still very rough and many times, very wrong. I will say THANK YOU to the Avalonia team and community for putting F# in the templates! That is a huge help to the F# community.

The Avalonia UI project has actually been around for more than 10 years. So there is a lot of old information hanging around, including in the docs. Trying to follow getting started and such is sometimes a bit confusing or sometimes just wrong. I am hoping to contribute some changes to bring them in line with the current environment. I am also thinking I might add F# information if I get to that point.