-
Notifications
You must be signed in to change notification settings - Fork 141
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
Release planning #241
Comments
One reason is that some users can't easily upgrade the boot library versions they use – at least that has been my experience with using Nix in the past few months. To give these users access to new features, we should probably try to bundle them with GHC 8.12. |
Well, then these users will just wait until GHC catches up. Not the end of the world, we do not plan any revolutionary changes. I think it's wrong to tie
Sorry, I was not clear enough above. Let's merge pending non-breaking changes + #220 and release them as 0.10.11.0 or 0.10.10.2. Then drop GHC < 7.10 and make a major bump (possibly, even to 1.0.0). |
@Bodigrim I'd also like to decouple Nevertheless, I think I'll try to pluck some low-hanging fruit in time for GHC 8.12, so users who are stuck with the bundled libraries don't have to wait longer than necessary. I also agree that we ought to do a minor release next, and then try to flush out the breaking changes. I've created a milestone for this next minor release. Feel free to add issues and PRs to it that you feel should be included. |
Since there are a bunch of unreleased changes and since there hasn't been much progress on the 0.10.12.0 milestone in the last two weeks, how about we cut the 0.10.12.0 release already? |
+1 Then we could probably publish a major version. Given that GHC is going to be 9.0, it seems like a good time to merge #175 which introduces a breaking change for GHC < 8.0. |
Perhaps also #191 . |
Yep, I think releasing master as 0.10.12.0 is a good idea. |
I've created a release PR for 0.10.12.0: #257 While doing that, I realized that in some projects, the release preparation duty is rotated among the developers. If someone else would like to prepare one of the next releases, I wouldn't mind not doing it myself. |
@sjakobi Sorry, I'm on vacation until mid-August. If you wish, go ahead with release procedures, you have all my confidence. Otherwise, if the release can be postponed for two weeks, I'll be happy to help when I'm back. |
I forgot to prepare a proper release announcement (that could also touch upon the changes in maintainership) and I'm somewhat short on time and concentration currently. Maybe we can do one for next release. |
Actually I couldn't resist posting on r/haskell: https://www.reddit.com/r/haskell/comments/i4naff/bytestring_v010120/ |
I have moved the remaining issues and PRs that I had originally milestoned for I agree with @hsyl20 that it would be fitting to cut a major release including #175 and #181 in time for GHC 9.0. I wonder how much time we have left for this though. The first beta release of GHC 9.0 seems to be planned for 2020-09-01. Would the release need to happen before that date, @bgamari?! Also, is anyone interested in taking on "release manager duties" for the next release? :) |
I'm happy to volunteer :) |
Are you planning to include #191? |
Yes. |
I've created a milestone for 0.11.0.0: https://github.com/haskell/bytestring/milestone/3 |
With #175 merged, I think that the minimum supported version of base that can be used to build bytestring should be changed to exclude GHC 7.x and older. This should help to avoid compatibility issues should someone still using 7.x accidentally end up (lack of version bounds) using bytestring 0.11. This should also make it possible to remove a bunch of CPP guards. We should be able to assume GHC 8.0 and later. We can also drop GHC 7.x from the test matrix. |
Discussion in #144 brings up the following question. What are we doing with PRs introducing desirable, but breaking changes?
The previous strategy was 2, but honestly I'm not quite satisfied with the outcome. The third strategy, obviously, involves more maintenance, but seems to be the best practice. |
+1 for the third strategy. |
@Bodigrim, can you say more about the issues you faced? I think strategy 2 will be less work as long as the breaking PRs are few and relatively small. Once we have many and/or large breaking PRs or multiple breaking changes that depend on each other, strategy 3 will be more efficient. Alternatively, we can simply schedule a major release then and thereby try to avoid the back-porting. |
The problem is that warehoused PRs tend to bitrot and require non-trivial rebasing, and authors may become difficult to reach by the time the delayed merge is scheduled. Also contributors authoring new commits (that might also be delayed) don't have to worry about conflicts with other warehoused commits. GHC, OpenSSL, Heimdal, SSH, ... all have stable branches and a "master" branch that merges commits as and when they're ready. I prefer option 3. |
From my perspective, this is very much about community management in open source projects. I cannot genuinely encourage people to contribute, if they cannot expect their work to be merged in a finite amount of time. For instance, I myself would rather spend time on a projects with a tighter feedback loop, where my contribution can make an impact. If a PR is merged into master, one can manually specify git commit in |
Good points! My assumption is that So it might be more efficient for us to keep the breaking changes on a non-default branch and to simply merge the main branch into that branch from time to time. That should be less work than cherry-picking every non-breaking change from |
Once there are two branches, why have "master" be the stable release branch and some other branch be the future one with breaking changes? I don't think is warranted. The bug fixes should not be that many, at this point I expect most contributions to be new features, so there's not a compelling need to backport to the stable branch most of the time. So I think that the master branch should be where all new contributions get merged in the order in which they're adopted. Any that need to be backported for an interim update to a stable release can be handled as needed, but I would expect that there should be few minor update releases. Just release new versions every 6 months to (more likely perhaps) a year or so, some of which will have breaking changes and will require a major version bump. |
I believe that we don't want to make major releases very often. Therefore we'll usually also want to backport new features, so they can be released with the more frequent minor releases. |
If so, in that case they can be merged into the stable branch shortly after they are also merged into master. Delaying either merge introduces opportunities for bitrot. In OpenSSL separate PRs are opened and generally more quickly reviewed/approved for backports into a stable branch after inclusion in master. |
OK, so the choice is:
I prefer the second option for the following reasons:
|
Let's try option 2 then. |
I think we can close this now as outdated and of historical interest only. |
Now that v0.10.10.1 is on Hackage, we should start planning for the next releases.
Here are some random data points (and related questions) that we can take into account:
There are ~15 open PRs in various stages of completion that have been open for several months to years and are accumulating merge conflicts.
3 open PRs require a major version bump.
The last major version bump happened in 2012.
There are several issues that I consider bugs. (Feel free to relabel them though)
GHC 8.12.1 is currently planned to be released on 2020-09-25.
bytestring
release happen so it can still get into this GHC release?bytestring
release in time for this GHC release?The text was updated successfully, but these errors were encountered: