Skip to content

AIMAJava Contributing

Ciaran O'Reilly edited this page Mar 14, 2019 · 10 revisions

Contributing to aima-java

NOTE: First have a look at the code to get a feel for the style. Then check out the issues and find one you want to work on, or the index of algorithms to find one you would like to add. If you would then like to get involved and contribute to the project, please email me (Peter) at peter@norvig.com so I can assist and coordinate efforts. This goes for Google Summer of Code students as well as others.

General Guidelines

  • If you find any defects/bugs or feel that something new should be added to the project, please follow GitHub's guidelines for reviewing or submitting issues.
  • To submit your own work, follow GitHub's guidelines about pull requests.
    • To be considered for inclusion, implementations should follow the pseudo-code in the book as best as possible, be documented/tidy, have supporting JUnit tests, compile and pass all tests.
    • Please follow the pre-existing coding style as best as possible (for simplicity this is based on Eclipse's default formatting rules).
    • Do not re-format files that you modify as part of a submission as this makes it difficult to review the changes that were made.
    • Try to keep your pull requests self contained and focused on a single task.
    • Squash or Rebase your pull requests before submitting for review. In general, we like to be able to apply a pull request as a patch, in order to better review it. Those with multiple commits that have not been squashed or rebased usually cannot be applied as a patch.
    • Submissions to the AIMA4e branch that are simply copies from the AIMA3e branch with minor re-factoring (e.g. package name changed) will not be accepted.

AIMA3e Branch (current default)

Even though our primary focus is currently on the AIMA4e branch, we would still like to complete the set of algorithms on the AIMA3e branch. Any additions should work with JDK-8+ and will more than likely become the basis of the corresponding implementation on the AIMA4e branch.

AIMA4e Branch

This is a complete rewrite of the algorithms from the AIMA3e branch and will be updated to reflect any changes in the yet to be published 4th edition of the book.