# Contributing to openclatura

Thank you for your interest in contributing to **openclatura**.

openclatura aims to be a practical implementation of the **IUPAC Blue Book 2013** recommendations for organic nomenclature. This is the main scope of the project and the area we currently prioritize.

We especially welcome:

* bug reports
* feature requests
* tests
* code contributions

## Reporting unsupported or incorrect names

Please open a GitHub issue if openclatura:

* generates an incorrect name for a family of compounds
* does not yet support a nomenclature feature.

A useful issue includes:

* input structures, preferably as SMILES
* names generated by openclatura, or the error message
* expected names
* the suspected reason for the failure, if known
* a reference or output from another program, such as OPSIN and a few related examples from the same family.

For example, if one polycyclic structure fails, it is helpful to include a few similar polycyclic structures. This makes it easier to identify and implement the general missing rule instead of fixing only one molecule.

## Feature requests

Feature requests should also be submitted as GitHub issues.

The current priority is nomenclature covered by the Blue Book 2013.

## Contributing code

Please open pull requests against the **`tests`** branch.

Pull requests to this branch run the automated test and regression workflows. These checks help ensure that a change does not reduce the general naming performance or break previously supported cases.

For code contributions, please:

* add tests for new behavior or bug fixes;
* include several related examples when implementing a general rule;
* mention the relevant Blue Book rule or other reference when available; and
* make sure the existing tests pass.

We prioritize work that can be validated through **OPSIN** where possible. OPSIN validation is helpful for automated testing, but it is not the only measure of correctness, and valid cases that OPSIN does not support may still be considered.

## Questions and discussions

If you are unsure whether an example is a bug, a missing feature, or outside the current scope, please open an issue and describe what you found. 
::: 
