To communicate a proposal to users, a specification is also needed. Telling users to read the code isn't going to work. A specification is needed to determine what the proposal is, and what it is not. It is also used to judge whether the implementation is correct or not.