# Contributing to Calyx

Calyx is an open source project and contributions are welcome with the caveat that this is very much a personal creative project by Mark Rickerby, so keep that context in mind if you’re considering drastic code changes.

Changes that fix bugs and improve test coverage will generally be merged on-the-spot. Larger changes that introduce new features should harmonise with the vision, goals and style of the project. If in doubt, just ask in advance.

Should Calyx become more popular, these guidelines are likely to become more community-oriented, and I’ll look at handing project stewardship over to the community with a more formal project charter and structure.

## General Contributions

The best way to contribute is to use the Gem. Install it on a local project and try things out. Does it work? Does it do what you expect? Is there anything missing?

It’s really helpful to contribute to discussion on open issues, reporting bugs or suggest new features. Any feedback and criticism is received with gratitude.

## Contribute Code

### Submitting Changes

Changes to the source code and documentation should be submitted as a pull request on GitHub, corresponding to the following process:

- Fork the repo and make a new branch for your changes
- Submit your branch as a pull request against the master branch

If any aspects of your changes are ambiguous or unclear, use the pull request description to explain and provide further context (including code samples as necessary).

Don’t bump the version as part of your changes (this happens separately).

### Pull Request Checklist

- Extraneous and trivial small commits should be squashed into larger descriptive commits
- Commits should include concise and clear messages using standard formatting conventions
- The test suite must be passing
- Newly introduced code branches should be covered by tests
-- Introduce new tests if existing tests don’t support your changes
- Changes to method signatures and class organisation should be annotated by doc comments

## Code of Conduct

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.

Examples of unacceptable behaviour by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.

The maintainer has the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.

Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported by opening an issue or contacting the author and maintainer.

*From the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/).*

Add basic draft of contributor guidelines
Add basic draft of contributor guidelines
