Describe plugin dependencies explicitly in plugin documentation
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 161
Description
When toying around trying to understand what is `bevy` and how is it organized internally, I've tried to make a simplest possible application without using `DefaultPlugin` by adding `plugins` one by one when necessary.
It turned out that there are many dependencies between plugins, or, better say, _expectations_ of particular _aspects_ such as `resources`, `components` or `systems`. These _aspects_ are usually provided by existing plugins, but _unfulfilled expectation_ manifests itself as a runtime crash. Usually message is descriptive and tells what _aspect_ is missing but it does not (and can not) tell what plugin provides it.
It would be of great help for n00bs like me if existing plugins had such _expected aspects_ and corresponding plugins documented.
Here are some example of such `expections` I've encountered so far:
* `bevy_winit::WinitPlugin` requires some _aspect_ (dont remember which one) provided by `bevy_a11y::AccessibilityPlugin` (what if one does not what to use accessibility?)
* `bevy_asset::AssetPlugin` requires `bevy_app::TaskPoolPlugin`
* `bevy_render::RenderPlugin` requires `bevy_render::texture::ImagePlugin`
* `bevy_render::RenderPlugin` requires `bevy_diagnostic::FrameCountPlugin`
* reflection is not always behind `feature flag`, for example `bevy_render::RenderPlugin`; maybe plugin should issue a warning it can not function property without reflection, but developer turns off `reflection feature flag` of the `bevy` crate
Contributor guide
Assessment
This issue has not been assessed yet.