# Contributing to symbol-cli

First off, thank you for considering contributing to symbol-cli. 
It’s people like you that make symbol-cli such a great tool.

symbol-cli is an open source project and we love to receive contributions from 
our community — you! There are many ways to contribute, from writing tutorials or blog 
posts, improving the documentation, submitting bug reports and feature requests or 
writing code which can be incorporated into symbol-cli itself.

Following these guidelines helps to communicate that you respect the time of 
the developers managing and developing this open source project. In return, 
they should reciprocate that respect in addressing your issue, assessing changes, 
and helping you finalize your pull requests.

Please, **don't use the issue tracker for support questions**. 

## Bug reports

If you think you have found a bug in symbol-cli, first make sure that you 
are testing against the latest version of symbol-cli - your issue may already 
have been fixed. If not, search our issues list on GitHub in case a similar 
issue has already been opened.

It is very helpful if you can prepare a reproduction of the bug. In other words, 
provide a small test case which we can run to confirm your bug. It makes it easier to 
find the problem and to fix it.
 
Please, take in consideration the next template to report your issue:

> **Expected Behaviour**\
> Short and expressive sentence explaining what the code should do.\
> **Current Behaviour**\
> A short sentence enplaning what the code does. \
> **Steps to reproduce**\
> For faster issue detection, we would need a step by step description do reproduce the issue.


Provide as much information as you can.

Open a new issue [here][github-issues].

## Feature requests

If you find yourself wishing for a feature that doesn't exist in symbol-cli, 
you are probably not alone. There are bound to be others out there with similar 
needs. Many of the features that symbol-cli has today have been added because 
our users saw the need. Open an [issue][github-issues] on our issues list on GitHub which describes 
the feature you would like to see, why you need it, and how it should work.

## Contributing code and documentation changes

If you have a bugfix or new feature that you would like to contribute to symbol-cli, please find or open an issue 
about it first. Talk about what you would like to do. It may be that somebody is already working on it, or that there 
are particular issues that you should know about before implementing the change.

We enjoy working with contributors to get their code accepted. There are many approaches to fixing a problem and it is 
important to find the best approach before writing too much code.

### Contributing License Notice

When you contribute code, you affirm that the contribution is your original work and that you license the work to the project under the project's open source license.

Whether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project's open source license and warrant that you have the legal authority to do so.

### Fork and clone the repository

You will need to fork the main symbol-cli code or documentation repository and clone 
it to your local machine. See [github help page](https://help.github.com/articles/fork-a-repo/) for help.

Further instructions for specific projects are given below.

### Submitting your changes

Once your changes and tests are ready to submit for review:

1. Test your changes
   
    Run the test suite to make sure that nothing is broken.
    
2. Submit a pull request

    Push your local changes to your forked copy of the repository and [submit a pull request](https://help.github.com/articles/about-pull-requests/). In the pull request, choose a title which sums up the changes that you have made, and in the body provide more details about what your changes do. Also mention the number of the issue where discussion has taken place, eg "Closes #123".
    
Then sit back and wait. There will probably be discussion about the pull request and, if any changes are needed, we would love to work with you to get your pull request merged into symbol-cli.

*CONTRIBUTING.md is based on [CONTRIBUTING-template.md](https://github.com/nayafia/contributing-template/blob/master/CONTRIBUTING-template.md)* , [elasticsearch/CONTRIBUTING](https://github.com/elastic/elasticsearch/blob/master/CONTRIBUTING.md) and [spark/CONTRIBUTING](https://github.com/apache/spark/blob/master/CONTRIBUTING.md)

[pull-request]: https://help.github.com/articles/about-pull-requests/
[github-issues]: https://github.com/nemtech/symbol-cli/issues
