Copy Based Design

From APIDesign

(Difference between revisions)
Jump to: navigation, search
(Split Off and Graft)
(Split Off and Graft)
Line 11: Line 11:
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 give the same results.
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 give the same results.
-
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|API has to be Correct]]). [[Java]] is said to be like [[C]], however the [[API_has_to_be_Correct|case of the I/O graft]] clearly shows that it is not as same as it might look at the first sight. Also the case of or the [[Java Monitor|monitor theft]] provides another sign that things are not necessarily as they appear to be.
+
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|API has to be Correct]]). [[Java]] is said to be like [[C]], however the [[API_has_to_be_Correct|case of the I/O graft]] clearly shows that it is not as same as it might look at the first sight. Also the case of or the [[Java Monitor|monitor theft]] provides another sign that copied duplicates are not necessarily as they perfect as they appear to be.
-
[[Copy Based Design]] is source of almost all innovation. But remember that just copying the design that works in one place, does not guarantee it will work in another one.
+
Still, [[Copy Based Design]] is source of almost all innovation. But remember that just copying the design that works in one place, does not guarantee it will work in another one.
[[Category:APIDesignPatterns:Meta]]
[[Category:APIDesignPatterns:Meta]]

Revision as of 10:43, 12 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? Only used in new, unusual way? My claim is that almost all breakthroughs are based on alternative usages of something known.

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 various settings and how it merged the global ones with user private ones. I just took the idea to the extreme and added a way to have declarative filesystems.

Plagiarism, know in the design world 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. Would his laws of gravity be flawed if they were just a copy of apple falling? Not at all, they are still useful and innovative.

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 give the same results.

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 at the first sight. Also the case of or the monitor theft provides another sign that copied duplicates are not necessarily as they perfect as they appear to be.

Still, Copy Based Design is source of almost all innovation. But remember that just copying the design that works in one place, does not guarantee it will work in another one.

Personal tools
buy