The Cryptator team encourages community feedback and contributions. Thank you for your interest in making Dux Machina better! There are several ways you can get involved.
If you are looking for a good way to contribute to the project, please:
-
have a look at the available issue templates and checkout the examples of good first issues (or click here).
-
look through the issues that need help.
-
take a look at a Pull Request template to get yourself started.
If you find that the project is not working properly, please file a report using the Bug Report template. Should the template provided not suit your needs, feel free to make a custom Bug Report, but please label it accordingly.
We are happy to hear your ideas for how to further improve cryptator, ensuring it suits your needs. Check the Issues and see if others have submitted similar feedback. You can upvote existing feedback (using the thumbs up reaction/by commenting) or submit a new suggestion.
We always look at upvoted items in Issues when we decide what to work on next. We read the comments and we look forward to hearing your input.
Looking for something to work on?
Issues marked good first issue
are a good place to start.
You can also check the help wanted
tag to find other issues to help with. If you're interested in working on a fix,
leave a comment to let everyone know and to help avoid duplicated effort from others.
We highly appreciate any contributions that help us improve the end product, with a high emphasis being put on any bug fixes you can manage to create and direct improvements which address the top issues reported by Calculator users. Some general guidelines:
-
DO create one pull request per Issue, and ensure that the Issue is linked in the pull request. You can follow the Pull Request Template for this.
-
DO follow our Coding and Style guidelines, and keep code changes as small as possible.
-
DO include corresponding tests whenever possible.
-
DO check for additional occurrences of the same problem in other parts of the codebase before submitting your PR.
-
DO link the issue you are addressing in the pull request.
-
DO write a good description for your pull request. More detail is better. Describe why the change is being made and why you have chosen a particular solution. Describe any manual testing you performed to validate your change.
- DO NOT merge multiple changes into one PR unless they have the same root cause.
- DO NOT merge directly into the master branch.
Submitting a pull request for an approved Issue is not a guarantee it will be approved. The change must meet our high bar for code quality, architecture and performance.
To learn how to build the code and run tests, follow the instructions in the README.
The code in this project uses several different coding styles, depending on the age and history of the code. Please attempt to match the style of surrounding code as much as possible.
The code follows eclipse convention with the exception of spaces for tab.
To configure eclipse, open the preferences and follow the instructions.
- General -> Editors -> Text Editors: check 'insert spaces for tab'
- Java -> Formater; new style 'Eclipse [modified]'
- Indentation -> Tab policy: select 'Spaces only'
- Whitespace -> Arrays -> Array Initializer: uncheck 'After opening brace' and 'Before closing brace'
- Whitespace -> Declarations -> Constructors -> unchceck 'Before opening parenthesis'.
- New Lines: check 'At end of file'
- Java -> Code Style -> Clean Up: new style 'Eclipse [modified]'
- Check always 'use block in if/while/do statements'
- Check always 'use parentheses in expressions'
- Unecessary code : check 'Avoid double negation' and 'Remove redundant modifiers'
- Java -> Editor -> Save Action: check 'Perform the selected actions on save' and 'Format source code'
- Checkstyle: new style Sun Checks [modified]'
- SizeViolations -> LineLength : set max to 120
- Workaround for potential error message: 'Checkstyle execution failed due to an internal error. Please check error log for details'
- Remove BOTH modules "SuppressionXpathFilter" and "SuppressionFilter" from the configuration
Your change should include tests to verify new functionality wherever possible. Code should be structured so that it can be unit tested independently of the UI. Manual test cases should be used where automated testing is not feasible.
The core principle of the project, when it comes to Git workflows is that the
master
branch should always be in a healthy state which is ready for release.
Every commit on master should be deployable on push. To ensure this, pull request
must not be made directly on master. Each change should either be made in
the development branch (named a variation of development, i.e. dev
) or in a
separate branch, named as a short summary of the change.
If your change is complex, please clean up the branch history before submitting a pull request. You can use git rebase to group your changes into a small number of commits which we can review one at a time.
When completing a pull request, we will generally squash your changes into a single commit. After confirming that the change works as intended, the branch might be deleted, in order to prevent branch polluting. Please let us know if your pull request needs to be merged as separate commits.
For this project, CI is provided by GitHub Actions,
with workflows found in the .github/workflows
folder. Workflows
are run automatically on every commit made on the master branch, unless told to skip
for that particular commit.
After submitting a pull request, members of the team will review your code. We will assign the request to an appropriate reviewer (if applicable). Any member of the community may participate in the review, but at least one member of the project team will ultimately approve the request.
Often, multiple iterations or discussions will be needed to responding to feedback from reviewers. Try looking at past pull requests to see what the experience might be like.