## Introduction

Thank you for considering contributing to Neataptic! Neataptic is currently only
maintained by a single developer, so every little bit counts! There are many ways
you can contribute: updating the documentation, reporting a bug or creating a new
feature. We also stimulate the creation of projects using Neataptic; this allows us
to show how Neataptic can be used.

## Setting up the dev environment
Setting up the developer environment is fairly easy:
1. Fork the repository (button on the topright corner of this page)
2. Clone the repository to your computer (clone from chrome [here](https://github.com/wagenaartje/neataptic))
3. `cd` into the project directory, and run `npm install`

And you are good to go!

**PS**: we use the [Javascript Semistandard Style](https://github.com/Flet/semistandard)!

## Bugs
Nobody likes them, and we understand that you want to get rid of them as soon as
possible, but to assure that the debugging proces runs smoothly we need to have
all the information possible about the bug.

#### Reporting a bug
We need a couple of things to process a bug report efficiently:
1. The version (1.x.x)
2. The error log (this allows us to trace the source of the bug)
3. What you were trying to do (e.g. connecting a node to a node)
4. (_if possible_) a piece of code that allows us to reproduce the bug
5. (_optionally_) Operating system and browser

#### Fixing a bug
When you encounter a bug and want to fix it, _create an issue first_. Then clearly
say that you will create a pull request yourself that fixes the bug. This makes sure
people are aware that the bug exists.

What you have to provide in your pull request:
1. A link to the issue that describes the bug
2. (_if not in the issue yet_), a brief explanation of what was going wrong
3. How you fixed it
4. What the possible side-effects are of the code change

And the pull request will be merged in no-time!

## Features
Neataptic gets extended all the time! However we prefer qualitative over quantitative
features - anyone can add a new `Activation` method for example, but you have to ask
yourself if it really improves the project. But _always_ feel free to create a pull
request with new features, as long as you incorporate the following:
1. What feature you are adding (/improving)
2. A usage example of the new feature (in code!)
3. Why you think it adds something to Neataptic
4. Possible side-effects of the new feature

Afterwards, there will be quick response - but the pull request may take some time to
be accepted, so we can give other contributors time to comment as well.

PS: If you want to make big improvements/features, please create an issue or send
an e-mail to wagenaartje@protonmail.com
