Go: proposal: freeze more packages

Created on 5 May 2016  路  15Comments  路  Source: golang/go

I'd like to freeze some packages for Go 1.7:

  • net/rpc (#16844)
  • log/syslog (done in ddc25081d24d62ebf37e737b73b8bad8fd4b50ec)
  • testing/quick
  • net/smtp (done in 883e128f4571a59842e1156b5ebe25d8420162d9)
  • text/tabwriter

I want to place a line at the end of their package docs saying "This package is frozen. It is retained for compatibility with the Go 1 API promise. See https://golang.org/s/frozen-package for details."

And then at that URL we can spell out the rules more. (e.g. maybe we'll accept actual bug fixes if they're obviously wrong and don't change buggy behavior that people might depend on)

/cc @adg @rsc @ianlancetaylor

Documentation FrozenDueToAge Proposal

Most helpful comment

All 15 comments

I'm ok with freezing text/tabwriter. Others need to chime in for the other packages.

I agree with the proposed set. We should also consider adding container/* to the list, although people don't tend to ask for or send changes to those packages.

cc @arschles who has long talked of making testing/quick much more powerful.

We might roll back the recent testing/quick change (0ccabe2e0b42a2) for Go 1.7 because it broke too many tests.

testing/quick can be forked and develop elsewhere on Github, perhaps with versioning.

And indeed, testing/quick was rolled back in https://go-review.googlesource.com/#/c/22860/

I agree with the idea of freezing packages, but I would like to try to separate that idea from "retained for compatibility", which makes it sound like we've decided the package doesn't even belong in the standard library. That's a separate attribute from "complete enough and shouldn't be added to or changed". Maybe frozen is the wrong word since it sounds like what we did with syscall. "completed" or "stable" might be less judgmental.

Well, I don't believe they belong in the standard library, but that's just one opinion. We don't have to make the text sound like my opinion, though. I'm happy with any wording that conveys that the package isn't accepting changes.

Re your opinion, I know, and it's a reasonable opinion. I just want to keep it separate because we might well want to put this on packages that clearly do belong (for example reflect once all the type constructors are done).

I forgot about this bug and went ahead and froze some things in Go 1.7:

https://golang.org/pkg/log/syslog/
https://golang.org/pkg/net/smtp/

We can adjust the wording, though, per the comment from Russ.

And we can still discuss which other packages to freeze (or "mark complete").

Actually, log/syslog was frozen in Go 1.6: https://go-review.googlesource.com/18222

We might also want to freeze net/rpc per #15236 and #7946

/cc @robpike

Freezing net/rpc is #16844

Freeze 'em!

CL https://golang.org/cl/31910 mentions this issue.

Was this page helpful?
0 / 5 - 0 ratings