From: Charles W. <cwi...@us...> - 2010-11-19 15:00:05
|
On 11/19/2010 9:11 AM, Peter Rosin wrote: > Den 2010-11-19 14:31 skrev Keith Marshall: >> Indeed; likely impossible without public documentation of the requisite >> GUID. > > Would the output of the below program compiled with MSVC qualify? See this monster of a thread: http://thread.gmane.org/gmane.comp.gnu.mingw.devel/1718/focus=1763 ...which changed names here... http://thread.gmane.org/gmane.comp.gnu.mingw.devel/1718/focus=1763 And, in particular, this one: http://thread.gmane.org/gmane.comp.gnu.mingw.devel/1718/focus=1763 The key argument seems to be the following: reverse engineering to achieve interoperability is ok...but supplying a replacement libuuid.a to our users may not, actually, be "interoperability". libuuid.a is not part of the OS -- it's part of the SDK; worse, we're not "interoperating" with it -- we're replacing it. Now, I think (IANAL) that we're trying to achieve interoperability with the **OS** and doing that requires fully specifing the OS interfaces. Reverse engineering to determine these interfaces is a well-established and legal technique. IM-not-a-lawyer-O, the CSLID and various other IIDs *ARE* part of that interface, just as the values of enums are or the signature of functions are. IM-not-a-lawyer-O, reverse engineering to get the names AND values of compiler constants, enums, and IIDs is perfectly legal -- since the goal is to achieve interoperability with the Operating System. Just because we implement this interoperability using the C language and static libraries -- and that our choice of name, "libuuid.a" is the same as an SDK library that serves a similar purpose -- doesn't invalidate the legality of our (proposed) reverse engineering. IOW, "replacing" vs "interoperating" is a red herring, because it's linking apples and oranges: sure, we're "replacing" libuuid.a (the apple) but that doesn't matter, because we're trying to achieve interoperability with the Windows OS as a whole (the orange). Now, here's the rub: you can only reverse engineer something that you have a legal right to use in the first place. So, you have to agree to the Windows SDK EULA...which, if I recall correctly, explicitly disallows reverse engineering (unless allowed by local law). I can't find the text of the Windows SDK EULA online, but here's the relevant clause from the DirectX EULA: a. Limitations on Reverse Engineering, Decompilation and Disassembly. You may not reverse engineer, decompile, or disassemble the SOFTWARE PRODUCT, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation. ...and the applicable law expressly allows reverse engineering only to achieve interoperability. So the whole question boils down to "interoperability with what"? The rest of the SDK? Between MinGW's gcc and the SDK's libuuid.a? Or the generic "with the windows OS"? I have my opinion -- but I'm not a lawyer, and don't relish the idea of gambling on not being sued by Microsoft... -- Chuck |