import { Meta } from '@storybook/blocks';
import { Mermaid } from 'mdx-mermaid/Mermaid';

<Meta title="Contributing" />

# Be part of something bigger!

**Mozaic-Chart** is made possible by an incredible community that finds issues and creates pull requests.<br/>
It is our job to enable you to create amazing applications.

Most of the time, you find something that can be made better. You could find a bug, or you have an idea for additional functionality.<br/>
That's great! It's as easy as cloning the [mozaic-chart repository](https://github.com/adeo/mozaic-chart) to get started working in the development environment.

Hopefully this document makes the process for contributing clear and answers some questions that you may have.<br/>
If you have any questions, please reach out to us on our [slack channel](https://adeo-tech-community.slack.com/archives/CN4K3A99R).

## Contribution model

The contribution process can be summarized as follows:

<Mermaid
  chart={`flowchart TD;
  A((I have a need <br/>fix or new feature));
  A --> B{An issue already exists?};
  B --> |YES| I;
  I([The issue corresponds to my needs <br/>or I complete it]);
  I --> D;
  B --> |NO| C;
  C([I create an issue <br/>]);
  C --> D;
  D{I can contribute?};
  D --> |YES| E;
  D --> |NO| J;
  E([I clone the repo <br/>& create a PR associated to the issue]);
  E --> F;
  F([The PR is ready <br/>and I assign it to reviewers]);
  F --> G;
  G{The proofreading is OK <br/>and the PR is validated?};
  G --> |YES| H;
  G --> |NO| K;
  H([The PR is merged and will be released soon]);
  H;
  J([In this case, I wait for the issue <br/>to be traited and delivered.]);
  K([I make the requested changes]);
  K --> F;
  click B "https://github.com/adeo/mozaic-chart/issues" _blank;
  click C "https://github.com/adeo/mozaic-chart/issues/new/choose" _blank;
`}
/>

You can now discover the details of each of these steps below.

## Reporting issues

### Where to find known issues

We are using [GitHub Issues](https://github.com/adeo/mozaic-chart/issues) for our bugs.<br/>
We keep a close eye on this and try to make it clear when we have an internal fix in progress.<br/>

**Before filing a new task, try to make sure your problem doesn't already exist.**

### Reporting new issue

The best way to get your bug fixed is to provide a reduced test case.

Once you've gathered all information, please fill out an issue [here](https://github.com/adeo/mozaic-chart/issues/new/choose).

## Proposing a change

If you intend to add a new component, or make any non-trivial changes, we recommend filing an issue.

This will lets us prepare an agreement on your proposal before you put significant effort into it.

If you’re only fixing a bug, it should be fine to submit a pull request but we still recommend to submit an issue detailing what you’re looking to fix.

## Setup Dev Environment

### Project setup

```bash
// Clone mozaic-chart repo
git clone git@github.com:adeo/mozaic-chart.git

// Go to the cloned directory
cd mozaic-chart

// Checkout the branch you are working on
git checkout <branch name>

// Install dependencies
npm install
```

## Submitting Changes/ Pull Requests

Working on your first Pull Request?<br/>
You can learn how from this video series:
[How to contribute to an open source project on Github](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github).

Mozaic's team is keeping an eye on pull requests.<br/>
We will check your pull request, either merge it, request changes or close it with explanation.
