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

Upgrading to bevy 0.15 #31

Open
keis opened this issue Dec 12, 2024 · 4 comments
Open

Upgrading to bevy 0.15 #31

keis opened this issue Dec 12, 2024 · 4 comments

Comments

@keis
Copy link
Contributor

keis commented Dec 12, 2024

Do you have any plans to upgrade quill to use bevy 0.15? I see you have bunch of other bevy ui experiments ongoing so understandable if not.

I had a quick look and just getting a quick port done doesn't look too bad, mainly changes in stylebuilder as Style is no more and then bevy_{mod,}_picking changes.

The complexities that GhostNodes would solve I don't fully understand but should not be a blocker to get something working with 0.15.

@viridia
Copy link
Owner

viridia commented Dec 12, 2024

That's a great question. I've thought about doing this, but as you mentioned I have been focused on other things.

I have one project that uses Quill, and I plan to eventually migrate it to a different UI framework. This work would be easier if Quill could work in bevy 0.15, since it means I wouldn't have to migrate everything all at once.

Migrating Style shouldn't be all that hard, the more challenging part is migrating off of bevy_mod_picking.

@caesay
Copy link

caesay commented Dec 17, 2024

I just discovered this library. It looks awesome, and its clear a lot of work has already been invested, but I don't know how to interpret this last message from @viridia. Is this library effectively no longer maintained / future updates not planned?

@viridia
Copy link
Owner

viridia commented Dec 17, 2024

I've been in discussions with cart about the best way to move forward on reactivity.

My original motivation for creating this was to fill in the missing holes in the BSN (Bevy Scene Notation) design doc - that is, to prototype potential solutions for reactivity in Bevy that could eventually be incorporated into BSN. To this end, I ended up exploring a bunch of different approaches - in fact I started from scratch about 8 times, producing guise, quill v1, bevy_reactor v1, quill v2, bevy_reactor v2, and finally thorium_ui. Each of these different tries is substantially different in architecture:

  • Quill is a coarse-grained (like React and Dioxus) reactivity solution. It is the only framework that actually has a published crate, the others are simply github repos.
  • Bevy_reactor is a fine-grained (like Solid and Leptos) reactivity solution.
  • Thorium is a much leaner version of Bevy reactor that gets rid of explicit tracking scopes, relying on memoization rather than bevy change detection.

Quill's biggest drawback is that it requires Rust nightly.

Bevy_reactor's biggest drawback is that it's not very ECS-like, and requires you to learn an entirely different API for accessing data in the Bevy world.

Thorium provides an API which is very much like ECS systems, supporting dependency injection. However, certain performance optimizations in bevy_reactor are not possible in this simpler system, whether these optimizations are significant is yet to be determined.

My eventual goal is not to be the maintainer of my own library, but rather to have the best of these ideas incorporated into Bevy itself. On this front, there is progress, and there's been slow but steady movement towards a solution and agreement on general approach.

@keis
Copy link
Contributor Author

keis commented Dec 31, 2024

With the patches that has landed on main I've been able to move my (toy) project over to bevy 0.15 now. I'm not using the obsidian crates but those should be easy enough to get working as well.

Until bevy has BSN with a good reactivity story it would be great to keep quill going. Out of the different options I looked at I liked quill the best, maybe because it reminded me a bit of React.

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

3 participants