3 ms·
Another way to look at this is: what would a judge believe? Software developers independently come up with the same solution to common problems all the time!
by BaseballPhysics 5y ago
Another way to look at this is: what would a judge believe?
Software developers independently come up with the same solution to common problems all the time! We even have names for it: algorithms, design patterns, etc.
If the same person both reverse engineers an existing implementation, and then writes a new one, then that kind of incidental duplication could look like copyright infringement, and the only defense is the developer saying they didn't do it. That's pretty tough to prove.
A clean-room approach solves this problem. Parallel re-invention of the same solution can easily be proven because the developer genuinely never saw the original implementation in the first place, and a lawyer examined the reverse engineered specification to ensure no copyrighted material was contained therein.
- asdff 5y agoSo I'm still struggling to get this. Why can't you just directly design and implement sans copywrited material? How is that different than designing without copywrited material then having someone else an employee B do the implementation without the copywrited material. Does this method somehow let you use copywrited material? How would engineer B even know about the copywrited material in that case if they are supposedly 'blind'?
- BaseballPhysics 5y agoLet's use a specific(ish) example. Suppose I've developed an API that has a few function calls: void foo(int) int bar(char **) char *baz(float) I have then written a bunch of code that defines my specific implementation of 'foo', 'bar', and 'baz'. That specific implementation--my specific code--is subject to copyright and no one is allowed to copy my code and use it without my express permission. And that includes obvious things like copying the code and obfuscating what you did via renaming of variables and so forth. But suppose you want to implement your own compatible version of that API so that someone else can use your library instead of mine. To create your version you decompile the code and you see that the API is composed of those three functions 'foo', 'bar', and baz'. You then read the decompiled versions of those functions and you see what they're logically doing. You absolutely can then go away and write your own version of this API! As long as you don't literally take copies of my code and just go write 'foo', 'bar', and 'baz' in a way that semantically does the same thing, then you're safe! However, suppose 'bar' is a simple in-place sort, and you and I both implement a standard quicksort to do the job. Sure, you wrote yours totally independently of me, but I could still go to a judge and claim that, no, you copied my version! Your copy of 'bar' is in fact a copyright violation because you just stole my code! How would you prove otherwise? So instead, what we do is get a third party. Their job is to read the decompiled versions of 'foo', 'bar', and 'baz', and then write down a totally independent specification that describes how those functions work, but doesn't contain any of the code. To be extra safe, we even get a lawyer to read the resulting specification and certify that, indeed, no copyrighted code is present. Then we hand you the specification, and you use that specification to implement 'foo', 'bar', and 'baz'. Now, the specification might say 'bar is an in-place sorting function', and so you go ahead and implement your own version of quicksort. But now, when I claim you copied my code, you can go to the judge and say "Au contraire! I worked strictly from this specification, here, that my lawyer has verified contains no copyrighted code. The only person that actually read the code is that guy over there points dramatically to the audience and he didn't write any of the code." This provides a much much stronger defense that your implementation cannot possibly contain illegally duplicated, copyrighted code, and that any similarities are entirely incidental. Yes, this whole thing probably seems like a crazy dog and pony show, but when you're a little upstart company like Compaq going up against the behemoth that is IBM, you can be damn sure you're gonna dot all your i's and cross all your t's, because they will send an army of lawyers your way, and it won't be pleasant.
- ghaff 5y agoBasically they are documenting non-copyrightable parts of the interface. If you put these numbers in these registers and call this interrupt the result is foo. You need to write a routine to do that but we're not going to tell you what the IBM code did to produce foo.