Contribution Guidelines
=======================

If you are interested in contributing to EGTtools, please follow the following guidelines:

What can you do?
-----------------
EGTtools is aiming at making Evolutionary Game Theory (EGT) methods and models 
both reproducible and available to a wider audience. You can help to make
this possible in a variaty of ways:

- Create feature requests for implemnetementing interesting methods. Or
  signal papers whose model(s) should be added to EGTtools.
- Identify possible bugs.
- Write more documentation and examples (this is in urgent need of improvement, since I don't have
  that much time for it myself).
- Write more tests (we need to significantly improve the test coverage).
- Implement the algorithms, methods or models yourself.
- Improve the CI automation for publishing new releases and PyPi packages for more OS(s) and architechtures.

How to Contribute
-----------------

Just create a new branch, do your improvements and open a pull request! All
contributions should aim to be at least at the level of documentation and
quality of the project in its current state.

All code contribution should try to be consistent with the code style of
existing code. There is no official style guide (although the Google one is
close to what I usually do), so just try to get close and worst case I'll just
point out some minor things to change.

Signing Commits
---------------

In order to avoid copyright problems, all commits in your pull requests should
be signed by you. To sign a commit it is sufficient to call `git commit` with
the `-s`, which will add a signed off line to the commit message (this message
can also be included by hand if need be). The signoff certifies that you have
read and accepted the following:

> Developer Certificate of Origin
> Version 1.1
>
> Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
> 1 Letterman Drive
> Suite D4700
> San Francisco, CA, 94129
>
> Everyone is permitted to copy and distribute verbatim copies of this
> license document, but changing it is not allowed.
>
>
> Developer's Certificate of Origin 1.1
>
> By making a contribution to this project, I certify that:
>
> (a) The contribution was created in whole or in part by me and I
>     have the right to submit it under the open source license
>     indicated in the file; or
>
> (b) The contribution is based upon previous work that, to the best
>     of my knowledge, is covered under an appropriate open source
>     license and I have the right under that license to submit that
>     work with modifications, whether created in whole or in part
>     by me, under the same open source license (unless I am
>     permitted to submit under a different license), as indicated
>     in the file; or
>
> (c) The contribution was provided directly to me by some other
>     person who certified (a), (b) or (c) and I have not modified
>     it.
>
> (d) I understand and agree that this project and the contribution
>     are public and that a record of the contribution (including all
>     personal information I submit with it, including my sign-off) is
>     maintained indefinitely and may be redistributed consistent with
>     this project or the open source license(s) involved.

This Developer Certificate of Origin (DCO) is also used by the Linux kernel in
order to attest that you have the rights to submit the code in your patches.
The code still remains yours (or of whoever it was originally). This is pretty
much all the extra that is needed.

Attribution
-----------
These guidenlines were adapted from https://github.com/Svalorzen/AI-Toolbox/blob/master/CONTRIBUTING.md
