# Contributing

Kalliope needs the community to improve its Core features and to create new Neurons, STTs, TTSs. Let's join us !
[Here is the Todo list](https://trello.com/b/H0TecLSi/kalliopecore) if you are looking for some ideas.

## Core

The community can contribute to the Core of Kalliope by providing some new features.

**How to contribute**

1. Fork it!
1. Checkout the dev branch `git checkout dev`
1. Create your feature branch: `git checkout -b my-new-feature`
1. Commit your changes: `git commit -am 'Add some feature'`
1. Push to the branch: `git push origin my-new-feature`
1. Submit a pull request in the **dev** branch

## Community module (Neuron, STT, TTS)

Kalliope comes with a community [installation command](kalliope_cli.md). Your can create a module in you own git repo that will be available to all Kalliope users.

See the dedicated documentation depending on the type of module you want to code.
- create a [community neuron](contributing/contribute_neuron.md)
- create a [community STT](contributing/contribute_stt.md)
- create a [community TTS](contributing/contribute_tts.md)


## Constraints

1. Respect [PEP 257](https://www.python.org/dev/peps/pep-0257/) -- Docstring conventions. For each class or method add a description with summary, input parameter, returned parameter,  type of parameter
    ```python
    def my_method(my_parameter):
        """
        Description of he method
        :param my_parameter: description of he parameter
        :type my_parameter: str
        """
    ```
    
1. Respect [PEP 8](https://www.python.org/dev/peps/pep-0008/) -- Style Guide for Python Code
We recommend the usage of an IDE like [Pycharm](https://www.jetbrains.com/pycharm/)

##### Limitations

1. The management of incoming variable from the signal order when they are __numbers or float are not efficient__.
    - Because of the differences between the STTs outputs: some are returning word some numbers (two != 2). 
    - Because of the i18n, we are not able to know if a variable should be  interpreted in english, french, spanish, etc ... ("two" != "deux" != "dos")


## Share it

We are maintening a list of all the Neurons available from the community, let us know you've developed your own by opening [an issue](../../issues) with the link of your neuron or send a pull request to update the [neuron list](neuron_list.md) directly.