Argh, I meant to post this yesterday, but I did indeed get distracted.
I think I am basically arguing for not changing the language in backwards incompatible ways, except for two cases:
- major version boundaries (and then, with restraint)
- when we believe the impact to be negligible
In particular, I think all the downsides that I outlined (tutorial rot etc) are mitigated if the impact has negligible impact. Basically, if nobody has written code using this particular thing, it’s probably not the subject of many tutorials either!
Now where I think reasonable people can easily differ is on the question of whether we are truly capable of judging that a change has negligible impact – and in particular one might argue that my criteria are not sufficient. I have some ideas for improving our ability to assess this (e.g., some kind of opt-in program for private repos, with an NDA if necessary) but I’d love to hear others.
In any case, in the end, as I wrote, I don’t expect this scenario to arise often. I think we’ll be able to avoid it by more aggressive use of beta testing and so forth, particularly for major features. I imagine that whenever it does, we’ll want to reassess both the importance of the change and the criteria we use to estimate its impact.
Yes, there is definitely risk if we appear to be making capricious changes. I think that this change is quite well-motivated in terms of improving the language, and I think we have adequate justification to say that overall we believed its impact to be very, very low. (And clearly, we can show that we considered the impact.) Still, there is risk that this estimate is misleading.