[support] phc obfuscate / drupal 7
MBR
mbr at arlsoft.com
Sun Dec 30 23:17:06 UTC 2012
On 12/30/2012 4:52 PM, Richard Damon wrote:
> On 12/30/12 3:19 AM, MBR wrote:
>> I thought I understood the GPL. But this issue started me thinking
>> about whether a proprietary Drupal module could be written and how it
>> could be done. It became clear that the legal ramifications of
>> interfacing with GPL'd code are more complex than I'd previously
>> realized.
>>
>> In traditional compiled code, linking object files together to form a
>> single executable made them part of the same work, and if any object
>> file was compiled from GPL'd source, then the source for all objects
>> had to be under GPL-compatible licenses. On the other hand, two
>> separate executables can be distributed in a collection of code (e.g.
>> on the same CD), and either one being GPL'd doesn't require the other
>> one to be GPL'd. To the best of my understanding, even if one of the
>> executables provides a service callable via an RPC interface and the
>> other executable calls it, either one being GPL'd doesn't require the
>> other one to be GPL'd. On the other hand, LISP's been around for a
>> long time, and it doesn't involve linking objects to create an
>> executable. I've always assumed that multiple LISP source files
>> running as the same instantiation of a program would have the same
>> GPL requirements as objects linked together into an executable. This
>> is the closest analog I can think of to the question of whether a
>> Drupal module can be made proprietary.
>>
>> But in the modern world, there are a number of other ways to allow a
>> function to be called besides simply linking the object file
>> containing the call with the object containing the function
>> definition or writing PHP functions in a Drupal module that get
>> called by PHP functions in the GPL'd Drupal core. The ways I can
>> think of off the top of my head are:
>>
>> * Write your function in C or C++ as an extension to the PHP
>> interpreter
>> * RPC on the local machine: call PHP's proc_open() to pipe data to
>> and from a separate executable
>> * RPC to a remote machine:
>> o use PHP's socket functions to send data to and from a server
>> anywhere on the Internet
>> o pass arguments and receive results via an HTTP GET or POST.
>> (This also involves socket calls, but not directly from the
>> PHP code.)
>> o pass arguments and receive results via something like
>> SOAP.(This also involves HTTP protocol and socket calls.)
>>
>> Each of these approaches would have different legal ramifications WRT
>> the GPL and would need to be analyzed separately. Writing a PHP
>> extension probably requires licensing the extension under a
>> GPL-compatible license because the PHP interpreter itself is GPL'd.
>> But what if it weren't? What if the question had to do with some
>> other language implemented as a proprietary interpreter -- call it
>> PLP for Proprietary Language Processor. Imagine someone writes an
>> application like Drupal in PLP, licenses that application under the
>> GPL, and that application calls an extension to the PLP interpreter.
>> Does the fact that the application is GPL-licensed mean that the
>> extension is required to be under a GPL-compatible license even
>> though the interpreter the extension is linked into is proprietary?
>>
>> Or in the RPC cases listed above, if the calling code is GPL'd, must
>> the called code be licensed under a GPL compatible license? And what
>> about in the other direction? If the called code is GPL'd, must the
>> calling code be licensed under a GPL compatible license? I think the
>> answer to both of these is "No", but either answer creates some
>> strange situations.
>>
>> And how do the answers to these questions change if we're talking
>> about GPL3 rather than GPL2?
>>
>> Mark Rosenthal
>>
>>
> The GPL license, and the documentation/FAQs around it, seem to admit
> that there can be grey areas in what constitutes a "program", and
> lists two extremes that are clear, two processes connected with a
> pipe or via exec is not "one program", while an executable module with
> custom code linked to a GPL'ed library is "one program". Drupal and
> PHP method of combining scripts together seems fairly clear to fall
> under the "one program" domain, but I can imagine someone trying to
> argue against it (and as the FAQ says, this might end up needing to be
> decided in a court of law). It is possible that a Drupal site might
> connect to some code in other ways and not fall under this rule, for
> example, I have a Drupal module that imbeds a dynamic image on a page.
> The file called that display the image uses no Drupal code, so even
> though the file is "inside" (file system wise) a Drupal module, I
> could technically make that code non-GPLed if/when I distribute that
> code. Similarly, I believe that an RPC call is of the same type of
> connection that the license allows without having the GPL attach, so
> that would seem to work.
>
> My initial comments weren't so much focused on the legal aspects of
> distributing an obfuscated module, but the technical problems with it.
> Because of the way Drupal treats functions with names like
> module_foo(), any obfuscation will need to be "Drupal aware", and
> obfuscate the terms module and foo separately, and convert ALL uses of
> module (including file names and most usages of 'module') the same and
> all uses of foo the same (and if foo is actually foo_bar, the same
> with each part).
>
> Now, if you do this, you need to decide if you are going to obfuscate
> the full install (which will break when an update to core or any
> modules/theme occurs, requiring a new obfuscated distribution to be
> made), of just the a few modules, in which case the obfuscator needs
> to figure which "foo"s can't be changed (which will be a lot), and
> likely you end up with a fairly weak obfuscation.
>
> --
> Richard Damon
Thanks Richard. As I tried to explain in my initial post, my posting
this was not because I plan to do any such thing or because I support
the original poster's intent. It's about going through the mental
exercise and coming to realize that it's not as straightforward as I
initially thought.
Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/support/attachments/20121230/e3229fdf/attachment-0001.html
More information about the support
mailing list