Thanks for this enlightening contribution!
This just reaffirms my former conviction that nothing is really free, and
I'd much rather spend my money on a good commercial product (and therebye
support the people who deserve to have their development efforts paid as
well as be entitled to professional product support*) than on a plethora of
lawyers to clarify whether something dubbed as "free" really *is* free
(which is also a moral issue, of course; since I expect my customers to
appreciate the value of my development efforts by paying for the product,
how could I justify *not* paying those whose work I use as ground work for
my product?).
So if anyone has pointers to commercial variations of Racket or Scheme to be
used as building and deployment platforms for my commercial software (Chez
Scheme seems to have ceased out of existence; I downloaded the trial version
and found that it doesn't run on XP anymore and therefore most probably not
on later versions of Windows), I'd be glad to hear about them. In the
meantime, I'll probably stick to what I'm doing right now - use Racket for
prototyping, testing, internal utilties etc. and code the production level
software in plain ol' C/C++. Bummer because I know by now that coding in
Scheme/Racket WILL produce sturdier, smaller and generally better software
even in the field, but apparently there world ain't ready for it yet.
Thanks again!
*Don't get me wrong - the support on this mailing list is exceptionally
good, but it's all voluntary, and in a commercial environment, it is sort of
dangerous to rely on voluntary support no matter how good the quality.
----- Original Message -----
From: "Brian Mastenbrook" <br...@mastenbrook.net>
To: <users@racket-lang.org>
Sent: Friday, April 06, 2012 9:22 PM
Subject: Re: [racket] Clarification on licensing of Racket code?...
On 04/06/2012 03:06 AM, Eli Barzilay wrote:
No, that's a roughly description of GPL. With the LGPL you're free to
do whatever you want to do -- you're only required to make public any
patches you did to the code you're using (ie, fixes and extensions to
racket itself), but your own code is yours. (And Racket is using the
LGPL to *encourage* such uses.)
No; the straightforward license you just described is the MPL, not the
LGPL. This is a very common and frustrating misconception. The LGPL says a
lot of very complicated things which require a lawyer to interpret
correctly.
(Disclaimer: I'm not a lawyer, but in a previous life I worked with
lawyers to set company-wide processes and create training on how to comply
with open source licenses for a Fortune 100 technology company.)
In the case of a Racket-generated executable, you must follow the
requirements of section 6 of the LGPL 2.1, which says that the user must
be able to relink the executable to a modified version of Racket. This is
because the exception in section 5 only applies if you use "numerical
parameters, data structure layouts and accessors, and small macros and
small inline functions (ten lines or less in length)" from the LGPL'ed
library, and any Racket of nontrivial complexity will probably involve a
macro whose implementation happens to be longer than 10 lines of source
code.
Section six says that you need to provide either object files which can be
linked with a modified library, or use a "suitable shared library
mechanism" which allows "interface-compatible" versions of the library to
be linked. The difficulty in my mind comes in interpreting what
"interface-compatible" means, and how to separate out the portions of the
object file that are actually portions of the library (since they are the
result of expanding a Racket macro). Other projects have either added a
blanket exception for these kinds of cases [*], but adding such an
exception for Racket would be tantamount to relicensing it.
You're in the clear if you include the source to your proprietary program
with the binary, and the source can still be licensed under the terms of
your choice. If you don't want to do so, talk to a lawyer.
[*]: The "LLGPL", a preamble to the LGPL used by a number of CL projects,
is an example of this: http://opensource.franz.com/preamble.html . But
instead of adding a preamble that contains additional conditions or terms,
I'd recommend using the MPL instead. MPL v2.0 when used without the
"incompatible with secondary licenses" option is an extensively reviewed,
well-recognized and very straightforward license which is also compatible
with the LGPL and the GPL via an explicit conversion clause.
--
Brian Mastenbrook
br...@mastenbrook.net
http://brian.mastenbrook.net/
____________________
Racket Users list:
http://lists.racket-lang.org/users
____________________
Racket Users list:
http://lists.racket-lang.org/users