Contributions to Exadel Query Kit for AEM (part of Exadel Toolbox) are welcomed and greatly appreciated. We want to make contributing to this project as easy and transparent as possible, whether it is:
- Reporting a bug;
- Proposing new features;
- Discussing the current state of the code;
- Submitting a fix or solutions;
- Becoming a maintainer.
We use Github to host code, to track issues and feature requests, as well as accept pull requests.
All code changes happen through Pull Requests.
Pull requests are the best way to propose changes to the codebase (please follow this guide Github Flow).
We actively welcome your pull requests:
- Fork the repo and create your branch from
develop
. - Do code changes. Whenever you create new files, add "Licenced under the Apache Licence..." header (use any of the existing files to copy the full header). Whenever you create new methods, add Javadoc / JSDoc. Alter existing Javadoc / JSDoc if you change a method's signature.
- If you've added code that should be tested, add tests. Make sure that the tests pass.
- If you've changed APIs, update the README and/or documentation under
docs
if needed. - Make sure your code lints.
- Issue the pull request.
Every pull requests is dedicated to a single Github issue. Every issue has a tracking number like EQK-333
.
A branch for the pull request must be named in the format bugfix/EQK-333
or feature/EQK-333
where the part before the slash is the kind of PR (reflecting a bug or a feature request respectively), and the part after the slash in the tracking number.
A pull request's title must start with the tracking number in square brackets; then comes a brief but detailed description of what is done in this PR like [EQK-333] Fixed NPE when saving file to a removable media
.
A more verbose description in the "description" section is optional but welcomed. You can assign labels from the provided set, such as bug
, enhancement
, documentation
, etc.
Every pull request consists of one or more commits. Commit messages must be presented in the same format as the pull request title. E.g., the following 3 commits: [EQK-333] Implemented the NPE fix... [EQK-333] Altered Javadoc for the affected method... [EQK-333] Added a unit test for the NPE fix
.
Any contributions you make are understood to be under the Apache License, Version 2.0 that covers the whole project. Feel free to contact the maintainers if that's a concern.
After creating your first pull request, you will be asked to sign our Contributor License Agreement by commenting your PR with a special message.
We use Github's issues to track public bugs. Report a bug by opening a new issue.
This is an template of bug report.
- We stick to the Google Java Style Guide in essential parts.
- We use 4 spaces for indentation rather than tabs.
- Every import is a separate line, no wildcard imports.
- Avoid static imports (like constants, etc.) unless absolutely must.
- Give meaningful names to classes, methods and variables.
- Split lengthy methods in smaller parts.
- Observe length of lines, and split lengthy lines where appropriate (between method arguments, before ternary operators, etc.).
- Avoid introducing multi-line lambdas.
- Observe succession of methods: public, then package-private, then private; public static, then package-private static, etc. You may place a private method immediately after the preceding public if called from this public as a secondary routine.
- Add
try-catch
blocks to reduce the risk of unhandled process termination. Never ignore caught exceptions. - When unsure, follow the style of the existing code files.
- Use the predefined eslint rules to verify code with an IDE such as IntelliJ.
- The rules are automatically applied via a Github workflow when you create or modify a pull request.
- When unsure, follow the style of the existing code files.
- Use proper indentation.
- Split long lines into smaller ones by attributes.
- When unsure, follow the style of the existing code files.
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
We expect contributors, reviewers and participants to express their opinions in a friendly, polite and clear manner, raise and address issues in most precise, explaining and accurate sentences.
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.