I would like more evidence that we were more stable at a previous point in time. You can’t really draw a conclusion from all of the events you’ve pointed out since April without some evidence of what the baseline was prior to that.
My belief, in general, is that the stabilization process has not changed, and, per feature, we have never had better stability than we do now. I don’t think we have any good evidence either way, but I just think that its exceedingly unlikely we were doing better in 2015 than we are now, given that we had less users, a smaller team, and less experience.
Also, some of your examples are unfair. Stabilizing and then unstabilizing a feature before it hits stable is the stabilization process working, not something to be concerned about.
There are two things that I would contend have changed, causing a feeling of less stability:
-
We are stabilizing more features than we were before. This is the result of a few things: first, we have more bandwidth to stabilize features than we’ve ever had. Second, shipping more features is the core of the roadmap for 2018. If every feature we add to stable has an X% chance of having a bug in it, shipping 10x more features means 10x more bugs in the features we shipped to stable. This does not seem like a reason to ship less features to me, unless we don’t have the capacity to fix those bugs, but we’ve been fixing them promptly.
-
We are making more point releases than we were before. This point is more interesting, and I want to dwell on it more, so it’ll be the subject of the rest of my comment.
I think Ashley Williams summed up the most obvious, and commonly held, explanation for why we have made so many point releases lately:
We are probably not getting as many eyes on nightly as we want to. As a result, we have seen an uptick in point releases.
I don’t think there is any good evidence to believe that the stabilization process being weaker is the reason we have seen more point releases! As I argued previously, I don’t know of any direct evidence that our stabilization process has gotten weaker. I think there is good evidence that the reason we are making more point releases is that our release process has gotten better, rather than that our stabilization process has gotten worse.
First, there is good reason to think our release process has gotten better. Shortly before we started making many point releases, we organized a release team and an infrastructure team. I would expect having these teams has significantly improved our release process.
Second, I think there is good evidence that our standard for making a point release has changed a lot. Contrasting two bugs, one from 1.15.1 and one from 1.27.1, is instructive I think.
-
1.15.1: IntoIter::as_mut_slice borrows &self. This is a clear and unambiguous soundness bug in a newly stabilized API; the API is just wrong. And yet multiple core team members argued that it wasn’t worth the effort to make a point release for it. We ultimately did, but its hard to imagine even considering the question today. This is exactly what point releases are for.
-
1.27.1: We fixed an ICE as a part of this point release related to match ergonomics. The release notes interestingly say it was backported because it could be related to a soundness hole. I haven’t seen a soundness hole demonstrated anywhere related to this ICE. We’re now releasing patch releases with backports of potential soundness fixes.
What we’ve seen is a huge shift in our capacity to make point releases, rather than a shift in the necessity of making point releases. This doesn’t seem to me like a cause for concern.
That said, I do think our stabilization process could be improved! I believe, as I said earlier, that it has never been better, but that doesn’t mean it’s good enough. As other parts of our process have improved, they have revealed the long dormant inadequacy of this part of our process.
But seeing opportunity to improve is not the same as seeing cause for concern.
I’d be excited to see improvements to our stabilization process, which needs no pretense that we have somehow gone astray.