Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap (0.10) #2239

Closed
2 tasks done
kekekeks opened this issue Jan 11, 2019 · 50 comments
Closed
2 tasks done

Roadmap (0.10) #2239

kekekeks opened this issue Jan 11, 2019 · 50 comments

Comments

@kekekeks
Copy link
Member

kekekeks commented Jan 11, 2019

Since 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.

@awb99
Copy link

awb99 commented Feb 1, 2019

HI! I see that it is quite easy to add new runtime engines to your platform. So I wonder if it would be possible / make sense to render AvaloniaUI applications via WebAssembly on a web browser. This way one could develop applications for Desktop, Mobile and Web. :-)

@kekekeks
Copy link
Member Author

kekekeks commented Feb 1, 2019

WebAssembly

See #1387 (comment)

@npolyak
Copy link

npolyak commented Dec 8, 2019

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.

@martenf
Copy link

martenf commented Jan 10, 2020

An upgrade to .netstandard2.1 will permanently break compatibility with .net framework. I am not sure if that is a good idea before the release of .net 5.0

@kekekeks
Copy link
Member Author

It should be possible to multi-target netstandard2.1 and net48, but I'm not sure if that's worth the complications.

@jinyuttt
Copy link

jinyuttt commented May 1, 2020

My point of view may not be correct, I just hope to exchange it.

First of all, the. Net framework is not worthy of attention in cross platform UI, and the focus should be NETCORE. WPF has met all the needs. If it needs a complete cross platform, it should also turn to NETCORE. It's what Microsoft does now to discard the burden, and Microsoft doesn't insist on all synchronization.

In addition, whether there can be related branches to let some people who are good at it complete common controls, such as ribbon, dockpanel or vs common components, especially chart controls. I also agree with developers from companies like devexpress to work together to develop on the basis of avaloniaui, or directly draw on OpenGL and integrate it into avaloniaui. I feel that Microsoft always wants to bind things of windos.

Can we open up a forum area in the official (http://avaloniaui.net/docs/) for people to exchange views directly instead of just various issues.

@ceremony
Copy link

I absolutely agree - .Net framework is increasingly a thing of the past - and frankly if Avalonia did not support it at all, there would be little detriment.

All focus should be on .Net Core moving forward, whether v3.1 or v5.0.

If I were using .Net framework, I'd (un)happily go back to my days of WPF.

@jmacato
Copy link
Member

jmacato commented May 11, 2020

AFAIK the targets for netframework are for Xamarin support and not necessarily a support for the legacy .NET framework. When .NET5 drops then we can happily switch to whatever target .NET5 would be.

@jinyuttt
Copy link

So, I don't mean to upgrade to netstandard 2.1, but to NETCORE 3.1 directly

@jmacato
Copy link
Member

jmacato commented May 31, 2020

all of this TFM stuff will be sorted out when .NET 5 is up, so please be patient @jinyuttt :)

@jinyuttt
Copy link

Half a year has passed. When will 1.0 be released?

@kekekeks
Copy link
Member Author

We are most likely do the React thing at some point and switch from 0.X.Y numbering to X.Y.Z numbering while keeping the X number.

The overall quality of the product was sufficient for "1.0" for quite a while, but there are known areas with inevitable breaking API changes in the future.

Changing the major number from zero will require us to implement more strict API review process and keep more obsolete APIs for compatibility, so breaking changes will only occur when absolutely inevitable.

All of that requires automatic tooling that I hope to get going in 0.10-0.11 timeframe.

@devel0 devel0 mentioned this issue Jul 16, 2020
2 tasks
@HTGAzureX1212
Copy link

Any plans for .NET 5 support?

@kekekeks
Copy link
Member Author

.NET 5 should work with 0.9 out of the box. Window background blur effect from 0.10 isn't yet supported with .NET 5 on Windows

@NHodgesVFX
Copy link

I was wondering what the current state is for mobile platforms and when they might be finished? Thanks for the work on avalonia.

@kekekeks
Copy link
Member Author

I was wondering what the current state is for mobile platforms and when they might be finished?

0.11, next year

@danwalmsley
Copy link
Member

@NHodgesVFX there is active work happening on iOS.

@MichalSy
Copy link

.NET 5 should work with 0.9 out of the box. Window background blur effect from 0.10 isn't yet supported with .NET 5 on Windows

Unfortunately I can't get a project running with dotnet 5.0:
Avalonia.ReactiveUI 0.10.0-preview6 is not compatible with dotnet (.NETPlatform,Version=v5.0).
Package Avalonia.ReactiveUI 0.10.0-preview6 supports: netstandard2.0 (.NETStandard,Version=v2.0)

What do I have to do to use dotnet 5.0?

@danwalmsley
Copy link
Member

this is fixed on master... you can either use a nightly build i.e. 0.10.999-cibuild0011763-beta

Or simply for now add a package reference to System.Reactive 5.0.0

@fei4xu
Copy link

fei4xu commented Jan 27, 2021

@NHodgesVFX there is active work happening on iOS.

May I ask whether Avalonia on iOS will be faster or slower than Xamarin (cold start, page swipe), generally speaking?

then Android?

@ThierryFourniol
Copy link

ThierryFourniol commented Jun 22, 2021

Hello,

I think Avalonia now supports NET 5.
What about WinUI 3? In case not, what are the equivalent UI controls, such as ListView, available in Avalonia?
Thanks.

@maxkatz6
Copy link
Member

I think Avalonia now supports NET 5.

Yes.

What about WinUI 3?

Avalonia is equivalent of WinUI, it's not supposed to support it. Still you can use native controls like WebView2 using NativeControlHost. But it's not cross platform way obviously.

what are the equivalent UI controls, such as ListView, available in Avalonia?

ListBox

@BaseHead
Copy link

BaseHead commented Aug 3, 2021

Hey guys!
Any guestimations for CJK text and also Screen Reader Support?
Thanks

@kekekeks
Copy link
Member Author

kekekeks commented Aug 3, 2021

CJK text display works if you set an appropriate font, like this:

You need to use a font that has Chinese characters. https://github.com/anthonyfok/fonts-wqy-microhei is a good one
WenQuanYiMicroHei-01.ttf.zip

Place it into Assets, add as AvaloniaResource and add something like

<Style Selector="TextBlock">
   <Setter Property="FontFamily" Value="avares://YourAssemblyName/Assets/Fonts#WenQuanYi Micro Hei" />
</Style>

to your App.xaml after the theme

IME support for X11 is done, macOS and Windows are currently supported without cursor rectangle tracking, proper windows support is being worked on in #6223

For screen reader support progress see #5177

@sid-dahiya
Copy link

CJK text display works if you set an appropriate font, like this:

You need to use a font that has Chinese characters. https://github.com/anthonyfok/fonts-wqy-microhei is a good one
WenQuanYiMicroHei-01.ttf.zip
Place it into Assets, add as AvaloniaResource and add something like

<Style Selector="TextBlock">
   <Setter Property="FontFamily" Value="avares://YourAssemblyName/Assets/Fonts#WenQuanYi Micro Hei" />
</Style>

to your App.xaml after the theme

IME support for X11 is done, macOS and Windows are currently supported without cursor rectangle tracking, proper windows support is being worked on in #6223

For screen reader support progress see #5177

@kekekeks can you share which release/timeline is being targeted for X11/Screen Reader support?

@grokys
Copy link
Member

grokys commented Aug 7, 2021

@sid-dahiya we were hoping for the next release, but unfortunately I'm busy with something else until end of year, so we may not make that.

@TheColonel2688
Copy link

Could the OP be updated? It seems to be very out of date. It mentions release 0.9

What are the net goals and directions for the project.

@kekekeks
Copy link
Member Author

The major milestone is switching to x.0.0 release scheme, which requires a somewhat stable API/ABI. We are quite happy with API stability measures we've taken since 0.9 and our current "backport everything valuable" policy, so the idea is to do the last batch of breaking changes and finally leave that 0.x.y state. Speaking of which, the text engine thingy isn't finished yet. Hopefully it will be done this year.

It is important because API/ABI stability greatly affects the ecosystem. If everything has to be recompiled for the new release, it puts a huge burden on 3rd party library maintainers which isn't something that we want.

Other major major steps would be WASM support (we are waiting for .NET 6 for this one) and renderer rework (I need to finally recover from post-covid complications), accessibility support and finishing mobile backends but they shouldn't affect API/ABI stability.

@KieranDevvs
Copy link
Contributor

Other major major steps would be WASM support (we are waiting for .NET 6 for this one) and renderer rework (I need to finally recover from post-covid complications), accessibility support and finishing mobile backends but they shouldn't affect API/ABI stability.

In regards to WASM support, are you guys looking to render to the browser DOM / Canvas API?
I'm currently using Avalonia for native desktop clients and Blazor for all my web based implementations. It would be nice to have a TRUE "one stop does all" framework to work with (cough MAUI cough)

@npolyak
Copy link

npolyak commented Oct 24, 2021

Hey Kieran, as far as I understand, the WASM will be creating the visuals using OpenGL - though I am not sure. Nikita, can you confirm or deny. Will there also be an API for manipulating HTML DOM?

@kekekeks
Copy link
Member Author

We are planning to use OpenGLES provided by Canvas with some invisible textbox overlays for text input. It should be possible to export our visual tree to DOM at some point essentially using Avalonia visuals as some kind of virtual DOM, but there are no plans for that yet.

@beto-rodriguez
Copy link

SkiaSharp works now on WASM using dotnet 6 rc, does it make it easier to take Avalonia to WASM?

@Gillibald
Copy link
Contributor

SkiaSharp works on WASM since .Net Core 3.1

We don't have a WASM backend because no one had time to work on the glue code yet. The backend itself will work like any other mobile backend.

.Net 5.0 and onwards will make things easier because we can work with function pointers etc.

@npolyak
Copy link

npolyak commented Oct 24, 2021

We are planning to use OpenGLES provided by Canvas with some invisible textbox overlays for text input. It should be possible to export our visual tree to DOM at some point essentially using Avalonia visuals as some kind of virtual DOM, but there are no plans for that yet.

Does it mean that we shall be able to embed some Avalonia applets within a web page but in the beginning it will not be able to interact with the rest of the HTML/JavaScript of the page?

@kekekeks
Copy link
Member Author

it will not be able to interact with the rest of the HTML/JavaScript of the page

Not through Avalonia APIs. There are existing interop primitives in Mono that could be used for invoking JS and exporting functions to JS.

We are also likely to add "native embedding" support just like we have on desktop platforms, so one could have some div synchronized with embedding host, but it will suffer from airspace issues just like on desktop.

@robloo robloo mentioned this issue Nov 1, 2021
@kekekeks
Copy link
Member Author

WebAssembly early demo - https://blaze.avaloniaui.net/

It's just something we've scraped together in a day. Keyboard doesn't work yet, everything is redrawn on every frame, stuff crashes sometimes, but it's a good estimate of the expected performance.

@KieranDevvs
Copy link
Contributor

KieranDevvs commented Nov 11, 2021

WebAssembly early demo - https://blaze.avaloniaui.net/

It's just something we've scraped together in a day. Keyboard doesn't work yet, everything is redrawn on every frame, stuff crashes sometimes, but it's a good estimate of the expected performance.

Is this using AOT compilation? Also, does this mean that WASM is now confirmed to be coming in the future or is it still on the table?

@mrmandrake
Copy link
Contributor

really impressive!!!

@kekekeks
Copy link
Member Author

@KieranDevvs
We are planning to get WASM support in preview this year. It seems to be 0.10.x compatible (in fact, the demo is running 0.10.10 from nuget), so we don't need to wait for the next Avalonia release.

@grokys grokys unpinned this issue Apr 21, 2022
@romanholidaypancakes
Copy link

@KieranDevvs We are planning to get WASM support in preview this year. It seems to be 0.10.x compatible (in fact, the demo is running 0.10.10 from nuget), so we don't need to wait for the next Avalonia release.

hi, is the wasm version stable now?

@kekekeks
Copy link
Member Author

kekekeks commented Aug 2, 2022

More or less, yes. You might encounter some problems with shader compilation due to the old Skia version shipped by SkiaSharp, but that doesn't affect most apps

@serefarikan
Copy link

serefarikan commented Jan 28, 2023

Hi @kekekeks I found this page by chance, trying to understand where things got to with wasm. Your comment in response to @inaryart sounds positive. Current documentation says

It is currently very early days and not ready for production

Would you say the documentation is too behind reality now? What would you call its current state?
I'm trying to understand if this is a deployment option that is first class, as other platforms are, or if it is something that is still in incubation phase ? Is there a roadmap or issue I should follow for wasm?
Sorry for all the questions, really excited about the potential of this particular option.

@timunie
Copy link
Contributor

timunie commented Jan 28, 2023

If you want to try wasm, use the preview packages. Or even better nightly builds. WASM was improved a lot, but not in current stable release.

Stay tuned for 11.0 release 🙂

@serefarikan
Copy link

Thanks @timunie , sounds like this is going in the direction I was hoping it would! Do you have any pointers for someone who's trying to wrap their head around how a wasm deployment would work? A sample app, or documentation? I'm especially curious about how jsintrop (briefly mentioned in the documentation I linked above) and calls to rest api endpoints would work.

@timunie
Copy link
Contributor

timunie commented Jan 28, 2023

Sorry, I only know some basics about WASM. I know that @wieslawsoltes has several apps online. Maybe you can check out his GitHub repos.

@KieranDevvs
Copy link
Contributor

Thanks @timunie , sounds like this is going in the direction I was hoping it would! Do you have any pointers for someone who's trying to wrap their head around how a wasm deployment would work? A sample app, or documentation? I'm especially curious about how jsintrop (briefly mentioned in the documentation I linked above) and calls to rest api endpoints would work.

Check out MAUI Blazor in the meantime. That might help you understand certain areas of .NET under WASM until v11 is stable.

@npolyak
Copy link

npolyak commented Jan 29, 2023

People (including myself) are really looking forward to version 11!

@Stannieman
Copy link

Is there a rough timeline for when version 11 will be finalized? Not asking because I am impatient but because of Caliburn-Micro/Caliburn.Micro#556 (comment)

We'd like to know if we should immediately go for 11 or stick with 10 for the time being.

@timunie
Copy link
Contributor

timunie commented Feb 12, 2023

My last information is, that the next preview release may be already a RC-version. So I think v11 hopefully drops soon. But there is no guarantee as always in Open Source software. If you feel confident to use it already in production is up to you. ATM I've two branches of my App, so I can already prepare for v11, but still 0.10 is in the released version used.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests