<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
# Contributing to Apache TinkerPop

Thank you for your interest in contributing to Apache TinkerPop™! Contributions of code, tests, documentation, examples, 
and ideas are all welcome.

Contributions via GitHub pull requests are gladly accepted from their original author. By submitting any copyrighted 
material via pull request, email, or other means, you agree to license the material under the project's open source 
license and warrant that you have the legal authority to do so.

Please see the "Developer Documentation" for more information on 
[contributing](http://tinkerpop.apache.org/docs/current/dev/developer/#_contributing) to TinkerPop.

## Ways to contribute

You can help TinkerPop in many ways, including: [tinkerpop.apache](https://tinkerpop.apache.org/docs/current/dev/developer/)

- Reporting bugs and proposing improvements.
- Contributing code changes and tests.
- Writing and improving documentation and examples.
- Helping users on mailing lists, issue trackers, and forums.
- Sharing recipes, tutorials, and best practices.

If you are new to the project, unresolved issues marked as “trivial” in [JIRA](https://issues.apache.org/jira/browse/TINKERPOP)
are a good place to start.

## Getting started

. Fork the [Apache TinkerPop repository](https://github.com/apache/tinkerpop) on GitHub and clone your fork locally.
. Set up a development environment following the [Developer Documentation](https://tinkerpop.apache.org/docs/current/dev/developer/)
. For non‑trivial work, tie your changes to an existing JIRA issue or create a new one if needed.

## Contribution process

The general workflow for code or documentation changes is: [tinkerpop.apache](https://tinkerpop.apache.org/docs/current/dev/developer/)

1. **Discuss (recommended)**
    - For larger or potentially breaking changes, start a discussion on the TinkerPop dev mailing list and/or in JIRA.

2. **Implement**
    - Make your changes in a feature branch in your fork.
    - Include tests for code changes whenever possible.
    - Update documentation, recipes, and upgrade notes when behavior or APIs change.

3. **Build and test**
    - Run the relevant Maven builds and tests as described in the Developer Documentation (for example, `mvn clean install`).
    - For significant contributions, consider running the broader test and documentation build described in the development‑environment guide.

4. **Prepare your pull request**
    - Reference the associated JIRA issue in your commit message/pull request description.
    - Keep pull requests focused and reasonably small where possible.
    - Update `CHANGELOG.asciidoc` and the upgrade documentation if your change affects user‑visible behavior or public API.

5. **Submit and respond to review**
    - Open a GitHub pull request against the appropriate branch.
    - Automated builds and tests will run via [GitHub Actions](https://github.com/apache/tinkerpop/actions); please address any failures.
    - Committers and other contributors may request changes; you can add more commits to the same branch to update the pull request.
    - Please be patient; we will do our best to move your contribution forward.

## Documentation contributions

TinkerPop documentation is maintained primarily as AsciiDoc under `docs/src/**` and published per release. 

When changing documentation:

- Edit the appropriate AsciiDoc files in `docs/src/`.
- Use the existing structure (books and index files) and update `index.asciidoc` entries so new content is included.
- For project documentation, submit changes via pull request, just like code.

The Developer Documentation includes detailed information on how to build and preview the documentation locally.

The TinkerPop website is also maintained in the repository under `docs/site` as HTML files. Contributions to that are
also welcome via pull request. 

## Using AI and IDE assistants

If you use AI coding agents or IDE assistants when working on TinkerPop, please also consult `AGENTS.md`. That file 
summarizes:

- Recommended build and test commands.
- Coding and testing conventions.
- “Do and don’t” guidance specific to automated tools.

Please consider [ASF Generative Tooling Guidance](https://www.apache.org/legal/generative-tooling.html) when making 
contributions with these tools.

## Community and communication

TinkerPop is an Apache Software Foundation project and follows [ASF community guidelines](https://community.apache.org/contributors/).

For more detail on:

- [Mailing lists](https://lists.apache.org/list.html?dev@tinkerpop.apache.org) and project communication.
- Roles and responsibilities (contributors, committers, PMC).
- Release and voting processes.

please see the Developer Documentation’s contributing and governance sections:  
https://tinkerpop.apache.org/docs/current/dev/developer/