Case Study - Lunacy
Tags: dotnet, csharp, skia
Published: 2022-01-06 14:30:00

We interviewed Sergey Mikolaitis from [icons8](https://icons8.com/lunacy). Sergey and his team have recently released a fantastic design application called Lunacy.

Lunacy is a truly cross platform graphic design tool powered by Avalonia.

## How did you discover Avalonia?
I had seen Nikita Tsukanov give talks at conferences and on YouTube back in the early days.

[English](https://www.youtube.com/watch?v=DLHhZJkSqWk)
[Russian](https://www.youtube.com/watch?v=8qzqweimcFs) 

It seemed like an interesting project but I didn't imagine how serious the team was about the platform and what it has now become, a serious player in the cross platform UI space.

## What were the reasons to choose Avalonia?
We had been using WPF and our application was tied to just Windows.

The newer replacements to WPF (UWP and Xamarin) were not able to offer us the flexibility that we needed for a content creation application.

We had our eye on Avalonia for along time and we saw that it is a robust platform with a huge and active community behind it.

Once Avalonia became stable enough we jumped at the opportunity to port our application.

## How was your experience of using Avalonia and porting your application?

Initially there was a bit of a learning curve as with all new frameworks. Previously we had been focused on Windows only technologies so we had to start thinking about writing applications for cross platform, however since Avalonia is extremely similar to the likes of WPF and UWP we got up to speed quite quickly, we were able to re-use our existing knowledge and skills effectively.

I believe the port would have taken us at least 3x longer if we had chosen a different framework.

The biggest difference coming from WPF is the new CSS like styling system. Once we understood it however it was far more flexible and a joy to use.

We see Avalonia as a "better WPF", its almost how you would make WPF if it was being designed today. There are many sensible improvements over WPF which save you a lot of time.

## Was Avalonia missing any important features compared to WPF?
The only thing that was missing was IME support and right-to-left text support.

Those however are actively being worked on and will soon be available.

There were a few other very minor features that we were able to implement ourselves, we opened PRs and they were merged.


## Was it important that Avalonia was an open source framework?
Not really but it became invaluable. The code quality of the framework is of a very high standard. This means the team were able to debug into Avalonia directly from the IDE and see nice clean and understandable code.

Sometimes you could skip the documentation and have a quick peek at the code on GitHub to get the information you need. This is something you are usually scared to do with other large code bases.

It also means when we find a bug or an issue, we are able to just fix it ourselves, we open a PR and it usually doesn't take long to have it merged.


## When you needed help where did you find it?
One of the best places for support was the community chat on Telegram.

[Telegram (EN)](https://t.me/Avalonia)
[Telegram (RU)](https://t.me/AvaloniaRU)

We had a difficulty being able to submit our application to the Apple store. We chatted with members of the community and quickly found how to resolve it.

## How is the performance?
The performance is excellent, our application is very graphical and we were able to make zooming, panning extremely smooth.

We also know that the team are working to optimize Avalonia even further so its only getting better from here.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/da6u77rn3i04b6pbl1dg.jpg)

[Lunacy](https://icons8.com/lunacy) is available in the [Apple Store](https://apps.apple.com/app/id1582493835) and [Microsoft Store](ms-windows-store://pdp/?productid=9pnlmkkpcljj), visit their website to try out a real Avalonia application.

[https://icons8.com/lunacy](https://icons8.com/lunacy)