Skip to content

Latest commit

 

History

History
103 lines (77 loc) · 3.58 KB

CONTRIBUTING.md

File metadata and controls

103 lines (77 loc) · 3.58 KB

Contributing

Thank you for your interest in Coronate. This is a personal project run by myself (John), but I am happy to accept feedback or changes. Keep in mind that I cannot guarantee that I will have the time or capability to address everything. The direction of this project is currently driven by my own use case.

Bug reports, suggestions, and questions:

The easiest way to contribute is to open an issue. You can open an issue on GitHub here.

You can also email me here.

Area for improvement: Pairing and scoring

I based the pairing and scoring off of USCF guidelines. Relevant chapters of the USCF rulebook are downloadable in PDF form from their website here.

Tie-breaking rules

These are the tie-break rules currently implemented:

  • § 34E1. Modified Median.
  • § 34E2. Solkoff.
  • § 34E3. Cumulative.
  • § 34E4. Median system (not modified).
  • § 34E5. Result between tied players.
  • § 34E6. Most blacks.
  • § 34E7. Kashdan.
  • § 34E8. Sonneborn-Berger.
  • § 34E9. Cumulative scores of opposition.
  • § 34E10. Opposition’s performance.
  • § 34E11. Average rating of opposition.
  • § 34E12. Speed play-off game(s).
  • § 34E13. Coin flip.
  • § 34F. Round robin tiebreaks.

Pairing

Coronate uses the blossom algorithm to manage pairing. It works by taking a list of every possible matchup, assigning each a value, and letting the algorithm determine which combination of pairings produces the highest overall value.

These are the implemented rules it uses to prioritize pairings, in order of weight:

  • § 27A1. Avoid players meeting twice (highest priority).
  • § 27A2. Equal scores.
  • § 27A3. Upper half vs. lower half.
  • § 27A4. Equalizing colors.
  • § 27A5. Alternating colors.
  • § 29A. Score groups and rank.
  • § 29C1. Upper half vs. lower half.
  • § 29D. The odd player. (Not technically implemented, but the blossom algorithm should handle this automatically.)
  • § 29E3. Due Colors in succeeding rounds.
  • § 29E4. Equalization, alternation, and priority of color. (Partially implemented.)
  • § Variation 29E4a. Priority based on plus, even, and minus score groups.
    • § Variation 29E4b. Alternating priority.
    • § Variation 29E4c. Priority based on lot.
    • § Variation 29E4d. Priority based on rank.
  • § 29E5. Colors vs. ratings.
    • 29E5a. The 80-point rule.
    • 29E5b. The 200-point rule.
  • § 29E6. Color adjustment technique.

Other rulebooks

I don't use non-USCF rules. If you do use a different rulebook, or wish to use one, then feel free to let me know.

Other areas for improvement

These are ideas I've considered but I haven't had the time or energy to implement.

General

  • Saving and loading user data is fragile and subject to memory leaks. The current implementation is quick-and-dirty and "works" fine, but needs to be more robust.
  • The code probably doesn't scale well with large amounts of data.

User interface

  • Improve the pair-picker view. It should show more information about potential pairings and have a preview & confirmation for the auto-pairings.
  • Improve responsiveness across devices.

Test coverage

Tests currently only cover a few of the most fragile functions.

Low-priority stuff

  • Add round robin pairings.
  • Improve rating calculations.