# How to Contribute #

Patches, feature requests and other contributions are essential to keep brat-frontend-editor
up-to-date and useful to the community at large. The brat-frontend-editor maintainers deeply
appreciate your contributions and we want to try to make it easy for you to
contribute to the project. This document acts as a guideline for new
contributors.

## Getting Started ##

* If you don't have one, get a [GitHub Account][github_reg]
* If you have a feature request:
    * Search to check if an existing request exists on the
        [issue tracker][brat_issues], if not, file a new issue, otherwise add
        to the existing one
    * Try to motivate why you think the feature is valuable to your personal
        or group use and also to the community at large
    * Try to clearly describe the feature to an extent that it will be
        possible to implement it solely from your description
    * If possible, provide suggestions on how to implement the feature and
        mention if/how you think you can contribute towards it
* If you have found a bug:
    * Search to check if an existing report of the bug exists on the
        [issue tracker][brat_issues], if not, file a new issue, otherwise add
        to the existing one
    * Describe the bug clearly, include steps necessary to reproduce the bug
    * Mention which version or revision you observed the bug in
    * Try to mention relevant aspects of the system used to run brat-frontend-editor,
        web server, web browser, operating system, Python version, etc.
    * If your issue is graphical in nature, please link to a screenshot of it
* If you want to hack on brat-frontend-editor:
    * Fork the [repository][brat_repo]
    * See "Making Changes" and "Submitting Changes"

[github_reg]: https://github.com/signup/free
[brat_issues]: https://github.com/crim-ca/brat-frontend-editor/issues
[brat_repo]: https://github.com/crim-ca/brat-frontend-editor

## Making Changes ##

* Create a topic branch for your fork to which you commit your work
    * Please avoid committing changes to your master branch as it risks mixing
        code for unrelated fixes which makes merging the changes back to the
        main brat-frontend-editor repository more difficult
* Make commits for small logical units of code and resources
* Test code is always encouraged

## Submitting Changes ##

* When submitting changes you agree that you and your potential employeer
    agrees to make the contribution available under the same licensing
    restrictions as brat-frontend-editor itself
* Push your changes to a topic branch in your fork
* Submit a pull request to the main brat-frontend-editor repository
* Wait for the brat-frontend-editor maintainers to respond to your pull request

# Developer Resources #

* [GitHub Documentation](http://help.github.com/)
* [GitHub Pull Request Documentation](http://help.github.com/send-pull-requests/)