Thanks, Dan, for your question.
Apologies for not laying out the rationale clearly in the blog post; I can see that that would have been really good to spell out more explicitly.
We definitely want to make those language changes and we do plan to use the language version directive in the future. And, as you mentioned, two years ago, we did think that we would be there at this point.
The main reasons why we decided to start with the vet checks are:
- Not everybody has switched to modules yet. We do know from surveys that the vast majority has (we estimate some 70-80%), but it is not the default mechanism. And even if everybody was using modules, introducing these changes would require .mod files to be adjusted to avoid breakages.
- We really don't want to break people's code (including .mod files) if we don't absolutely have to. The proposed changes are what I'd consider fine-tuning of the language, they are neither urgent nor very important (as in, say, fixing a security issue). The vet checks are a heads-up that change is coming soon; the grace period allows users to adjust their code as they see fit and on their schedule.
Generally, this last point of introducing breaking language changes gradually, starting with a vet check if at all possible, seems like a good process to follow. It is a gentle way to ease users into a change, on their time frame. It also allows us to back-step if a problem comes up that we couldn't foresee before testing the change across large amounts of code.
The overarching principle is that we do not want to break people's code - because that cost is huge. But if we do break code, we should do it with plenty of warning and time to adjust. For the proposed changes, there is no rush.
Hope that clarifies things.
- gri