Libresonic development is a community project, and contributions are welcomed. Here are a few guidelines you should follow before submitting:
- License Acceptance All contributions must be licensed as GNU GPLv3 to be accepted. Use
git commit --signoff
to acknowledge this. - No Breakage New features or changes to existing ones must not degrade the user experience. This means do not introduce bugs, remove functionality, or make large changes to existing themes/UI without prior discussion in an Issue.
- Coding standards Language best-practices should be followed, comment generously, and avoid "clever" algorithms. Refactoring existing messes is great, but watch out for breakage.
- Be bold! Without contributions, this project will vanish. If you just want to help out, try submiting a patch for an open Issue.
- Stay relevant Issues or commentary that is off-topic or tangential to Libresonic development is subject to moderation. Questions should be focused on improving documentation to solve a problem. Visit Reddit or IRC for community discussion.