Upgrading to bevy 0.15
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.
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.
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?
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.
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.