Const is dead. Long live Const!
After Walter declared the current const empire dead, the discussion has been about partially undressing the Christmas Tree and redecorating it "better". Nice, but no cigar.
Experience here has shown (*1) that most of us participate in discussions _as if they understand what's going on_. (*2) Since the parts one doesn't understand are different than the parts somebody else understands, both of them, and the audience too, may be lead to the impression that the entire discussion is based on facts, knowledge, and insight.
While this NG is not anymore /the/ place of language development, our contribution still is invaluable. Now our role is more in trying to mediate between the actual D users (ourselves, plus all those tens of thousands of D users who don't eve read this NG), and the core (that is, Walter, Andrei, etc.).
Our job is increasingly becoming watching that the solutions handed to us from above do stay within reason, within graspability, and are actually usable in real life and actual application development, by mortals. (There already are enough cool, respected, and awed languages that nobody uses.) (*3)
Today we need to simply start with a clean slate with const.
We need to go back to basics, to the actual needs that we want const to cater for.
Being such a fundamental and pervasive facet of contemporary programming, we should prioritise the issue /in the right way/. For example, it is becoming evident that the keywords used for the different flavors of const simply don't cut it. We must have words that instatnly convey their meaning, even to those who don't remember the entire documentation by heart. An issue as big as const has the /right/ to new keywords. And we, as programmers and D users, have the /right/ to have them proper, intuitive, and easy to remember.
We should also step back and give another try at enumerating (and sorting) the primary issues we are trying to achieve with const. Here again, every programmer and his granny seem to /really and fully/ know the what and the why. (*4) Before we can go further, we really need to be on the same board.
Likewise, we've forgotten to divide and conquer the problem. For example, pure vs. non-pure functions should be discussed separately from all the in/out/inout/ref argument issues. And constness should be generally understood from all the relevant viewpoints (local, global, relative, etc.) before any attempt at formulating them in the language is attempted. (*5)
*1 Two years ago, there was a huge discussion about UTF. (September to November) When one now reviews that discussion, it becomes evident, first of all, how slowly new concepts spread in the community. And second, how various participants stated opinion upon opinion as if they were actual facts. Compared to the const issue, UTF is a really trivial thing, both in itself and in its ramifications. For a community that dares to tackle constness in its entirety, the UTF issue should have been fully understood within 2 weeks by everyone.
In that discussion I made a remark that the discussion should be reviewed after a couple of years. Insight into the participants, the overall dymamics of NG information exchange, and the [in]efficiency of insight transfer glare one right up in the face there.
*2 Some of us deliberately appear like we really understood the subject more fully than we do. But others simply don't see that they don't understand, so they honestly believe they do. And those few who openly say the don't understand, really are the heroes.
*3 We've already seen this happen with templates. They got all grand and "hi falutin'", and got outside the reach of 90% of D users. That's not acceptable, no matter how good press it brings.
*4 It's like asking everybody on the street what the word "respect" means. You're liable to get as many different answers as the folks you asked. Bush, Blair, the Dalai Lama, or Nelson Mandela sure would give you different answers to what "democracy" is.
*5 Sometimes I sorely miss the BBS bulletin boards. They were strictly sequential (non-threaded), and a good moderator could easily see to it that the common discussion got one issue settled for good before tackling the next one. Some things just have to be sorted out before there's any use in discussing others.