Copy Based Design
From APIDesign
JaroslavTulach (Talk | contribs)
(New page: Plagiarism is the biggest source of innovation. Or do you disagree? Then think about the biggest invention you ever did. How was it discovered? Did it really fall down from heaven directly...)
Next diff →
Revision as of 21:33, 7 February 2009
Plagiarism is the biggest source of innovation. Or do you disagree? Then think about the biggest invention you ever did. How was it discovered? Did it really fall down from heaven directly to your mind or, if you try to remember more deeply, was it just an alternation or composition of something that you used to know before, just you managed to use that in new, unusual way? My claim is that almost all breakthroughs are based on alternative usages of something new.
One of my biggest invention is the NetBeansLayers system. At the time of its creation it was innovative. Nobody tried anything like that in such scale. However I have to admit that my inspiration was the way KDE stored its settings and how it merged the system ones with user ones. I just took the idea to the extreme and added a way to have declarative filesystems.
Plagiarism, know in the design word as Copy Based Design is common. In my opinion there is nothing bad on that. Even Issac Newton is said to discover his physical laws by laying under an apple tree and waiting for an apple to fall at his head. Are his laws copy of gravity just a copy of falling apple? Maybe. But there is nothing bad on that! Don't be afraid to copy. That can only boost the innovation. Don't forget to give credit where due, as open source projects do. But do not restrain yourself just because you are copying - Copy Based Design is good meta design pattern.
Split Off and Graft
The basic working style when practising Copy Based Design is to realize, notice an idea being used in some scenario. Isolate it, abstract it split it off and then take it and graft it into completely different tree. However not all plants provide the same base conditions and not all mounts result in the same trees.
Sometimes taking an idea from one place and mounting it to another context may yield horrible result. One of my favourite failures is the attempt to graft C input/output libraries into Java (more in API has to be Correct). Java is said to be like C, however the case of the I/O graft clearly shows that it is not as same as it might look.
Copy Based Design is source of almost all innovation. Just copying the design that works in one place, does not guarantee it will work in another one.