Project scope
olanod opened this issue · 3 comments
I find the idea of a native wgpu based renderer amazing, however I wonder how much is planned to be implemented to be on parity with the web based alternatives. Perhaps having a compatibility table would be nice? Going beyond the PoC seems like a major effort to replicate the many things a web view does(e.g. accessibility, text input, grid model, animations/transitions, css custom props, no web components 😢, etc.)
I think a lot of this could be split out into separate discussions/issues. A lot of this will probably change as we develop the project more, but here are some initial thoughts:
- The plan for Blitz is to support whatever subset of HTML is necessary to build real applications. It will not support all attributes or elements, but some more modern subset.
- Initially I think something close to what QT supports would be a good goal, and then we can expand from there.
- For accessibility the plan is to integrate with accesskit (see #14)
- Widgets
- Because Blitz is a general purpose renderer, widgets need to normal elements not components (like TUI uses). I'm still unsure if this should be pulled out and only supported when used as a Dioxus renderer or if not what the API would look like for this for non-Dioxus renderers.
- Much of the work to get TUI widgets working can be reused with Blitz. Specifically we can reuse the text editing code in native-core to get text editing with most of the shortcuts native widgets support.
- @ nicoburns has done some really fantastic work on the Grid model in Taffy which should be integrated into Blitz in the future
- Animations/Transitions/CSS Variables/Stylesheets could be supported in the future, but are not a priority right now. I would like to see how far we can get with just inline styles.
Is blitz a renderer or a UI framework? Because things like accessibility (using accesskit) and layout (using taffy) are typically handled at the framework level and not by a renderer.
Is blitz a renderer or a UI framework? Because things like accessibility (using accesskit) and layout (using taffy) are typically handled at the framework level and not by a renderer.
The plan is for it to be a bring-your-own-state-management framework with Dioxus state management built in, but Dioxus specific parts and the non-Dioxus specific parts are not properly separated right now. Blitz should be able to roughly replace a browser for UI frameworks like Leptos, Sycamore, and Dioxus. It's not a traditional renderer, but it renderers HTML to the screen.