And still we wait to learn if LGPL is:
1) Exactly the same as GPL when applied to Java
or
2) Useless when applied to Java, allowing us Java coders to utterly circumvent it.
I think #2. Here’s my reasoning:
First we look at section 5 of the LGPL. This mainly states that as long we don’t make an ‘Execuitable’, then we can link to that work under our own licence. Great. Java rarely has executables, so most of that section is void and unenforcable.
*********
5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a “work that uses the Library”. Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
However, linking a “work that uses the Library” with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a “work that uses the library”. The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
When a “work that uses the Library” uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. “
******
5 does however go on to say:
********
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
*********
Well. This is nonsense to me. WTF is an Object file? never heard of one [the C part of my thinking is currently bound and gagged and listening to barry manilow]. Again, no executables. So really I’m having a hard time understanding what they’re going on about here. Section 5 is pretty much useless.
Sections 1-4 are harmless by the way:
1) You must provide source and can charge people for the source/binary’s transport.
2) Concerned with modifying the LGPL code.
3) You may GPL LGPL code if you wish.
4) Source must be with binary, but it can just be in the same location as binary.
Continuing on:
5) Dodgy one about linking from other projects that doesn’t stick in Java. Parts of it drop through to 6.
6) More linking stuff and relicencing issues. Largely similar to the ASF licence anyway, you must specify somewhere that this product is used by your product. Must include source of this product, use a linking mechanism [errrr Java? :)], provide a written offer [this is the Internet age guys], Verify the user has received. Mainly it’s pretty bullshitty. I can see how it might stop my company selling an LGPL product, but it seems to fit any other open source licence.
7) You may put this work side by side with another work under a different licence. Erm. Bit odd. Side by side?? On my desktop? My website?
You may not go beyond this licence, catch-all statement.
9) You don’t have to accept this licence, but you can’t play ball if you don’t.
10) This licence passes on whenever you redistribute this work.
11) If someone sues you to break this licence, we still own your arse.
12->16) Legal shit.
Now… while I can see that a C/C++ programmer, in their painful world of compile-time linking might have an issue with many parts of the licence, it seems to ignore the late linking that everyone else in the open source world seems to use [java/perl/python/etc].
At the very worst it stops us modifying LGPL code and releasing it in an application. We’d have to modify the LGPL code, release our modification as an LGPL work, then cross-link to that from our BSD licenced work.