Menu

Contribution

Asher Stern

How to join and contribute

Welcome every body who wants to contribute this project.

Below are few guidelines for successful contribution.

General guidelines

  1. Please contact the project owner and let him know about the changes you are intending to make.
  2. Go to the project's GitHub, fork the repository, make the changes and ask for a pull request.
  3. Please avoid, as much as you can, modifying existing code. Add your own new classes. Eventually you will have to make some small changes in the existing classes, such that your new classes will take effect, but make these changes as small and local as you can.

Coding guidelines

  1. Write a documentation for every class as its a main comment. Each public method should be documented as well.
  2. Constant values should not be hard coded, but added to the org.jboard.jboard.Constants class.
  3. Strings presented to the user should not be hard-coded. Instead, they should be written in the properties files, and referred to with the localized() method in org.jboard.jboard.utilities.StringUtils class.
    • The properties files are under the "resource" directory.
    • the jboard.properties file should contain the English strings.
    • If you don't know the string for some other languages, add an English string for each of their properties files, and open a ticket about it.
  4. Write small classes and small methods. If you find yourself writing large classes/methods, then it probably indicates a bad design. Try to break the methods and write classes which concentrate on more specific aspects.
  5. In this project, checked exceptions should not be used. Throw only runtime-exceptions. In case you use a method which does throw a checked exception, wrap it with try...catch, and throw a runtime exception from within the catch block. That runtime exception should contain the original exception as the "cause" (set as a parameter in the constructor of the new exception).
  6. Do not use any external library. Use only J2SE libraries (libraries in the JDK).

Issues to develop

This is a list of issues proposed for improving the project.

  1. Display list of moves.
  2. Add the option to save and load PGN files.
  3. Support also SAN notation.
    • Chess engines like SJeng use SAN notation, so they are currently not supported.
    • Currently only coordinate notation is supported.
  4. Support user input of mouse and touch screen events
    • Currently only keyboard events are supported to make moves on the board.
  5. Improve error handling.
  6. Build an installer (to install jboard on the user's computer).
    • It should be a multi-platform installer.
    • It should be designed for users who are not familiar with Java
    • It can then be added into the "Files" page of this project.

Related

Wiki: Home