# Contributing guidelines

We welcome any kind of contribution to the IMAS Data Dictionary, 
from a simple comment or a question, to a request for a change in 
the schemas, or even a fully fledged pull request on the code. 
Please read and follow the [Code of Conduct](CODE_OF_CONDUCT.md).

## You have a question
1. use the [discussion search](https://github.com/iterorganization/IMAS-Data-Dictionary/discussions/categories/q-a) 
to check if someone already asked a similar question;
2. if not, create a **new discussion in the Q&A section**.

## You have found a bug in the code, or an error in the schemas
1. use the [issue search](https://github.com/iterorganization/IMAS-Data-Dictionary/issues) 
to check if someone already created a similar issue;
2. if not, make a **new issue** to describe the problem and all the 
relevant information to allow reproducing the error or identifying 
its root cause (version of the Data Dictionary, OS and relevant 
dependencies, permalink to the wrongly defined quantify);
3. apply relevant labels to the issue.

## You want to make some change to the code
1. use the [issue search](https://github.com/iterorganization/IMAS-Data-Dictionary/issues) 
to check if someone already proposed a similar idea/change;
2. if not, create a **new issue** to describe what you intend to work on;
3. wait until some kind of consensus is reached about your idea being relevant;
4. fork the repository to your own Github profile and create your own feature 
branch off of the latest develop commit. Make sure to regularly sync your branch 
with the latest commits from `develop` (find instructions 
[here](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork);
5. when your development is ready, create a pull request (find instructions 
[here](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)).

## You want to propose some change to the schemas 
1. use the [discussion search](https://github.com/iterorganization/IMAS-Data-Dictionary/discussions/categories/proposed-changes) 
and the [issue search](https://github.com/iterorganization/IMAS-Data-Dictionary/issues) 
to check if someone already proposed a similar idea/change;
2. if not, create a **new discussion thread**, describing your idea 
as well as the context in which the new feature will be used; 
3. once the proposed change has sufficiently matured and is selected 
for implementation, a corresponding issue will be created; 
4. the change will be implemented via a fork-based workflow (see step 4
and 5 from the previous section).



While we will try to answer questions quickly and to address issues in a timely 
manner, it can sometimes take longer than expected. A friendly ping in the 
discussion or the issue thread can help draw attention to it if you find that it is 
stalled.
