Thanks for your interest in contributing to ChessML! This is a personal learning project, so contributions and suggestions are welcome as I explore chess programming concepts.
ChessML is a learning-focused hobby project with no fixed roadmap. Code quality and features evolve organically as I experiment with different ideas. Expect things to change arbitrarily as new concepts are explored!
- OCaml 5.3+
- Opam package manager
- Dune build system
# Clone the repository
git clone https://github.com/alexanderbrevig/chessml.git
cd chessml
# Install dependencies
opam install . --deps-only --with-test --with-doc
# Build the project
dune build
# Run tests
dune runtestBefore submitting changes, ensure tests pass:
# Quick tests (~11s)
just test
# Full test suite including deep search validation
just test-search
# Specific test categories
just test-core
just test-engine
just test-integrationChessML follows standard OCaml conventions:
# Format code automatically
just format
# Check formatting
just format-checkWhen reporting bugs, please include:
- FEN position (if applicable)
- Expected vs actual behavior
- Steps to reproduce
- OCaml version and OS
Feature suggestions are welcome! Keep in mind:
- This is an educational project - interesting chess programming concepts are prioritized over completeness
- Features may be implemented experimentally and changed/removed later
- No guarantees on timeline or acceptance
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and formatting
- Commit with clear messages using Conventional Commits
- Push to your fork
- Open a Pull Request
Be respectful, constructive, and patient. This is a learning environment!
Helpful resources for chess programming:
Feel free to open an issue for questions or discussion!