# How to contribute

We would be extremely grateful for any contribution whatsoever! We are happy to receive feature requests or bug reports as well as review Pull Requests from the community. We believe that open-source is the way how we can make the best product together.

In this article you will find instructions on how to create an issue, open a PR or reach us via our Slack.\\

## GitHub flow

OpenDataDiscovery GitHub organization has over 20 repositories including ODD Platform, ODD Collectors, utilities, etc. An overview can be found [here](/developer-guides/github-organization-overview.md).

The whole process is similar across repositories, so here it's considered using the example of [ODD Platform](https://github.com/opendatadiscovery/odd-platform).

### Creating GitHub issues

Look for issues under \`Issues\` tab. If you'd like to report a bug or create a feature request, please file an issue.

<figure><img src="/files/FhNepTwUDB8aYlIAdvPF" alt=""><figcaption><p>ODD Platform issues page</p></figcaption></figure>

You'd be prompted to select an issue type, whether this is a bug report or a feature request. Please fill issue's title and description with meaningful information and submit it. Our maintainers will be glad to pick it up, label and clarify the details with you.

### Forking a repository

Find and click a `Fork` button in GitHub and proceed with additional settings such as fork name, target account, etc

<figure><img src="/files/f9YGqKdnIbn50bFxdPZv" alt=""><figcaption><p>Fork button in GitHub</p></figcaption></figure>

Clone the **forked** repository

```bash
git clone https://github.com/<username>/odd-platform.git
```

Create a new remote repository that points to the original repository to pull new changes from it

```shell
cd odd-platform/
git remote add upstream https://github.com/opendatadiscovery/odd-platform.git
git remote -v
```

Create a branch **in your fork**, where `<issue_num>` is the GitHub issue number you're addressing:

```shell
git checkout -b issue/<issue_num>
```

That's it — you are good to go to make changes. Take a look at the [Build and run](/developer-guides/build-and-run.md) page on how to set up your environment and run your code.

### Opening a Pull Request

Once your changes are ready, push the branch to your fork and open a Pull Request against the upstream repository.

```shell
git push origin issue/<issue_num>
```

GitHub will surface a "Compare & pull request" prompt for the freshly-pushed branch. Open the PR against the upstream repository's `main` branch and fill in:

* **Title** — a short imperative summary of the change. Reference the issue if applicable (e.g., `Fix offline dataset filtering — closes #123`).
* **Description** — what the change does and why, the testing you've performed (build and run locally, unit tests, manual verification), and any open questions for the reviewer.
* **Linked issue** — paste `Closes #<issue_num>` so the issue closes automatically when the PR merges.

After opening the PR, CI runs automatically (each repository wires its own checks — typically build, tests, and linters). A maintainer reviews once the checks pass; expect questions, suggestions, or change requests on the first review pass — most PRs go through one or two iterations before merge. If a PR is quiet for longer than feels reasonable, ping us in the community Slack (see [Community contact](#community-contact) below).

Once approved and CI is green, a maintainer will merge the PR. You can then delete your branch and pull the latest `main` back into your fork.

## Community contact

The fastest way to reach the ODD maintainers and the broader community is the **community Slack workspace** — both for "how do I…" operational questions and for early discussion of larger contributions you'd like sanity-checked before opening a PR.

Join at <https://go.opendatadiscovery.org/slack> and post in the channel that matches your topic. For bug reports and concrete feature requests please file a [GitHub issue](#creating-github-issues) on the relevant repository — that flow gives the maintainers a tracked artefact that survives the Slack rolling backlog. Use Slack for clarification, design discussion, and "is this the right approach?" sanity checks before you start writing code.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.opendatadiscovery.org/developer-guides/how-to-contribute.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
