The doctrine “Don’t Repeat Yourself” (DRY), promulgated by Andy Hunt and Dave Thomas in The pragmatic programmer, suggests that copy-and-paste as a program development technique is wrong. An obvious preferred approach would be to determine the commonalities to be used where the copying and pasting are to take place, and to create a new abstraction rather than a repetition—further, the common practice of refactoring attempts, among other things, to remove code that has been copied and pasted.
However, Jablonski argues that copying and pasting are going to occur (abstractions can be expensive, and they can obscure simple structure), so a pragmatic approach to dealing with this practice is needed. The paper proposes tracking copying and pasting as they occur in a development context (rather than detecting afterward that they have occurred), and extracting rules embodying the intent of the code being considered. A tool is being developed to support this approach, and the first part of the tool is being prototyped. Presumably, results will be published as they become available.