Re: Why wasn't it in by design?
Why the downvote here?
Here is an example - imagine there is a public specification that says how some software should act. Imagine it has a part, marked optional, that if the function Wibble() is called, the software may produce the output "wobble".
Imagine then, that I am writing something that calls software produced to this specification. I don't know what specific implementation I will be calling. What will happen if my software calls on the the unknown implementation to wibble?
Will it wobble, or will it fall over?
In all seriousness though, optional parts to public specifications mean that the functionality specified by them cannot be trusted to exist, or be fully implemented, so cannot be reliably consumed, making them pointless. I know there are cases where this may be needed, in which case producers have to have a mechanism for publishing their capabilities. In general, though, when you're talking about an open standard, optional parts are bad, because people, who usually get paid for their time, aren't going to bother with them. Unless they are necessary. In which case, why are they optional, and are they properly specified?