Please note: this is not an attempt to clean-room reverse engineer Skype, or even to reverse engineer and create an open-source replacement. As shown with things like WINE, Microsoft does not (and probably cannot) take them down.
No, that's not what "Skype Open Source" project is. This is a confusingly misnamed attempt to attach code to patched copies of copyrighted official Skype clients.
Microsoft is not overreaching here; this is what anyone would expect with a lame project like this. I'd love if someone really created an open-source Skype client, but this is not a project to do that.
That function right there (and the vast majority of the rest of the file) is a straight decompiled version from Skype. You even use the register names and comment with addresses from the binary.
Having spent a lot of time reversing apps myself, this is a straight copyright violation. Your code is a directly derivative work from Skype.
At least 3/4 of those 4000 lines is directly copied from Skype, and that's just one file. I don't think that's small enough to not matter; anyway, if it really was so small, it should easily have been rewritten with original code.
No that's a simplistic approach. Both matter, for example one volume of the Encyclopedia Britannica is a very small portion of the overall work, but it cannot be freely copied. Likewise if you write a book a million pages long, copying entire chapters does not suddenly become ok.
It is my understanding that "the relevant copyrighted work" in the Encyclopedia Britannica example is likely to be the article rather than the entire encyclopedia.
How exactly is one supposed to make a clean-room reverse engineering in the absence of any documentation and sophisticated obfuscation on Skype's part ?
Usually, that would mean reverse engineering to create specifications and then getting the product implemented by some one else using the specification which would then be termed as clean.
Yes, and reverse engineering to create specifications is done... how ? It requires examination of the only currently working implementation that we have.
The term "clean room" has a well established meaning you probably aren't aware of, I refer you to [1], it might clear up what the original reply was referring to.
I am well aware of the joke that is the clean-room process. Note that it supposes that the first team has access to the specification, source code, or any IP-encumbered indication about how the software in question works. In the case of Skype, the only public information we have is the binary.
Note that it supposes that the first team has access to the specification, source code, or any IP-encumbered indication about how the software in question works
No it doesn't.
The Wikipeda link[1] mentions the original IBM PC clean room implementation by Columbia Data Products.
It doesn't have the complete story of that, but from memory the way it worked was CDP had one team documenting how the BIOS responded to inputs, and then a totally independent team reimplementing that behaviour.
Most clean room implementation don't have access to a specification, let alone source code.
Interesetingly enough, if you read on about more current cases it mentions Sony vs Connectix, which I thought Connectix lost, but actually the ruling was overturned on appeal.
From the ruling:
"Some works are closer to the core of intended copyright protection than others. Sony's BIOS lay at a distance from the core because it contains unprotected aspects that cannot be examined without copying. The court of appeal therefore accorded it a lower degree of protection than more traditional literary works."
Thus one could try to make the same case for Skype.
>Note that it supposes that the first team has access to the specification, source code, or any IP-encumbered indication about how the software in question works. In the case of Skype, the only public information we have is the binary.
So what? That's not a valid excuse to distribute modified binaries to the public. If the "first" team wants to look at binaries to do their documentation, they can download the official Skype client from skype.com. Why do they need to download a hacked binary from Github?
Well this decisions effectively forbids the "team A" of a clean room process to operate in the regular open source mode of distributed and public development.
I understand the rationale behind it, I think it is wrong and has bad implications for the future.
From my understanding, you are allowed to decompile and inspect the released binaries, as well as intercept and analyze all inbound/outbound data, as long as you aren't modifying the running binary in any fashion. Things like debuggers are commonly used for this goal, as are tools like wireshark for analyzing the traffic. Once you create a specification based on your analysis, someone can create a clean-room implementation from that spec.
Yes it is, but thats where other solutions need to be met.... say a script that de-obfuscates a vanilla binary package so the output is created on the users machine vs being distributed as such. You can distribute the script and leave compliance to the end user.
Yes, copyright law is complicated. You need to make sure the script used to create a deobfuscated binary isn't a derived work from the original binary, whatever that means (that's where consulting with a lawyer can help).
Is a patch a derived work from the file it applies to ? It is impossible to produce the patch without using the original file, yet intuitively, I would say no.
Seems like you could do it in theory by observing the protocol in action. Set up two machines a-skyping, sniff all the packets, think real hard, write code that interoperates with Skype clients.
For example, there is no reverse engineered libraries for Facetime and iOS API. If you use Apple's libraries, they can come after you for copyright infringement.
Cappuccino is exactly such a reverse engineered library, as is gnu step. For that matter Linux is a reverse engineered drop in replacement for the unix kernel.
I'm not familiar enough with Cappuccino to comment, but GNU Step was an independent implementation of the published OpenStep interfaces. That isn't reverse engineering.
Linux is an independent implementation of the Posix interfaces.
You can reverse engineer anything that you can reverse engineer. "Supposed" really doesn't come into it. If you buy a copy of osx and reverse engineer some libraries, then publish a description of their behaviour, so what?
That's fine, but if you publish the modified binaries of OS X's libraries with hacks to make them work in Linux along with the description, you will be in legal hot water.
It's hard to tell. The author is clearly not too fluent with English, so it's difficult to tell exactly what he's saying. It sounds like it's based on a decompiled and recompiled version of the core Skype kernel dlls and not a clean room implementation.
No, that's not what "Skype Open Source" project is. This is a confusingly misnamed attempt to attach code to patched copies of copyrighted official Skype clients.
Microsoft is not overreaching here; this is what anyone would expect with a lame project like this. I'd love if someone really created an open-source Skype client, but this is not a project to do that.