“For example, if you distribute copies of the library, whether gratis or
for a fee, you must give the recipients all the rights that we gave you.
You must make sure that they, too, receive or can get the source code.
If you link other code with the library, you must provide complete
object files to the recipients, so that they can relink them with the
library after making changes to the library and recompiling it. And you
must show them these terms so they know their rights.”
So basically, I spend time and effort gathering versions of SDL, freetype
etc. that actually work together, spend time debugging the whole damned
thing, and packaging it up into a form that I KNOW works, only to have
numerous people relinking it with OTHER versions of the library…
errr. that sux.
So basically we can have no quality control over this at all…
Backwards compatibility is never reliable enough to say for
example “…SDL versions 1.1.8 and upwards”, experience with a large
variety of libraries tells me that you can never count on future
versions being 100% compatible no matter how well intentioned the author
is…to say nothing of the troubles of certain library versions being
bugged on some platforms and not others…
I work in a job where we do customer support (as well as dev) and you can
never underestimate the stupidity of the end user, to my mind the LGPL is
a license designed by programmers for programmers.
Joe public doesn’t WANT to be able to relink his app, but forcing us to
dynamically link libraries allows for all sorts of problems customer-side
that would not be there in a single-executable deployment.
Example… Joe Public gets my program and installs it. It installs v1.1.8
of SDL amongst other things, and sets up any environment settings
needed for dynamic libraries (eg PATH or LD_LIBRARY_PATH, or
registering them on windows)…
the Joe Public installes a different older SDL app, which itself installs
a version of SDL, say v1.1.2
now on linux this could change the symlink libSDL.so to point to the older
library…screwing up my app. Or it could conceivably install in a
different location and screw over my PATH’s so that it finds the other
version first…
Sure it’s all solvable, but not by Joe Public.
Windows too. Though windows should check the local folder first, thne the
path , then the system(32) folder, experience has taught me that this is
not always the case, esp. on 95 etc… where DLLs stay loaded…
hurrah, DLL hell.
Again solvable, but not by Joe Public. Only by those with some knowledge.
(oh, and on windows most installers will default to putting DLLs into the
system directory, and most programmers just let them do this, leaving it
up to Joe Public to get the “a Newer/Older version” dialog on install,
thus there is no certainty what is on their system)
It’s stupid to allow end users to relink with libraries…
The version they get sent with the product is the one proven to work…
If there is a problem then fixes should come from the app vendor, so the
fixes are present in the current source tree/ditribution…
Users should not be encouraged to “jury Rig” applications…
For every user that hacks a bugged app into working, that’s (usually) an
bug that goes unreported.
not quite so sure I can be bothered with ANY LGPL stuff anymore…
it seems like a support nightmare…