## Participating in the project

Pikafish's improvement over the last decade has been a great community effort.
Nowadays most development talk takes place on [Discord](https://discord.com/invite/uSb3RXb7cY).

There are many ways to contribute to Pikafish:

- [Pikafish](#pikafish) (C++)
- [Fishtest](#fishtest) (Python)
- [nnue-pytorch](#nnue-pytorch) (C++ and Python)
- [Donating hardware](#donating-hardware)

### Pikafish

If you want to contribute to Pikafish directly, you can do so in a couple of ways:

#### Non functional changes

These are changes that don't change the search behaviour and can be directly
submitted as pull requests, for example:

- Code cleanups
- Comments
- New commands

#### Functional changes

These change the search behaviour and lead to a different search tree.  
Every functional patch (commit) has to be verified by
[Fishtest](https://test.pikafish.org), our testing framework.

Follow the steps described in our [Fishtest wiki](https://github.com/official-pikafish/PikaFishtest/wiki/Creating-my-first-test), to create your first test.

### Fishtest

New commits to pikafish can mostly be categorised in 2 categories:

### NNUE Pytorch 

NNUE Pytorch is the trainer for Pikafish's neural network. Usually changes here are
tested by training a new network and testing it against the current network via Fishtest.

### Donating hardware

Improving Pikafish requires a massive amount of testing. You can donate your hardware resources by installing the [Fishtest Worker](https://github.com/xyztnecniV/visualgpt/wiki/Running-the-worker) and view the current tests on [Fishtest](https://test.pikafish.org).

---

## Using Stockfish in your own project

### Resources

- [Advanced topics](Advanced-topics)
- [Commands](UCI-&-Commands)
- [Useful data](Useful-data)

### Terms of use

Pikafish is free and distributed under the [**GNU General Public License version 3**](https://github.com/official-pikafish/Pikafish/blob/master/Copying.txt) (GPL v3). Essentially, this means you are **free to do almost exactly what you want** with the program, including **distributing it** among your friends, **making it available for download** from your website, **selling it** (either by itself or as part of some bigger software package), or **using it as the starting point** for a software project of your own. This also means that you can distribute Pikafish [alongside your proprietary system](https://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem), but to do this validly, you must make sure that Pikafish and your program communicate at arm's length, that they are not combined in a way that would make them effectively a single program.

The only real limitation is that whenever you distribute Pikafish in some way, **you MUST always include the license and the full source code** (or a pointer to where the source code can be found) to generate the exact binary you are distributing. If you make any changes to the source code, these changes must also be made available under GPL v3.
