First off, thank you for considering contributing to Levtus! It's people like you who make the open-source community such an amazing place to learn, inspire, and create.
As we aim for publication on Maven Central, we maintain high standards for code quality, security, and documentation.
By participating in this project, you agree to abide by our Code of Conduct (link to be added or follow standard Contributor Covenant).
- Check the existing issues to see if the bug has already been reported.
- If not, open a new issue. Use a clear title and provide as much context as possible (steps to reproduce, expected behavior, actual behavior, JVM version).
- Open an issue to discuss the enhancement before starting work.
- Explain the use case and how it benefits the project.
- Fork the repository and create your branch from
main. - If you've added code that should be tested, add tests!
- If you've changed APIs, update the documentation.
- Ensure the test suite passes.
- Make sure your code follows the style guidelines.
- Sign your commits with GPG.
Levtus targets Java 25. Ensure your development environment is set up accordingly.
We follow the Google Java Style Guide.
- Use 2 spaces for indentation.
- Organize imports (no wildcard imports).
- Use meaningful variable and method names.
- All public classes and methods must have descriptive JavaDoc.
- Explain why something is done, not just what is being done if the logic is complex.
- We use JUnit 5.
- Every new feature or bug fix should be accompanied by relevant unit or integration tests.
- Place tests in
src/test/java.
We follow the Conventional Commits specification:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the code (white-space, formatting, etc)refactor: A code change that neither fixes a bug nor adds a featuretest: Adding missing tests or correcting existing testschore: Changes to the build process or auxiliary tools and libraries
Example: feat: add support for multipart/form-data
To ensure the integrity and authenticity of contributions, all commits must be GPG-signed.
We use GitHub Flow:
mainis the production-ready branch.- All work happens in feature branches (
feature/my-cool-feature) or bugfix branches (bugfix/fix-memory-leak). - Pull Requests are merged into
mainafter review and passing CI checks.
To ensure we can publish to Maven Central, please ensure:
pom.xmlinformation is kept up to date.- No external dependencies are added without prior discussion (Levtus aims to be zero-dependency).
- Javadoc and Source JARs are generated correctly (handled by build plugins).
Thank you for your contribution!