opentofu/rfc
Andrei Ciobanu 2f14ca5163
Some checks failed
build / Build for freebsd_386 (push) Has been cancelled
build / Build for linux_386 (push) Has been cancelled
build / Build for openbsd_386 (push) Has been cancelled
build / Build for windows_386 (push) Has been cancelled
build / Build for freebsd_amd64 (push) Has been cancelled
build / Build for linux_amd64 (push) Has been cancelled
build / Build for openbsd_amd64 (push) Has been cancelled
build / Build for solaris_amd64 (push) Has been cancelled
build / Build for windows_amd64 (push) Has been cancelled
build / Build for freebsd_arm (push) Has been cancelled
build / Build for linux_arm (push) Has been cancelled
build / Build for linux_arm64 (push) Has been cancelled
build / Build for darwin_amd64 (push) Has been cancelled
build / Build for darwin_arm64 (push) Has been cancelled
build / End-to-end Tests for linux_386 (push) Has been cancelled
build / End-to-end Tests for windows_386 (push) Has been cancelled
build / End-to-end Tests for darwin_amd64 (push) Has been cancelled
build / End-to-end Tests for linux_amd64 (push) Has been cancelled
build / End-to-end Tests for windows_amd64 (push) Has been cancelled
Quick Checks / List files changed for pull request (push) Has been cancelled
Quick Checks / License Checks (push) Has been cancelled
Website checks / List files changed for pull request (push) Has been cancelled
Quick Checks / Unit tests for linux_386 (push) Has been cancelled
Quick Checks / Unit tests for linux_amd64 (push) Has been cancelled
Quick Checks / Unit tests for windows_amd64 (push) Has been cancelled
Quick Checks / Unit tests for linux_arm (push) Has been cancelled
Quick Checks / Unit tests for darwin_arm64 (push) Has been cancelled
Quick Checks / Unit tests for linux_arm64 (push) Has been cancelled
Quick Checks / Race Tests (push) Has been cancelled
Quick Checks / End-to-end Tests (push) Has been cancelled
Quick Checks / Code Consistency Checks (push) Has been cancelled
Website checks / Build (push) Has been cancelled
Website checks / Test Installation Instructions (push) Has been cancelled
[RFC] Migrate from mitchellh/cli to spf13/cobra (#3541)
Signed-off-by: Andrei Ciobanu <andrei.ciobanu@opentofu.org>
2025-12-12 17:04:44 +02:00
..
20240513-static-evaluation Fix typos (#1905) 2024-08-29 13:20:33 -04:00
20241206-oci-registries rfc/oci-registries: Assorted changes to finalize the next draft 2025-03-04 11:13:19 -08:00
2025-07-22-conditional-enable.md RFC: conditional enabled field (#3066) 2025-08-29 12:37:13 -03:00
20230905-provider-gpgkey-missing.md Backfill accepted RFCs into new location (#1702) 2024-06-12 07:31:35 -04:00
20231017-homebrew-like-registry-design.md Backfill accepted RFCs into new location (#1702) 2024-06-12 07:31:35 -04:00
20231106-registry-repository-folder-structure.md Fix typos (#1905) 2024-08-29 13:20:33 -04:00
20231107-registry-gpg-key-verification.md Backfill accepted RFCs into new location (#1702) 2024-06-12 07:31:35 -04:00
20231108-registry-automatic-version-bumping.md Backfill accepted RFCs into new location (#1702) 2024-06-12 07:31:35 -04:00
20231109-registry-response-generation.md Backfill accepted RFCs into new location (#1702) 2024-06-12 07:31:35 -04:00
20231114-client-side-state-encryption.md Backfill accepted RFCs into new location (#1702) 2024-06-12 07:31:35 -04:00
20231123-registry-submission-via-github-issues.md Backfill accepted RFCs into new location (#1702) 2024-06-12 07:31:35 -04:00
20240513-static-evaluation-providers.md rfc: Static Evaluation of Provider Iteration state tracking revision 2024-12-11 12:52:50 -08:00
20240513-static-evaluation.md RFC #1042: Planning the implementation of static evaluation (#1649) 2024-06-12 09:21:32 -04:00
20240524-OpenTofu-RFC-Process.md Process RFC: RFC Tracking Issues 2025-01-14 14:33:04 -08:00
20240529-OpenTofu-Specific-Code-Override.md RFC: OpenTofu Specific Code Override (#1699) 2024-06-17 13:35:42 +03:00
20240725-exclude-resources.md RFC: -exclude flag for planning and applying (#1860) 2024-08-08 09:31:36 -04:00
20240824-provider-cache-locking.md Add RFC for global provider cache locking (#1939) 2025-04-24 12:00:49 -04:00
20241023-rfc-tracking-issues.md Process RFC: RFC Tracking Issues 2025-01-14 14:33:04 -08:00
20241113-pragmatic-complexity-linting.md rfc: OpenTofu Codebase Linting Policy (#2562) 2025-03-10 07:52:44 -04:00
20241118-module-vars-and-outputs-deprecation.md Rename the CLI arg for deprecation outputs/variables (#2774) 2025-05-09 14:01:32 +03:00
20241206-oci-registries.md rfc/oci-registries: Assorted changes to finalize the next draft 2025-03-04 11:13:19 -08:00
20250108-naming-convention-for-context-vars.md RFC: Naming convention for internal variables representing "contexts" 2025-01-14 14:39:29 -08:00
20250127-PostgreSQL-Locking.md make pg backend acquire schema-based global locks (#2411) 2025-01-31 14:21:36 +02:00
20250129-Tracing-For-Extra-Context.md [RFC] OpenTelemetry (OTEL) Tracing for providing end users more context (#2448) 2025-04-24 16:13:14 +01:00
20250211-s3-locking-with-conditional-writes.md RFC: s3 locking based on conditional writes (#2511) 2025-02-19 10:11:09 +02:00
20250303-linter-policy.md rfc: OpenTofu Codebase Linting Policy (#2562) 2025-03-10 07:52:44 -04:00
20250314-security-patch-policy.md rfc: Revisions to Security Patch Policy 2025-09-23 16:37:32 -07:00
20250317-ephemeral-resources.md Update the RFC related to tofu.applying/terraform.applying (#3155) 2025-08-19 15:22:56 +03:00
20250327-providerinst-auth-hashes.md rfc: Tracking Provider Authentication on a Per-hash Basis 2025-04-09 09:59:24 -07:00
20250728-execution-architecture.md Proposed Execution Architecture RFC (#3078) 2025-08-12 12:27:32 -03:00
20250730-module-misc-settings.md rfc: Minor revision to "Miscellaneous Configuration Settings in Modules" 2025-10-22 07:08:29 -07:00
20251001-eval-plan-apply-architecture.md rfc: A new approach to configuration evaluation, planning, and applying 2025-10-22 08:56:58 -07:00
20251105-use-cobra-instead-of-mitchellh.md [RFC] Migrate from mitchellh/cli to spf13/cobra (#3541) 2025-12-12 17:04:44 +02:00
README.md rfc: Update README.md to discuss RFC Tracking Issues (#2377) 2025-01-15 07:36:54 -05:00
yyyymmdd-template.md New RFC process (#1669) 2024-06-03 10:30:18 -04:00

The OpenTofu RFCs

This folder contains Request For Comment (RFC) documents that have been discussed, reviewed, and accepted. They represent a proposal of changes to one or more of the repositories in the OpenTofu organization.

RFCs are primarily created by the OpenTofu Community in response to one or more GitHub issues that require a more in-depth discussion than the GitHub Issue process can provide. They are organized by date to help show the progression of concepts over time.

Authoring an RFC

When an Issue is given the needs-rfc label, any community member may propose an RFC by following these steps:

  1. Copy the yyyymmdd-template.md to ./rfc/${isodate}-${rfc title}.md on a branch in their fork of the OpenTofu Repository
  2. Edit the newly created Markdown file and fill in the template fields
  3. Submit a Pull Request in the OpenTofu Repository, linked to the open issue(s)

Note

It's ok to file an incomplete RFC. Please submit it as a draft pull request to get early feedback.

Once an RFC is submitted, community members discuss the RFC in detail until all open questions are resolved

To Accept an RFC, the majority of the OpenTofu Core Team must approve the Pull Request. If a consensus is not reached, the Pull Request is closed and the Core Team may ask for a new RFC or close the original issue entirely.

Once an RFC is Accepted and Merged, the Core Team typically creates a Tracking Issue to represent all of the work required for the RFC in a single place, as described in the next section.

RFC Tracking Issues

An RFC tracking issue is a GitHub issue used to represent all of the work required to produce the result described in an accepted RFC.

An RFC is more a technical design proposal than a project plan, and so the initial creation of an RFC tracking issue effectively requires translating the RFC's goals into a set of concrete work items that would, once completed, cause the product to behave as described in the RFC. We use a separate tracking issue because an issue can be updated independently of changes to the main repository content, and so we can more easily keep it up-to-date and respond to new information by changing our implementation plan as we go.

An RFC tracking issue shold be closed once enough work has been completed to meet the goals described in the RFC, possibly including RFC amendments as described in the next section.

There is more information on RFC tracking issues in the process RFC that proposed the use of tracking issues.

Amending an RFC

An approved RFC is not frozen; approval represents that consensus has been reached and so work can begin.

During the work described in the RFC's tracking issue, the project team might find that a different design is needed, in which case they can open a new PR to amend the existing RFC. The new PR should typically be linked from the RFC's tracking issue so that observers can understand retroactively how the design evolved.

We typically consider an RFC to be frozen after its tracking issue has been closed, because the RFC then describes the result of the project that the tracking issue represented. However, if a subsequent project proposes to change a decision that was made in an older RFC it's helpful to propose an amendment to the older RFC that introduces a compact [!NOTE] callout near to the affected content that notes that the decision was invalidated by a later RFC and links to that later RFC, so that future readers are less likely to be misled by stale RFC content. Other amendments to "frozen" RFCs are not recommended, but might be accepted with sufficient justification on a case-by-case basis.

For more details, refer to RFC Amendments in the Tracking Issues RFC.