# Contributing

Apache Pinot welcomes contributions of all kinds -- code, documentation, bug reports, and design proposals. This page is the single starting point for anyone who wants to contribute, whether you are fixing a typo in the docs or building a major new feature.

## Contribution paths at a glance

| What you want to do                                 | Guide                                                                                                                                              |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Contribute code (features, bug fixes, tests)        | [Contribution Guidelines](/develop-and-contribute/contributing/contribution-guidelines.md)                                                         |
| Update or improve the documentation (via GitHub PR) | [Contributing to the Apache Pinot Documentation](/develop-and-contribute/contributing/contributing.md)                                             |
| Follow the documentation style conventions          | [Pinot Documentation Style Guide](/develop-and-contribute/contributing/style-guide.md)                                                             |
| Edit documentation directly in GitBook              | [Contributing to the Apache Pinot Documentation -- GitBook section](/develop-and-contribute/contributing/contributing.md#edit-directly-on-gitbook) |
| Understand the documentation toolchain              | [Update Documentation](/develop-and-contribute/contributing/update-document.md)                                                                    |

## Code contribution workflow (summary)

The full details live in the [Contribution Guidelines](/develop-and-contribute/contributing/contribution-guidelines.md). Here is the high-level flow:

1. **Open a GitHub issue** describing what you plan to change and why.
2. **Get agreement** -- for large features, write a Pinot Enhancement Proposal (PEP) design document and obtain PMC approval.
3. **Create a branch** in your fork, implement the change, and add tests.
4. **Run verification locally** -- `mvn checkstyle:check` and `mvn clean install -Pbin-dist`.
5. **Open a pull request** with a clear description, link to the issue, and evidence of testing.
6. **Respond to review feedback**, rebase on master as needed, and wait for merge.
7. **Update documentation** if the change introduces new user-facing behavior.

## Documentation contribution workflow (summary)

The full details live in [Contributing to the Apache Pinot Documentation](/develop-and-contribute/contributing/contributing.md).

1. **Fork and clone** the [pinot-docs](https://github.com/pinot-contrib/pinot-docs) repository.
2. **Edit locally** using Markdown. Follow the [style guide](/develop-and-contribute/contributing/style-guide.md) for Pinot-specific conventions.
3. **Commit and push** to your fork.
4. **Open a pull request** against the upstream docs repository.
5. **Incorporate review feedback** -- changes appear on GitBook automatically after merge.

Trusted contributors can also edit directly in the GitBook UI. Contact <dev@pinot.apache.org> to request access.

## Prerequisites

* A GitHub account.
* For code contributions: a working local build (see [Code Setup](/develop-and-contribute/codebase-basics/code-setup.md)).
* For documentation contributions: familiarity with Markdown and Git.

## Next step

Connect with the Pinot community for help, discussion, and collaboration:

* [Community](/resources/community.md)


---

# 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.pinot.apache.org/develop-and-contribute/contributing.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.
