.. _contribute:

Contributing to Open3D
##########################

Open3D is a community effort. You can contribute to the project in various ways, including the following:

* Implement new features
* Help review features
* Report bugs/problems
* Documentation

We welcome and celebrate contributions from the community. In order to maintain the values of Open3D we have defined basic rules and procedures that must be followed when participating in the development.

.. _principles:

Guiding principles
===========================

Open3D aspires to be:

* **Useful**. Optimized data structures and algorithms. Complete workflows.
* **Easy to use**. Fast compilation from source. Lightweight dependencies. Python bindings.
* **Compact**. Maintain a high bar for inclusion. Strongly prioritize functionality that is either widely used or the best in its class.
* **Beautiful**. Good craftsmanship. High esthetic standards.

Some of these principles may at times clash. Trade-offs may be required. Strive to uphold very high standards so that Open3D remains clean, compact, fast, and robust while maximizing its utility to the broad 3D community.

How can you contribute?
===========================

We have defined a simple recipe for contributing to Open3D:

1. Download, build from source, and familiarize yourself with Open3D
2. Read the :ref:`style_guide` guidelines and install the required tools
3. Check existing classes, examples, and related code
4. Create new features in your fork. Do not forget unit tests and documentation. Double-check the :ref:`style_guide`
5. Make a pull request to the `main branch <https://github.com/isl-org/Open3D/tree/main>`_
6. Make sure your PR passes the CI tests. If it doesn’t, fix the code until it builds and passes the CI tests
7. Your PR will be assigned to reviewers
8. Engage with your reviewers during the review process. Address issues or concerns raised during the review. Don’t let the review die.

Congratulations, your pull request has been merged. You are now part of Open3D!

For a detailed description of the different types of contributions and recommended procedures, check :ref:`contribution_recipes` .
