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

Add back support for Go 1.6 #1575

Closed
broady opened this issue Oct 12, 2017 · 11 comments
Closed

Add back support for Go 1.6 #1575

broady opened this issue Oct 12, 2017 · 11 comments
Labels
P2 Type: Dependencies Updating/adding/removing dependencies

Comments

@broady
Copy link
Contributor

broady commented Oct 12, 2017

If the cost is pretty low, could you add it back?

Go 1.8 isn't the default on GAE yet (but will be soon)

Go 1.6 will continue to be available (opt-in) for at least several months, and the Cloud teams need to continue support for 1.6 for several packages that depend on gRPC. This complicates things for customers, as they'll need to pin to the last version of grpc-go that supported 1.6.

@broady
Copy link
Contributor Author

broady commented Oct 12, 2017

/cc @jba @zombiezen @rakyll

@dfawley
Copy link
Member

dfawley commented Oct 12, 2017

Rolling back the PR that removed 1.6 support is obviously trivial. However, there is an ongoing maintenance cost in the form of fragmented (conditionally-built) code and needing to maintain workarounds for Go 1.6 bugs (notably golang/go#15078).

Is vendoring the previous release not an option for you if you need 1.6 support?

@broady
Copy link
Contributor Author

broady commented Oct 12, 2017

I should have made it more clear: I work on the Cloud team - on App Engine and on Google and GCP client libraries.

Our customers will need to pin back to an old version. And yes, we all agree they should be doing that already.

How about some nominal support for 1.6 - that is, still drop "support" for 1.6, but any bugs that arise are fixed with only a best-effort guarantee.

@dfawley dfawley added P2 Type: Dependencies Updating/adding/removing dependencies labels Oct 12, 2017
@dfawley
Copy link
Member

dfawley commented Oct 13, 2017

How about some nominal support for 1.6 - that is, still drop "support" for 1.6, but any bugs that arise are fixed with only a best-effort guarantee.

Such a change wouldn't actually help with any of my maintenance concerns. We'd have to revert the PR that dropped 1.6 compatibility and continue to maintain a more complex code base. I also fully expect our dependencies to drop 1.6 compatibility in the near future (x/net/trace broke 1.6 builds a few months back, but reverted it, and IIRC there was a comment somewhere that said they were going to roll forward after the final 1.9 release). If our dependencies don't support 1.6, then we can't.

I don't really see any compelling reasons to maintain Go1.6 compatibility at HEAD. Anyone that wants to run with 1.6 can pretty easily vendor to the previous grpc-go release (1.6, interestingly enough). Is there something that I'm missing here?

@broady
Copy link
Contributor Author

broady commented Oct 13, 2017

Yes, we reverted x/net/trace back to 1.6 because of App Engine.
(note, you'll see I'm the reviewer on the rollback CL)

"can pretty easily vendor" - as you know, the dependency management situation for Go isn't quite that straightforward at the moment.

@dfawley
Copy link
Member

dfawley commented Oct 13, 2017

We debated this for awhile and decided to roll back the change early next week and do one more release with Go1.6 support (in 6 weeks).

@jba
Copy link

jba commented Oct 16, 2017

When you do drop 1.6, you should not also change "golang.org/x/net/context" to "context". It is true that "context" was introduced in 1.7, but there may still be users who use recent versions of Go (even 1.9) but who still are on golang.org/x/net/context, because one of their dependencies is.

In other words, dropping 1.6 support is not a breaking change for a 1.9 user, but changing the context import path may be.

I believe we have to wait for 1.10 to come out, at which point we can assume everyone is on 1.9 or 1.10, and therefore everyone has type aliases. Then we will make golang.org/x/net/context an alias for the stdlib context, and only then can we change import paths.

@dfawley
Copy link
Member

dfawley commented Oct 16, 2017

@jba, this is discussed in #711, and we will not be doing this until our oldest supported version is 1.9 (see: my comment). Thanks.

@dfawley
Copy link
Member

dfawley commented Oct 17, 2017

FYI, gomock no longer works with Go1.6 either: golang/mock#116

@balshetzer
Copy link

I was convinced to restore backwards compatibility in golang/mock#118

@lock lock bot locked as resolved and limited conversation to collaborators Sep 26, 2018
@dfawley
Copy link
Member

dfawley commented Oct 11, 2018

Note that in 21 days, and after our next release (Oct 23rd), we will be dropping support for Go1.6-1.8.

Since this thread is locked, head over to issue #711 for related discussion if desired.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
P2 Type: Dependencies Updating/adding/removing dependencies
Projects
None yet
Development

No branches or pull requests

4 participants