Skip to content
This repository has been archived by the owner on Jan 13, 2024. It is now read-only.

Latest commit

 

History

History
15 lines (11 loc) · 2.84 KB

CONTRIBUTING.md

File metadata and controls

15 lines (11 loc) · 2.84 KB

Contributing guidelines

Before contributing, please read the following:

  • If you have a bug or a feature request, first search the issues tab to make sure somebody hasn't already opened an issue describing your bug or feature request. If it's not there, then open up an issue and fill out the template as appropriate to your issue. Please do not open an issue simply to ask a question; instead, go to the Discussions tab.
  • If your feature request is for a new game, we generally need a clear description of how the game is played from a third party. (For card and domino games, a good source that I recommend is John McLeod's Card Game Rules. For board games, Masters Traditional Games is usually good, as is http://ancientchess.com/ for versions of chess.) This is to ensure that the game is sufficiently well-known to warrant inclusion in the game. As an open-source project, we cannot accept proprietary games such as Monopoly, Scrabble, Uno, etc. Further, solitaire games will not be accepted in this project; please suggest them at my FreeSolitaire project instead.

Style conventions

In general, code should closely follow Oracle's style guide for both Java and JavaDoc. They were written to ensure consistency, legibility, and maintainability. Deviating from the letter of Oracle's guides is fine, but the general principles behind them apply to this project.

We slightly differ from Oracle's indentation convention in that we follow the "tabs for indentation, spaces for alignment" principle in this project. The tab character counts once toward the 80-character limit per line just like everything else. For continuation indents, use two hard tabs.

Testing

Any class that overrides equals() and hashCode() (even implicitly), as well as all records, must have a test case where the overridden equals() and hashCode() are tested with EqualsVerifier. If and only if equals() and hashCode() are inherited directly from Object, then you do not need to use EqualsVerifier. See Java equals() and hashCode() Contracts by Baeldung to learn more about them and why they're important, and see Error messages explained by the official EqualsVerifier page if you need help understanding why a case being tested with the EqualsVerifier class is failing.

Versioning scheme

We use Semantic Versioning 2.0.0 when assigning release numbers in this project.