Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: Add clarity to the public FAQ. #338

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

skyzyx
Copy link
Contributor

@skyzyx skyzyx commented Oct 31, 2024

Description

I feel that the content of the FAQ can be improved to increase clarity, provide additional context, and shift the language to describe OpenTofu in its own right (instead of simply being a Terraform fork).

Certainly open to discussion, but I believe that this reads a little better.

Motivation and Context

  • Describe OpenTofu for what it is, in its own right.
  • IaC is only a small part of what OpenTofu can do. Let's call this out.
  • Link to companies, technologies, and terms to give readers easier access to more context.
  • One of the foundational principles of usability on the web (source: Nielsen Norman Group, mid/late-90s) is to avoid linking the word "here". Instead, link the context of what you're talking about.
  • Not everybody knows what "BUSL" is. Let's define it using the full name of the license, as well as a canonical link to SPDX.
  • Link to HashiCorp's Licensing FAQ at the point where we discuss it. Again, context.
  • Re-worded a few areas that might be interpreted as negative statements to be more neutral in saying that "we disagree".
  • Be more specific in declaring ourselves "open-source".
  • More encouragement of collaboration.
  • Some of the language looks like it hasn't been meaningfully updated since shortly after the fork. Let's modernize and update some of our statements to better match the present state of the project.
  • We should not expect that all readers will begin at the top of the document, and read each question on the way down. Since each accordion entry can be deep-linked, users can begin reading at any question on the page. Let's provide the same links and context in the later entries that we did in the earlier entries.

Types of changes

  • Documentation
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

faq.mdx Show resolved Hide resolved

</AccordionItem>

<AccordionItem id="opentofu-terraform-differences" summary="What are the differences between OpenTofu and Terraform?" highlight>

On the technical level, OpenTofu 1.6.x is very similar feature-wise to Terraform 1.6.x. In the future, the projects feature sets will diverge.
On the technical level, OpenTofu 1.6.x is very similar feature-wise to Terraform 1.6.x. In the future, the feature sets will diverge. OpenTofu will have features not found in Terraform, and vice versa. As a matter of fact, this is already beginning to happen.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here it may be worth linking to the migration guides in the docs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call-out.

On the technical level, OpenTofu 1.6.x is very similar feature-wise to Terraform 1.6.x. In the future, the projects feature sets will diverge.
On the technical level, OpenTofu 1.6.x is very similar feature-wise to Terraform 1.6.x. In the future, the feature sets will diverge. OpenTofu will have features not found in Terraform, and vice versa. As a matter of fact, this is already beginning to happen.

The other primary difference is that OpenTofu is available under the [Mozilla Public License 2.0](https://spdx.org/licenses/MPL-2.0.html) (MPL-2.0), an [open-source license](https://opensource.org/licenses?ls=MPL-2.0) ([definition](https://opensource.org/osd)). Its goal is to be driven collaboratively by the community, with no single company being able to dictate the roadmap.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this was written, both us and Terraform have added a host of new features, so this section may need to be revised.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll take a crack at it.


</AccordionItem>

<AccordionItem id="why-use-opentofu" summary="Why should you use OpenTofu instead of Terraform?" highlight>

#### Personal use

Initial impressions suggest you could use either OpenTofu or Terraform for personal use, as the BUSL license has no restrictions for non-commercial use cases. That may change as the Terraform ecosystem becomes increasingly unstable, and a switch to another license may happen. Those familiar with Terraform will have no issues adopting OpenTofu for personal use, so there will be no knowledge gaps, at least at the start.
Initial impressions suggest you could use either OpenTofu or Terraform for personal use, as the [Business Source License](https://spdx.org/licenses/BUSL-1.1.html) (BUSL) has no restrictions for non-commercial use cases. That may change as the Terraform ecosystem becomes increasingly unstable, and a switch to another license may happen. Those familiar with Terraform should have very issues adopting OpenTofu for personal use, as long as they are not using features that are _exclusive_ to Terraform.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should have very issues

Did you mean "very few issues"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch.


</AccordionItem>

<AccordionItem id="terraform-replacement" summary="Can I use OpenTofu as a drop-in replacement for Terraform? Is OpenTofu suitable for production use?" highlight>

Right now, OpenTofu is a drop-in replacement for Terraform, as it's compatible with Terraform versions 1.5.x and most of 1.6.x. You don’t need to make any changes to your code to ensure compatibility.
OpenTofu will remain compatible with Terraform versions 1.5.x and most of 1.6.x. In these cases, it is a drop-in replacement for Terraform. You don’t need to make any changes to your code to ensure compatibility.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpenTofu will remain compatible with Terraform versions 1.5.x and most of 1.6.x. In these cases, it is a drop-in replacement for Terraform. You don’t need to make any changes to your code to ensure compatibility.

This feels awkward. I would suggest:

OpenTofu will remain compatible with Terraform versions 1.5.x and most of 1.6.x and is a drop-in replacement for Terraform amongst these versions. You don’t need to make any changes to your code to ensure compatibility.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is another good place to link with the migration guides from terraform versions above 1.6.X.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ImIOImI: Yours is better. Making the change.

@ollevche: Agreed.


</AccordionItem>

<AccordionItem id="decisions" summary="How are new features, bug fixes, and other development decisions made in OpenTofu?">

The core team with its technical lead determine the most important features and bug fixes to work on, while the steering committee makes decisions on big changes.
The Core team with its Technical Lead determine the most important features and bug fixes to work on, while the _Technical Steering Committee_ (TSC) makes decisions on big changes.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A link to the TSC notes would be helpful, here.


</AccordionItem>

<AccordionItem id="opentofu-compatibility" summary="Will OpenTofu be compatible with future Terraform releases?" highlight>

The community will decide what features OpenTofu will have. Some long-awaited Terraform features will be publicly available soon.
OpenTofu will remain compatible with Terraform versions 1.5.x and most of 1.6.x.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would re-phrase it a bit, because the current version sounds like we will not be compatible with Terraform 1.7 and above. It is true to some degree, but we want to be as much compatible as possible in general. I would reflect that here.

Also, this is another good place to link with migration guides.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good points here. I know I've seen chatter in Slack about not wanting to maintain a differences list between the projects, but I do believe that there is some value there.

Let me think on this.

If you're missing a feature in OpenTofu that's available in Terraform, feel free to create an issue.
Core functionality with regard to the Terraform HCL language will remain compatible with future Terraform releases. OpenTofu remains compatible with the underlying gRPC-based [Provider Protocol](https://developer.hashicorp.com/terraform/plugin/how-terraform-works) upon which all current providers are built.

Outside of those areas, the community will decide which features OpenTofu will have. In some cases, we've already shipped features in OpenTofu that spent years languishing in the Terraform backlog. There are even features which are exclusive to OpenTofu, such as [State and Plan Encryption](https://opentofu.org/docs/language/state/encryption/), and even writing custom provider functions in [Go](https://github.com/opentofu/terraform-provider-go) or [Lua](https://github.com/opentofu/terraform-provider-lua).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another good example of OpenTofu exclusive feature - early variable and locals evaluation.

OpenTofu will not have its own providers. Terraform providers have not altered their licenses, and the potential for such a change is virtually zero. OpenTofu works with the current Terraform providers, but it uses a separate registry.
The [Terraform Plugin SDK v2](https://github.com/hashicorp/terraform-plugin-sdk) and the newer [Terraform Plugin Framework](https://github.com/hashicorp/terraform-plugin-framework) are both available under the [Mozilla Public License 2.0](https://spdx.org/licenses/MPL-2.0.html) (MPL-2.0), an [open-source license](https://opensource.org/licenses?ls=MPL-2.0) ([definition](https://opensource.org/osd)). This means that we can continue leveraging the existing providers and modules in OpenTofu without having to fork them.

Terraform providers have not altered their licenses, and the potential for such a change is virtually zero. OpenTofu works with the current Terraform providers, but it uses a [separate registry](https://search.opentofu.org). If those circumstances change, we will have to adapt. But we are confident that the OpenTofu and its community will be able to resolve any issues that arise.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would elaborate a bit more on why it is very unlikely for providers to change their licenses:

Suggested change
Terraform providers have not altered their licenses, and the potential for such a change is virtually zero. OpenTofu works with the current Terraform providers, but it uses a [separate registry](https://search.opentofu.org). If those circumstances change, we will have to adapt. But we are confident that the OpenTofu and its community will be able to resolve any issues that arise.
Terraform providers are separate projects built by the community and supported by different companies and authors. They have not altered their licenses, and the potential for such a change is virtually zero. OpenTofu works with the current Terraform providers, but it uses a [separate registry](https://search.opentofu.org). If those circumstances change, we will have to adapt. But we are confident that the OpenTofu and its community will be able to resolve any issues that arise.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This text was previously there and I didn't change it, but the same question crossed my mind during editing — why?

I imagine that the original text was put together quickly, but expanding on the topic while still remaining FAQ-length could be a good idea.

Then again, maybe this is a topic for a deeper technical FAQ that was mentioned in the Slack #dev-guides channel. A place where we can go deep on technical topics, beyond the scope of the VP-friendly FAQ on the homepage.

Let me play with this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants