Currently, GUI framework integration crates (such as egui-baseview and iced-baseview) have to either wrap or re-implement a lot of baseview's types if they want to expose them in their public APIs, just to shield themselves from semver-incompatible baseview releases (even though the aforementioned APIs actually rarely change, compared to e.g. WindowHandler APIs).
This results in a lot of tedious and ultimately unnecessary code that those crates have to implement and maintain.
This is because the baseview crate currently acts as a bridge for two different sides: the GUI implementation/framework adapter side, and the plugin/plugin framework/host side.
We could create a new baseview-core (name TBD) crate that would expose the more stable utilities and APIs as traits for plugins to use directly, while leaving out the WindowHandler & co. APIs only for GUI implementations (and/or framework adapters) to use.
Ideally, plugin frameworks such as Nice-Plug could potentially even support spawning and managing any type of Window that implements baseview-core traits, making any-to-any compatibility between plugin frameworks and GUI frameworks possible.
Currently, GUI framework integration crates (such as
egui-baseviewandiced-baseview) have to either wrap or re-implement a lot of baseview's types if they want to expose them in their public APIs, just to shield themselves from semver-incompatible baseview releases (even though the aforementioned APIs actually rarely change, compared to e.g.WindowHandlerAPIs).This results in a lot of tedious and ultimately unnecessary code that those crates have to implement and maintain.
This is because the
baseviewcrate currently acts as a bridge for two different sides: the GUI implementation/framework adapter side, and the plugin/plugin framework/host side.We could create a new
baseview-core(name TBD) crate that would expose the more stable utilities and APIs as traits for plugins to use directly, while leaving out theWindowHandler& co. APIs only for GUI implementations (and/or framework adapters) to use.Ideally, plugin frameworks such as Nice-Plug could potentially even support spawning and managing any type of
Windowthat implementsbaseview-coretraits, making any-to-any compatibility between plugin frameworks and GUI frameworks possible.