Linking and Derivative Works (2004)
rosenlaw.com
rosenlaw.com
RMS was very unhappy when I wrote that license, repeatedly predicting that "this will be the end of free software", but he used to say that to me about all sorts of things I did so I ignored it. Eventually he ran to the front of the parade.
The irony is that none of us predicted the network service loophole. By the time the FSF began we'd all been writing network services for years, and depended on them daily, so we should have been able to see the problem.
Using a dynamic language with a REPL and FFI, you can show an interactive demo consisting of loading the library, declaring some API blurbs and exploring the functions and their results.
The interactive session does not become a derived work of the library any more than the life of the reader of a novel becomes a derived work of its story.
The only way the program can become a derived work of the dynamic library is if it incorporates some inline code (coming from some accompanying declarative materials which are part of the library). It's a derived work of those declarations, not of the library per se.
Even static linking might not create derivative works. The method of linking is just a technical detail that is not relevant.
[1] https://joinup.ec.europa.eu/collection/eupl/matrix-eupl-comp...
We could write a linker (or modify one) such that it provides an execution service: it loads specified object files and archives into memory, resolves them and then without dumping a program image, just executes it. Then static linking effectively becomes a form of dynamic.
I fear that is only a limitation of our current tech, rather than a bedrock foundation of our law: https://www.youtube.com/watch?v=IFe9wiDfb0E (see around 2:00, though the whole video is necessary for context)