First off, thank you for taking the time to contribute! It is people like you who make the Julia control systems ecosystem great.
All types of contributions are welcome: from reporting bugs and improving documentation to submitting performance enhancements and new MPC formulations.
Before creating a bug report, please check the Issues tab to see if the problem has already been reported.
When filing an issue, please include:
- Julia version and Package version.
- A Minimal Working Example (MWE): A small, self-contained script that reproduces the error.
- The full error trace (if applicable).
If you have an idea for a new feature (e.g., a new solver interface or support for time-varying systems):
- Open an issue to discuss it first.
- Provide a clear description of the use case and how it benefits the package.
- Fork the repository and create your branch from
main. - Install dependencies: Run
import Pkg; Pkg.activate("."); Pkg.instantiate(). - Implement changes: Ensure your code follows the existing style (concise and type-stable).
- Add Tests: If you add a feature, add a corresponding test file in
/test. - Run Tests: Ensure everything passes by running:
import Pkg; Pkg.test("LinearMPC")
- Submit: Open a PR with a concise title and a description of your changes.
To keep the codebase maintainable, please keep the following in mind:
- Type Stability: Since MPC is often time-critical, ensure that inner loops are type-stable and avoid unnecessary allocations.
- Docstrings: Use Julia's native docstring format for all exported functions. Include arguments, return types, and a small example.
By participating in this project, you agree to maintain a respectful, inclusive, and professional environment.