Core PeakController class depends on plugins/peak_controller_effect
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
Typically, "plugins" are optional tools that can be compiled alongside the program, but are not necessary to the core program's behavior. That is, the main program should not actually _depend_ on any plugins.
But if you look at line 36 of [src/core/PeakController.h](https://github.com/LMMS/lmms/blob/fe797cb09fb897ade99bacdb014fc6fb97af6583/src/core/PeakController.cpp#L36), it has a dependency on `plugins/peak_controller_effect/peak_controller_effect.h`, meaning that you cannot compile LMMS without the peak_controller_effect plugin.
To me, this means that peak_controller_effect is not, in fact, a plugin and it should be moved out of the plugins directory. Either that or there should be some refactoring to move all of the PeakController into the plugins directory to get this dependency out of the core - I don't know enough about the structure to judge how feasible this is.
Either way, it's confusing to have backwards dependencies like these.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the dependency from src/core/PeakController.h and PeakController.cpp line 36 to plugins/peak_controller_effect/peak_controller_effect.h. Review the surrounding PeakController and plugin structure, then determine whether the class should move or the dependency should be refactored. Done means the core no longer has a backwards dependency on the plugin, while the project still builds correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100