Term for legacy bug replication?
Out of idle curiosity, does anybody know of a term for replicating bugs in a new implementation of an old system so as to maintain backwards compatibility with old clients that rely on the buggy functionality? I'd be particularly interested if it included a connotation of having to reverse engineer the incorrect b开发者_运维问答ehavior so as to properly replicate what was not to spec.
I think this is covered by "backwards compatibility".
A good example from Joel Spolsky's famous "API Wars" post about the development of Windows 3.1:
The most impressive things to read on Raymond's weblog are the stories of the incredible efforts the Windows team has made over the years to support backwards compatibility.
[...]
I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
I always call that "crapwards compatibility".
Perhaps bug-for-bug-compatible.
I would settle for 'bug-compatible' : it is too difficult to get all bugs right.
精彩评论