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

Drop support for protocol 4/Terraform 0.11 #4324

Closed
paddycarver opened this issue Aug 22, 2019 · 2 comments
Closed

Drop support for protocol 4/Terraform 0.11 #4324

paddycarver opened this issue Aug 22, 2019 · 2 comments

Comments

@paddycarver
Copy link
Contributor

About Terraform Protocols

Terraform operates by using a core binary that communicates over local RPC with provider plugin binaries. In Terraform 0.11, we were using version 4 of this RPC protocol. Terraform 0.12 communicates using version 5 of this RPC protocol.

The RPC compatibility is signaled when publishing a provider, and terraform init will only download providers compatible with the protocol versions supported by the version of Terraform core running the command.

Our Current Setup

Right now, all our provider releases are published signaling their support for version 4 and version 5 of the protocol. This means Terraform 0.11 (speaks protocol 4) can use them, and Terraform 0.12 (speaks protocol 5) can use them. Which is obviously a nice thing.

It also, unfortunately, means we're limited to a lowest common denominator of functionality between the two providers, which is sometimes unpredictable in how it behaves.

For example, we are currently unable to publish alpha or beta versions of provider releases, because Terraform 0.11 has a broken implementation of semver parsing for providers, and won't handle those correctly.

The Proposal

My proposed fix for this is to publish future versions of the provider advertising support only protocol 5. This would make Terraform 0.11 ignore them when running terraform init. In theory, users could download the binaries themselves and put them in a specific location on their hard drive and continue using the new binaries with 0.11, but we'd stop supporting that and some things likely wouldn't work as intended.

The Blockers

This would be a major breaking change, and would thus need to be bundled into a major release.

Also, providers are currently released to releases.hashicorp.com. Terraform 0.11 downloads the appropriate providers during terraform init by iterating through them in reverse, looking for a provider that supports the necessary protocol version. So the more protocol v5 releases we do on releases.hashicorp.com, the slower Terraform 0.11 will be to init. So ideally we'd like to wait until releases are published somewhere other than releases.hashicorp.com.

@paddycarver
Copy link
Contributor Author

There's a blog post on this: https://www.hashicorp.com/blog/deprecating-terraform-0-11-support-in-terraform-providers/

I have one last release process change to make, and this should be done.

@ghost
Copy link

ghost commented Mar 28, 2020

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. If you feel I made an error 🤖 🙉 , please reach out to my human friends 👉 [email protected]. Thanks!

@ghost ghost locked and limited conversation to collaborators Mar 28, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants