First off, thank you for considering contributing to musegpt! Your contributions help improve the project and are greatly appreciated.
This document outlines the guidelines for contributing to the musegpt project. Following these guidelines ensures a smooth collaboration between all contributors.
- How Can I Contribute?
- Getting Started
- Coding Guidelines
- Pull Request Process
- Code of Conduct
- License
There are several ways you can contribute to musegpt:
If you encounter any issues or bugs, please report them using the issue tracker.
When reporting a bug, please include:
- A clear and descriptive title.
- Steps to reproduce the issue.
- Expected and actual results.
- Any relevant logs or screenshots.
We welcome new ideas to enhance musegpt. Feel free to submit feature requests via the issue tracker.
When suggesting a feature, please include:
- A clear explanation of the feature and its benefits.
- Any additional context or references.
You can contribute by fixing bugs, implementing new features, or improving existing code.
Help us keep the documentation up-to-date and comprehensive. You can:
- Fix typos or grammatical errors.
- Add missing information.
- Enhance explanations for clarity.
To set up your development environment:
-
Clone the repository:
git clone --recurse-submodules -j2 https://github.com/greynewell/musegpt.git cd musegpt
-
Install dependencies:
Ensure you have the following installed:
You can build the project using the provided scripts:
-
Debug build:
./scripts/build/debug.sh
-
Release build:
./scripts/build/release.sh
(Currently, automated tests are not implemented. Contributions to add testing capabilities are welcome!)
Please adhere to the following coding standards:
- Follow the JUCE Coding Standards.
- Use consistent indentation and formatting.
- Write clear and maintainable code with comments where necessary.
- Use meaningful variable and function names.
- Use the present tense (e.g., "Add feature" not "Added feature").
- Be concise but descriptive.
- Reference relevant issues or pull requests when applicable (e.g., "Fix memory leak in audio processing module. Closes #42").
- Main branch:
main
(stable codebase) - Feature branches: Create a new branch for each feature or bug fix (e.g.,
feature/midi-integration
). - Keep branches up-to-date by regularly merging or rebasing with
main
.
- Ensure your code compiles and runs without errors.
- Test your changes thoroughly.
- Update the documentation if your changes affect it.
- Check for code style compliance.
-
Fork the repository and create your feature branch from
main
:git checkout -b feature/your-feature-name
-
Commit your changes with clear messages.
-
Push to your forked repository:
git push origin feature/your-feature-name
-
Open a pull request to the
main
branch of the original repository. -
Provide a detailed description of your changes and the problem they solve.
- Your pull request will be reviewed by project maintainers.
- Be open to feedback and willing to make necessary changes.
- Engage in discussions to clarify any questions.
By participating in this project, you agree to abide by the Contributor Covenant Code of Conduct. Please read it to understand the expectations for all contributors.
By contributing to musegpt, you agree that your contributions will be licensed under the AGPL v3 License.
Thank you for helping to make musegpt better! Your contributions are invaluable to the growth and success of the project.