This project and everyone participating in it is governed by the Code of Conduct. By participating, you are expected to uphold this code. Any unacceptable behavior should be reported to kroxylicious-admins@redhat.com.
Kroxylicious is a Java project built with Apache Maven.
Individual repositories include a README.md with context, build, and usage instructions.
You can contribute by:
- Reporting any issues you find using Kroxylicious
- Fixing issues by opening Pull Requests
- Reviewing Pull Requests opened by others.
- Improving documentation
- Talking about Kroxylicious
All bugs, tasks or enhancements are tracked as GitHub issues. Issues which might be a good start for new contributors are marked with the "good-start" label. Public API changes are required to follow the Design Process
We have issues labelled good first issue for new contributors and help wanted issues suitable for any contributor.
Sometimes there won't be any issues with these labels. That's ok! There is likely still something for you to work on. If you want to contribute but you don't know where to start or can't find a suitable issue, you can come chat to us.
Once you see an issue that you'd like to work on, please post a comment saying that you want to work on it. Something like "I want to work on this" is fine. If later you need to change your mind, for whatever reason, that's fine too. Just post another message so others know its free.
The project requires that all commits are signed-off, indicating that you certify the changes with the Developer Certificate of Origin (DCO). An LLM is not a legal entity and thus cannot sign off on your behalf.
This can be done using git commit -s for each commit
in your pull request. Alternatively, to signoff a bunch of commits you can use git rebase --signoff _your-branch_.
All changes which are to be committed in project source control must be reviewed by at least one Committer before being merged. If the change is being authored by someone who is a Committer, that change must be reviewed by at least one other Committer before being merged. Automated or AI-assisted reviews, such as security or style checks, can supplement review but do not replace review by a Committer. Committers make merge decisions following the project's decision-making framework. Pull requests must focus on a single goal and be sized for effective review. We may close pull requests that are unfocused or too large to review effectively, and ask the contributor to break them into smaller, more reviewable changes.
The GitHub teams @kroxylicious/code-reviewers and @kroxylicious/doc-reviewers can be used to request a PR review from contributors.
If you're willing to provide code and/or reviews to others then let one of the project managers know and we can add you to the relevant GitHub team.
Contributors can use AI tools, such as LLMs and code assistants, when preparing contributions to Kroxylicious. As with any tool, the contributor is responsible for the quality of the result and for understanding what they submit.
The PR submitter is responsible for understanding their contribution and ensuring that it meets project standards, regardless of the tools used.
- You are the contributor. When you sign off the DCO, you certify the contribution as your own. AI-generated or AI-assisted content does not change this obligation.
- Understand your contribution. You must have a clear understanding of what your contribution does and why. Do not submit code, documentation, or other content that you do not fully understand. You should be able to answer reviewers' questions yourself, without recourse to AI. In particular, do not waste the time of other contributors by being a proxy between reviewers and an AI.
- Disclose AI usage. If AI tools play a significant role in a contribution, note this in the pull request description.
Commits must include an
Assisted-bytrailer that identifies the tool and model used (for example,Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>). Most AI coding tools can be configured to add this automatically. Using AI features in the same way as an IDE, such as code completion or spelling, does not require disclosure. Disclosure is required when AI tools are used to generate substantial content such as functions, tests, or documentation. - Ensure licensing compliance. AI-generated content must not introduce material under licenses incompatible with the project's License. If your AI tool provides controls to reduce the risk of reproducing copyrighted content, make sure that they are enabled.
- Meet the same quality bar. AI-assisted contributions are reviewed to the same standard as any other contribution. Code must be correct, maintainable, tested, and consistent with project conventions. We may close pull requests where the contributor does not appear to understand the contribution they have submitted.
- Be concise. AI tools can generate content faster than reviewers can read it. Contributions, PR descriptions, and issue comments should be clear, focused, and free of unnecessary detail. Please respect the time of the other contributors in the community.
All Public API changes must begin with a design proposal. This includes:
- New APIs or API endpoints
- Changes to existing API signatures or behavior
- Removal or deprecation of APIs
Public APIs include (but are not limited to):
- Proxy configuration YAML
- Plugin configuration YAML (for 1st party plugins shipped with the project)
- Kubernetes CRDs
- Operator-managed connectivity surfaces that clients depend on (e.g. bootstrap server hostnames and ports)
- Filter API (and other plugins) interfaces
- Public APIs surfaced by 1st party plugins shipped with Kroxylicious, including but not limited to:
- record headers added or mutated by the plugin
- how a plugin mutates record keys or values (including the parcelling format used by record encryption)
Design proposals should be submitted to the design repository. After creating a design proposal, please advertise it on the kroxylicious-dev@googlegroups.com mailing list when it is ready for review and again when it is merged.
If you encounter any issues while using Kroxylicious, you can get help using: