Swift Evolution is the perfect place for reaching this goal.
Yes, the Swift compiler has many convenience features. The intent behind them is almost always the same: let the user build a self-consistent mental model of a given Swift feature, because this is a precondition for programmer productivity. This is UX applied to language design.
In the domain of optionals, for example, such conveniences are quite abundant. Without them, the language would be more pure and simple, but way less usable. Imagine if you could not, for example, feed a function that accept optionals with a non-optional value. You'd have to write label.text = .some("meh")
.
Now, there is one subtlety, and a few cracks.
The subtlety is that there is not a single "self-consistent mental model" for a given Swift feature. There are many. This is because progressive disclosure, a well-entrenched design goal of Swift, lets a user enter in the language and build, step after step, on his own pace, a more complete knowledge of the language. It is a trial-and-error process, as all learning processes.
Unfortunately, there are the cracks: all the inconsistencies and inconveniences created by both missing patches, and ill-advised conveniences. Those cracks do harm. They don't help the Swift programmer in his trial-and-error learning process, on the contrary! It's difficult to build in one's mind a consistent mental model of a feature when surprising exceptions appear here and there
. It is difficult for a very precise reason: the user is forced to look at a deeper level in order to figure out the reason for the experienced inconsistency. The user can no longer learn at his own pace: those cracks break progressive disclosure.
(Side note: by reading and contributing to those forums, we have all opted in for a Swift crash course that lets us look at the last pages of the book. It is to be expected that some of us get confused sometimes. I regularly am. But the benefits overweigh the costs, at least for me.)
This thread is about a forgotten patch that aims at aligning the actual language with one of the mental models of "leading dot syntax". SE-230 is a fix for an ill-advised convenience. Things get better 