amwx/FluentAvalonia

Status of FluentAvalonia October 2023

Closed this issue · 11 comments

amwx commented

Hello community,
As you've probably noticed not much activity has occurred on this repo over the last month. I recently started a new job as a high school teacher and that has consumed almost all of my time as I settle into that position. I do not intend to abandon this project, however, for the time being, FA will be in a hiatus state, where no development or fixes will be done. Feel free to continue to leave bug reports or feature requests (and if possible help triage other's issues), however, at this time, I'd ask no PRs be submitted until further notice. I look forward to being able to put some time back into this project, and from what I've read, WinUI's source is about to open up (at least a bit) which may add to what FluentAvalonia can offer in the future. Thankfully, Avalonia 11 released this past summer and we're not still in that mess, so FA should be in a relatively stable state.

I know most of you will be understanding, knowing that this is just a hobby project (in fact programming is just a hobby of mine, not my career). Last I checked this repo has well over 600 stars, and I'd like to thank all of you, especially those that contribute (either with issues/bugs or PRs). Don't fret if you don't see much activity, I'm not done here yet - just on a break.

Hey @amwx I'd like to really thank you for the great support you gave us so far and all the things you did so far. Really nice project ❤️

While I really hope that someday you will find some free minutes to work on your hobby again, I whish you a good start and all the best for your new job 🍀:pray:

Thank you very much for this project! It is really a nice library which has nice parts that base Avalonia controls lib is missing. Good luck with your new job!

Thank you for such a great project. It's really done wonders for the look of Ryujinx. Do you mind me porting a few of your controls over to Avalonia itself, or Labs? Thanks.

@amwx Awesome work on this project! You really accomplished a lot and its quite valuable work for everyone that has used WinUI in the past. I know open source development is largely a thankless hobby but let me say on behalf of everyone who has used this project it is greatly appreciated! The significant amount of time you spent here is also not taken lightly.

I hope the new teaching role goes great and perhaps even is a bit of fun! I know some of us would enjoy being able to stand up a bit more during the day at least :)

WinUI's source is about to open up (at least a bit) which may add to what FluentAvalonia can offer in the future

I hear the same. Uno Platform already has a version using it.

may add to what FluentAvalonia can offer in the future.

Happy to help port controls over myself where needed.


Finally, if you ever intend to stay away for a long time I do think it will be useful to keep this project going. Long-term maybe some features may need to be cut to keep the scope down; however, the themes and everything are quite valuable. Other projects like this have moved to https://github.com/AvaloniaCommunity (Material.Avalonia as an example). If the project was moved there others (such as myself) could help review and manage things a bit. Just something to consider if you ever want to divest yourself more from this project.

We also might pull in Fluent v2 upstream someday as well.

Again, thanks for all you do! Best of luck in your teaching role!

@emmauss

Do you mind me porting a few of your controls over to Avalonia itself, or Labs? Thanks.

Depending on the controls I'll help argue for merging them upstream :) I really wish FontIcon at least was upstreamed.

How should this project proceed? Ask AvaloniaCommunity to adopt it? It's way too valuable to die.

I am willing to help maintain an Avalonia or Avalonia Community port of this like Material.Avalonia does. I would however need to narrow the scope to just Fluent v2 themes and no new controls. If we could pull out the common control themes somewhere else; Fluent Avalonia could re-use them here and add new controls. So we could have everything working together like so:

_ Avalonia
|_ Avalonia.Themes.Fluent2
|_ FluentAvalonia (new controls and their themes)

amwx commented

I'm hoping to push a package update this weekend. I've made a few fixes here and there over the last couple months.

I'm mostly focusing on minor/small fixes and tweaks as part of keeping this project alive. Most stuff that exists right now is pretty stable.

Things I'm not focusing on:

  • New controls: New controls may be added in the future, but this is a heavy time investment.
  • .net 8 and AOT support: I am on, and will continue to be on .net 7 for the time being. .net 8 will be a limitation right now if you require AOT support. .net7 and below should work fine.
  • Feature requests: particularly major things that require heavy time investments. (clarification: you can still open feature requests, just don't have expectations of it being implemented in the short term)

Also, please note, I am considering moving FA to be .net6+ only (dropping netstandard). I've gotten used to many .net7 things that are quite nice (like double.Max instead of Math.Max) and it annoys me when I drop in to FA and suddenly all these nice improvements I'm now used to from .net6 onward are gone. Yes, I know Avalonia is netstandard/net6 and "works anywhere", but they have enterprise customers and people/businesses coming from WPF with decade old apps. I'm a simple OSS project where I would venture to say 90+% are using the latest version of .net anyway. This is also not an immediate thing, this is a down the road maybe this summer type thing.

If we could pull out the common control themes somewhere else; Fluent Avalonia could re-use them here and add new controls.

Also note, that if Avalonia were to pick up the Fluent v2 styling, FA would still continue to use its own version. Most of the templates have FA specific controls (IconElements) in them and I don't want to change that.

.net 8 and AOT support: I am on, and will continue to be on .net 7. Sorry, and this is going to sound mean, but I just don't care about either of these things (particularly AOT).

I understand you have to limit your time only on what is relevant to you. We'll have to think about what works best at this point for everyone.

Feature requests: particularly major things that require heavy time investments.

Again, totally understandable.

If we could pull out the common control themes somewhere else; Fluent Avalonia could re-use them here and add new controls.

Also note, that if Avalonia were to pick up the Fluent v2 styling, FA would still continue to use its own version. Most of the templates have FA specific controls (IconElements) in them and I don't want to change that.

Well, all the resources could be shared and several of the control themes. You can have just a modification of the upstream control theme with everything but the icons kept in sync (I agree FA icons based on UWP with the added icon sources are much better). Although, we could just pull in the icon stuff in a new base repo as well. I would make an exception to the "no new controls" idea for those since they are heavily tied to the styles.

It seems we have a few options here:

  1. Wait until/if you have more time to devote to FluentAvalonia again. This is still problematic for those that need AOT (mobile, etc.)
  2. Allow other maintainers of this repo to take some of the load off of yourself. I would guess you are not open to this idea.
  3. Fork FluentAvalonia with the hope of merging changes again sometime after new things are proven and you have more time. As it stands every project that needs AOT is going to have to do this individually right now.
  4. Create a new Avalonia.Themes.Fluent2 project some where else using the styles from this repo as a base (will only be done with your permission, regardless of the MIT license. It's just good etiquette and you've done so much great work here I don't want to step on your toes).
  5. Create a brand new Avalonia.Themes.Fluent2 implementation based on upstream WinUI (no code sharing from this repo but probably using some ideas).

The lack of AOT support alone in this repo is going to require choosing an option 2-5 above. It's likely we will hit other roadblocks with bugs and things over time.

@amwx Do you have a suggestion on what the community should do at this point? I'll delay creating another Fluent2 implementation as long as possible but at some point it's going to be necessary. I'll also talk more with upstream Avalonia and see how open they are to it (some resistance there as well).

amwx commented

@robloo Hmm.. I completely forgot mobile/wasm require AOT.
My issue with AOT is this: what I've seen of AOT, it just feels incomplete. The open PR right now I have for .net8 just adds a empty dummy class for the JsonSerializer or something like that. To me, that's a problem with .net itself and needs to be fixed there, and not require my library to have empty classes that serve no other purpose. It's a cool technology - I just think it needs more time before its ~everywhere~. Anyway, I digress.

However, the mobile/wasm thing is important. The good news is at least FA will still work with .net7 and lower. As I said, I haven't moved into .net 8 yet so that's just going to have to be a limitation for the time being. If an issue in net7 or lower appears, we can address that as needed.

Well, all the resources could be shared and several of the control themes. You can have just a modification of the upstream control theme with everything but the icons kept in sync (I agree FA icons based on UWP with the added icon sources are much better). Although, we could just pull in the icon stuff in a new base repo as well. I would make an exception to the "no new controls" idea for those since they are heavily tied to the styles.

I also don't want to bloat the package size to pull in a bunch of control templates just to completely redefine them. The themes itself are stable for all the core controls and should be for mine too. Moving the resources would also require a change to FATheme, as it manages some of the resources outside of Xaml (font, accent colors, and on Win 11 pulling in the correct high contrast colors). Unless WinUI starts Fluent v3, FA is good to go here. The only big thing I already have my sights on, though, is once your BackgroundSizing PR gets merged upstream, I'll need to reverse all my hacks I have now to go back to normal and use the built-in BackgroundSizing.

2. Allow other maintainers of this repo to take some of the load off of yourself. I would guess you are not open to this idea.

I wouldn't be opposed to this. My only real requirements would be to respect my contribution guidelines as a reviewer (which do differ slightly from some modern conventions and Avalonia) - same as if a PR was being submitted - and I'd want the final sign-off on PRs getting merged, at least for bigger things (a typo or other minor fix would be fine). However, the stay on new controls would still remain.

Of course, anyone is welcome to help triage issues or review PRs (you don't need maintainer status for that).

The good news is that I get summers off. So once we get to summer, we can have some fun again :)

It's a cool technology - I just think it needs more time before its everywhere. Anyway, I digress.

Yes, for sure. There is a reason they are only slowly enabling more of it for each .NET release. .NET 7 was CLI-only. .NET 8 is ASP.NET Core apps only, etc. Avalonia just works with it because of the effort back before it became nativeAOT. I suspect there is a way to make it work with JSON code generators or definition files specifying the type needs to be kept. For now though, I wouldn't let perfect be the enemy of good.

I also don't want to bloat the package size to pull in a bunch of control templates just to completely redefine them.

Well, yes, my point is we shouldn't have to re-define themes. If that idea ever came to fruition everything needed to style the in-box Avalonia controls would be pulled out. Then FluentAvalonia would focus only on new controls plus their styles. The two themes could work side-by-side or you would just copy/paste with a script from upstream. Anyway, more below.

The good news is that I get summers off. So once we get to summer, we can have some fun again :)

Ok, I'll hold off any Fluent v2 theming repo until we see how things look this summer. Maybe we all have clear direction on AOT and everything is stabilized. As long as you still accept bug fixes we should be ok. I also suspect Microsoft will make UI changes later this year anyway. Not sure it will be Fluent v3 though.