Thank you for your interest in contributing! Whether it's reporting bugs, suggesting features, improving documentation, or submitting code, your input is welcome and valued.
- Be Respectful. Adhere to the Code of Conduct.
- Discuss First. For non-trivial changes, open an issue before starting work. PRs without a prior discussion may be rejected.
- Use Discussions for Questions. The issue tracker is not for support questions. Use GitHub Discussions instead.
- Focused PRs. Each pull request should address a single issue or feature, linked to the corresponding issue (e.g.,
Fixes #123). - Security Vulnerabilities. Report them responsibly via the Security Policy. Do not open a public issue.
- Java 21+ installed.
- A container runtime compatible with Testcontainers (e.g., Podman Desktop, Docker Desktop).
- Find or create an issue. Ensure a GitHub Issue exists for the change you want to make.
- Fork and clone the repository:
git clone https://github.com/<your-username>/arconia.git cd arconia
- Create a branch off
main:git checkout -b my-feature-branch main
- Implement your changes. Follow the code style guidelines, add tests, and update documentation in
docs/if needed. - Build and test locally:
./gradlew build
- Commit using Conventional Commits format with a DCO sign-off:
git commit -s -m "feat(core): Add new feature" - Keep your branch updated via rebase (never merge):
git fetch upstream git rebase upstream/main
- Push and open a PR targeting
main. Ensure the PR title follows Conventional Commits format and fill out the PR template. - Address review feedback. Maintainers will review your PR. Push additional signed-off commits as needed.
Use GitHub Issues with the appropriate template:
- Bugs: Use the "Bug: Generic" template.
- Features: Use the "Request: Feature" template.
- Dev Services: Use the "Request: Dev Service" template.
Before submitting, search existing issues to avoid duplicates and ensure bugs are reproducible with the latest version.
- The project uses .editorconfig for formatting. Ensure your editor respects it.
- Use explicit imports (no wildcards).
- Follow existing alphabetical sorting conventions.
We follow Conventional Commits for both commit messages and PR titles.
<type>[optional scope]: <description>
- Types:
feat,fix,docs,style,refactor,test,build,ci,chore,revert,deps. - Scopes (optional, relate to project modules):
core,dev,k8s,multitenancy,otel. Omit scope if the change doesn't relate to one of these modules. - Style: Present tense, imperative mood (e.g., "Add feature", not "Added feature").
- Breaking changes: Append
!after the type/scope (e.g.,feat(core)!:) or addBREAKING CHANGE:in the footer.
Example: fix(dev): Correct handling of container startup timeout
All commits must include a Developer Certificate of Origin sign-off. Commits without it will block merging.
# Sign-off a new commit
git commit -s -m "Your commit message"
# Add sign-off to the last commit
git commit --amend -s --no-edit