LMMS / LMMS/lmms

Core PeakController class depends on plugins/peak_controller_effect

Open
#2,056 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

core enhancement
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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.