1 |
On Wednesday, August 19, 2015 10:53:39 PM Rich Freeman wrote: |
2 |
> On Wed, Aug 19, 2015 at 10:37 PM, Fernando Rodriguez |
3 |
> <frodriguez.developer@×××××××.com> wrote: |
4 |
> > |
5 |
> > Try a different exercise. Go buy a Quran. Now use it as a cryptographic key |
6 |
to |
7 |
> > encrypt an email. Is the email now a derived work? That's no a perfect |
8 |
analogy |
9 |
> > but it's more like what happens when you dynamic link a library. |
10 |
> |
11 |
> But that isn't what happens with dynamic linking. |
12 |
> |
13 |
> In the paragraph below, insert word 1 after the 3rd word in place of |
14 |
> the xx, and insert word 2 after the 9th word in place of the xx. |
15 |
> |
16 |
> This is an xx of dynamic linking. I have a xx where various elements |
17 |
> are replaced with others. |
18 |
> |
19 |
> Somebody else will tell you next week what word 1 and word 2 are. He |
20 |
> owns the copyright on those words, but he will refer to them as word 1 |
21 |
> and word 2. |
22 |
> |
23 |
> Dynamic linking doesn't render code unreadable the way encryption |
24 |
> does. It just means that not all of the code is actually present. |
25 |
> All the original code written by the author of the object file is |
26 |
> actually present, and in completely executable form except where it |
27 |
> accesses memory that isn't a part of the object file. You can |
28 |
> actually execute parts of an object file as a result. |
29 |
|
30 |
The point I was trying to make is that just like the email would be useless |
31 |
unless I have a Quran so will a program be useless without the library it |
32 |
depends on. I did say it wasn't a very good analogy. |
33 |
|
34 |
> |
35 |
> > It's not the symbols that are copyrighted, it's the code that those |
36 |
symbols |
37 |
> > load into your programs address space. |
38 |
> |
39 |
> The symbols don't load anything. The linker loads the external code |
40 |
> into RAM, and inserts its address into your own code where it |
41 |
> references the exported symbols. In the example above my instructions |
42 |
> don't actually do anything. They just tell you what to do when you |
43 |
> find out what words 1 and 2 are. |
44 |
|
45 |
The linker/loader doesn't load anything either, it just tells the kernel to |
46 |
load it...the kernel doesn't load it either, it tells the cpu to do it and so |
47 |
on. The point is that the symbols are instructions too, they're just not |
48 |
executed by the processor but interpreted by the loader. It all starts with |
49 |
the developer's decision to link against the library in order to take |
50 |
advantage of _existing works_. |
51 |
|
52 |
> > Here's a better example, see the Mona Lisa example in wikipedia[1]. Now, |
53 |
> > suppose I write a small program that downloads a Mona Lisa picture of the |
54 |
> > internet and displays it with a mustache overlaid? Is my program now a |
55 |
> > derivative work of the Mona Lisa? That's *exactly* what happens when you |
56 |
> > dynamic link to a library. |
57 |
> |
58 |
> That program would not be a derivative work of the Mona Lisa. The |
59 |
> picture it displays would be a derivative work of the Mona Lisa. The |
60 |
> analogy isn't perfect, but it is decent. |
61 |
> |
62 |
> Executing the program might or might not be a violation of copyright, |
63 |
> but distributing the program itself would not be. At most you could |
64 |
> argue it is inducing copyright violation, which is a horrible legal |
65 |
> argument, but admittedly one that US courts have seemed to embrace. |
66 |
> Go Mercia! |
67 |
|
68 |
Yet just about everyone would agree that if I fireup gimp and edit the picture |
69 |
and save it as a jpg would be a derived work. But for an end user there's no |
70 |
difference. The difference is only in the implementation. Both files contain |
71 |
binary code, one is interpreted by the cpu the other by an image viewer. One |
72 |
is statically linked to the original work the other dynamically. |
73 |
|
74 |
If this does goes to court a judge will have to determine if the letter of the |
75 |
law still serves it's intended purpose if it doesn't (and it obviously |
76 |
doesn't) then it's obsolete and the loophole needs to be patched. |
77 |
|
78 |
-- |
79 |
Fernando Rodriguez |