2019-03-21 19:59:06 -05:00
|
|
|
# Terraform Core Codebase Documentation
|
|
|
|
|
|
|
|
This directory contains some documentation about the Terraform Core codebase,
|
|
|
|
aimed at readers who are interested in making code contributions.
|
|
|
|
|
|
|
|
If you're looking for information on _using_ Terraform, please instead refer
|
2021-01-19 15:53:40 -06:00
|
|
|
to [the main Terraform CLI documentation](https://www.terraform.io/docs/cli/index.html).
|
2019-03-21 19:59:06 -05:00
|
|
|
|
|
|
|
## Terraform Core Architecture Documents
|
|
|
|
|
|
|
|
* [Terraform Core Architecture Summary](./architecture.md): an overview of the
|
|
|
|
main components of Terraform Core and how they interact. This is the best
|
|
|
|
starting point if you are diving in to this codebase for the first time.
|
|
|
|
|
|
|
|
* [Resource Instance Change Lifecycle](./resource-instance-change-lifecycle.md):
|
|
|
|
a description of the steps in validating, planning, and applying a change
|
|
|
|
to a resource instance, from the perspective of the provider plugin RPC
|
|
|
|
operations. This may be useful for understanding the various expectations
|
|
|
|
Terraform enforces about provider behavior, either if you intend to make
|
|
|
|
changes to those behaviors or if you are implementing a new Terraform plugin
|
|
|
|
SDK and so wish to conform to them.
|
|
|
|
|
|
|
|
(If you are planning to write a new provider using the _official_ SDK then
|
|
|
|
please refer to [the Extend documentation](https://www.terraform.io/docs/extend/index.html)
|
|
|
|
instead; it presents similar information from the perspective of the SDK
|
|
|
|
API, rather than the plugin wire protocol.)
|
|
|
|
|
2019-06-11 16:27:25 -05:00
|
|
|
* [Plugin Protocol](./plugin-protocol/): gRPC/protobuf definitions for the
|
|
|
|
plugin wire protocol and information about its versioning strategy.
|
|
|
|
|
|
|
|
This documentation is for SDK developers, and is not necessary reading for
|
|
|
|
those implementing a provider using the official SDK.
|
|
|
|
|
2021-06-02 19:46:44 -05:00
|
|
|
* [How Terraform Uses Unicode](./unicode.md): an overview of the various
|
|
|
|
features of Terraform that rely on Unicode and how to change those features
|
|
|
|
to adopt new versions of Unicode.
|
|
|
|
|
2019-03-21 19:59:06 -05:00
|
|
|
## Contribution Guides
|
|
|
|
|
2023-05-02 18:23:40 -05:00
|
|
|
* [Contributing to Terraform](../.github/CONTRIBUTING.md): a complete guideline for those who want to contribute to this project.
|