[Mono-dev] Off topic: Reflection and Licensing question
Michael B. Trausch
mbt at zest.trausch.us
Wed Apr 29 15:50:29 EDT 2009
On Wed, 29 Apr 2009 15:52:03 -0300
Ernesto <equistango at gmail.com> wrote:
> I've been googling for information about reflection and licenses like
> the GPL, that "prohibit" linking from code with a different license
> and found nothing.
> Is reflection considered linking? Or is it considered a form of
> abstract communication such as permitted by the GPL? What would be
> the legality of using a GPLd module through reflection in a closed
> source or BSD application?
The idea of reflection in a system makes difficult to determine where
the fine line is. That said, my _personal_ belief is that using
reflection does not constitute linking. Here is my justification for
* Reflection can take place on an arbitrary file. Linking (even
dynamic linking) isn't arbitrary, it's determined at compile time
with some run-time assistance.
* If you reflect into an assembly which is otherwise unknown to your
application and isn't part of the application's dependencies, you
can call into it, and you can get results from it, and you can
instantiate objects from it, but you don't have to, and you can
replace that file with any other file that implements a compatible
interface. You can do some of that (but not all of it) with a
library assembly that is required by your application at run-time;
particularly if the assembly that you're "linking" to is strong
named, and you're linking to the strong name.
* Reflection is akin to Linux's dlopen()/dlsym()/dlclose() or Win32's
LoadLibrary()/GetProcAddress() in that it enables you to use
any arbitrary library and create an extension or plugin interface
to your application should you decide to go that route. If your
user has a GPL module that they'd like to use, and your application
is proprietary, the user's use of their GPL'd plugin to your
proprietary application does not automatically mean that the GPL
applies to your code, too.
All this said, IANAL. But, that's my belief and justification for it.
Also, I'd recommend that if you have a need to interface with MySQL in
a proprietary application that you not use the MySQL provided
drivers/interfaces and instead create your own module/library/interface
that speaks the MySQL wire-line protocol (or enough of it to meet your
needs) and maybe provide it under the terms of the BSD license or
something more amenable to client-side programming requirements for
proprietary applications. That's just my 2¢, though.
Don't fix bugs later; fix them now.
--- Steve Maguire
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 197 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20090429/1ff3480a/attachment.bin
More information about the Mono-devel-list