Roadmap (0.10)
See original GitHub issueSince people are asking where we currently are and what is planned next, here is a somewhat updated roadmap for the immediate future. I hope that here it would be more visible and get updates more often.
Current state
Project is ready for use on Desktop platforms for projects targeting systems with “west-friendly” locales (CJK text input and RTL text aren’t supported yet) and people who are able to see (screen readers aren’t supported yet either).
For the list of issues to be addressed for mobile platform support see Mobile section below.
0.9 release
- Text layout engine for Skia backend. Will add support for Unicode surrogate pairs, RTL text and inlines
- Global menu bar for macOS and some Linux distros
- Input method support. Right now we are just handling whatever events are sent by keyboard which isn’t suitable for CJK text
- Touch input and scroll support
- Ahead of time XAML to MSIL compilation
1.0 release
We don’t want people to get TypeLoadException
when using 3rd party controls and components, so the main focus there would be ensuring future API/ABI stability.
So we will most likely focus on features that would break API compatibility when implementedl. Notable examples are IME support currently planned for 0.9 release and Wayland backend for Linux that will probably require some rework of Popup API.
We’ll also need to integrate some API diff to our CI process, something like Mono’s API diff tool that generates nice API diffs for PRs
Mobile
For running properly on mobile platforms we still lack several features. They aren’t tied to a particular release because of the general lack of manpower. But we are getting there.
General infrastructure:
- [DONE] Touch event support (I’ve got a laptop with touchscreen, to things will speed up a little)
- Touch selection controls in TextBox
- A way for controls to announce that they want text input, will be resolved by Input Method support
- [DONE] XAML compilation to IL. It’s fine to parse XAML at runtime on Desktop/iOS, since either device is powerful enough or parser is compiled using LLVM and is a bit faster.
Missing bits in mobile backends:
- Enable GPU acceleration. We currently have a generic infrastructure for enabling OpenGL(ES) rendering that we are utilizing on desktop platforms, so it should be relatively easy to wire it up on mobile.
- [DONE] (managed overlays) - Add support for overlays for iOS (yes, they aren’t implemented at all)
- [DONE] (managed overlays) - Fix overlays for Android (they were working before, no idea what’s happened)
WebAssembly
I’ve spent a weekend tinkering with WASM using Blazor and SVG render target to avoid Skia linking issues. It turned out that while our ControlCatalog being somewhat operational, the current performance of Mono interpreter is way too slow. It also might be the fault of our layout algorithms or me missing something since the debugging story on WASM is currently non-existant.
You can see the incomplete demo here: http://testapp.keks-n.net/ don’t even try to open calendar or datagrid pages, they take ages to load.
So, for now we are waiting for SkiaSharp to be updated to a more-recent release of Skia, our core framework becoming faster and Mono optimizing its interpreter.
Historically writing a new backend for Avalonia has taken a week or two, it was usually the lack of features in the core framework that prevented us from utilizing platform features before.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:190
- Comments:50 (26 by maintainers)
Top GitHub Comments
I am new to Avaloniaui, but very excited about possibility to build multi-platform applications with mmore than full power of WPF. My question is when are you moving to .net core 3.1? Currently the application is still using .netstandard2.0 from what I see. I bet a lot of code and dependencies can be removed if .net core 3.1 is utilized.
0.11, next year