H.G.Muller wrote:The code for the new level command would either be wrong, or it could handle the old level command correctly, as the old level is just a special case of the new one.
It *could become* a special case. But it is not necessary to use the new level command for that "special case", it is only needed if the user requests the new time control feature and the involved engines understand it.
The old level command is suspect anyway, as it might not be able to handle level commands during the game.
This has not been a requirement at the time of its creation (nor am I really sure that it is today), so why do you call it "suspect"? It has been specified and implemented according to the requirements that were valid at that time.
Allowing people to keep their old code will likely cause more bugs than forcing them to think about how to re-write it.
A very questionable approach. That "old code" handles the "old" level command, and in general there will be nothing wrong with it, except for the minor problem that you dislike the "old" level command. Adding new code to handle the "new" level command (here: "mlevel") would not affect the "old" level implementation at all, so why should this cause more bugs?
I am immediately with you when we are talking about usefulness of "refactoring" in software development. Yes, it *is* useful in many cases, under certain circumstances, and I practice it frequently myself. But we have a different case here: it is not *one* software project controlled by *one* central instance or a group of developers, but *some hundreds* of engine developers have working engines on the "market", and we are thinking about adding a new feature to a common interface that they are all using. So why should we be so arrogant forcing all of them to change their working code if they want to support that feature?
Also talking about these concepts will be simplified considerably by using two different command names "level" and "mlevel" instead of having to say "old level command" and "new level command". The "old" one will persist forever since you *must* continue to support engines that do not implement the new feature, including those that will not be changed anymore for arbitrary reasons. So you could not argue that it were only a matter of time until everyone uses the "new" command.
Besides, it is important to have a simple, unambiguous wording that everyone is able to understand quickly, and that is only the case when having two different names.
Hypothetically, I could be convinced by good arguments. But so far I did not recognize any. Arguments like "The original WB protocol was clearly designed in the spirit of ..." is really nothing more than a totally unfounded personal opinion.
It is a proven fact, not a personal opinion, that up to now (or - to be safe - let's say, in the "classical" line) WB sends "level" only once at startup of a game. From this you can definitely derive the "spirit" of the original WB protocol. If the intention had been to also send intra-game level commands, then why has this never been done?
As to your "not recognizing any good arguments". For several days I'm trying to convince you now. Do you intend to say that nothing of what I wrote was a "good argument" for you?
And I tend to discard personal opinions if they happen not to coincide with my own.
... which explains quite a lot
Sven