Hello everyone! I'd like to share my project, ZeppelinForms (ZF for short). It's a UI framework for C# that lets you build modern applications for multiple platforms: Windows, Linux (X11), Android, and the browser (WASM). Support for iOS, macOS, and Wayland is planned for the future.
Why do we need yet another framework?
You might say that the .NET ecosystem already has more than enough UI frameworks: WinForms and WPF for legacy applications, WinUI for modern apps, and Avalonia and Uno for cross-platform development. However, this picture is far from stable. Otherwise, how would you explain the abundance of control libraries and themes for WinForms and WPF designed to make applications built with them look modern?
WinUI, and Uno in particular, have faced criticism for questionable design decisions and unintuitive workarounds. Avalonia is a solid framework, but starting with version 0.12, it introduced some divisions within the community.
As a result, there's a clear gap: developers want something that feels familiar, like WinForms or WPF, but looks modern, doesn't carry tons of legacy baggage, and supports multiple platforms. That's exactly where ZF comes in.
What if WinForms were different?
WinForms often gets a bad rap, but it does its primary job exceptionally well: rapid application development. The code-first approach has its own advantages, even if it can't quite match the elegance of XAML markup.
However, every WinForms developer eventually runs into at least three fundamental limitations:
- Slow and primitive GDI+ graphics.
- Controls are native Win32 objects, which limits their flexibility.
- Windows only.
You might argue that people have found ways around these limitations: building custom controls from scratch (ComponentOne, DevExpress) instead of wrapping standard ones, heavily optimizing graphics rendering or using a WPF host, and running applications through Wine or Mono.
And you'd be right. But these are cumbersome workarounds that require considerable effort just to avoid hitting the framework's limitations.
ZeppelinForms takes a different approach: folks, keep writing code the way you do in WinForms, but we don't need native handles for every control — only for the window itself. All controls are virtual, just like in XAML-based frameworks!
You don't have to worry about GDI+, either. We use SkiaSharp, and ZF's architecture is designed to remain independent of any particular graphics stack.
There's also a Visual Studio extension that gives you a previewer, just like the one in Avalonia!
What if I don't like WinForms?
Then you'll be glad to know that XAML — or, more precisely, ZFML — is available, even though it's entirely optional.
You'll probably appreciate ZSS, our styling system inspired by CSS. Commands and bindings are also available, and support for using them in more scenarios is actively being developed.
Animations, transitions, styled properties, effects, themes... I'm sure there's something here to win you over!
I'd especially like to highlight how easy it is to build Android applications with ZF. In my experience, Avalonia and Uno have given me quite a bit of trouble in this area.
Current status
The project is still relatively young, but don't rush to assume I'll abandon it in a month or two. The solution currently contains around 900 unit tests, makes extensive use of source generation, and is subject to strict analyzer checks.
See for yourself on the live demo available on my GitHub.
The project is under active development and could use support from the community: issues, bug reports, feedback, and suggestions are all welcome.
I'm happy to hear any criticism, as long as it goes beyond the usual "Why do we need yet another framework?"


Top comments (0)