License Issues

I have noticed this and been wondering about it for some time now.
SDLmain.lib is a statically linked library (for Borland’s Compiler the
SDL_main.c must be compiled into the project), yet it is under the LGPL
license. By the license, we must be able to either a) recompile the program
if a change occurred to the library or b) have it dynamically linked so only
the libray needs to be changed. If I am not mistaken, this means that any
project that uses the SDL_main.lib must be open-sourced.

I think that this goes against the very concept of the SDL. I know one
could just go and make a WinMain and a main and whatever else, but that just
seems a little odd to me. I think that this should either be a) made more
clear on the web page and documentation or b) remove the particular file
from the LGPL license (I believe you can still require them to dynamically
link to the SDL to use SDLmain.lib).

I’m no legal expert, but I also don’t want to get in any trouble if I use
the SDL in a closed source project (or a little play thing/demo I release on
the Net)

Joe Tennies

I think that this goes against the very concept of the SDL.

This is why, if you look at the source for SDL_main.c, you’ll find that
the source code has been placed in the public domain.

You’re perfectly fine linking SDL_main.c (and libraries consisting of it)
with closed-source programs, with no license restrictions whatsoever.

See ya!
-Sam Lantinga, Lead Programmer, Loki Entertainment Software

I’m not a legal expert either (so I could be completely wrong with this
interpretation!) but number four of “TERMS AND CONDITIONS FOR COPYING,
DISTRIBUTION AND MODIFICATION” of the LGPL states:

“4. You may copy and distribute the Library (or a portion or derivative of it,
under Section 2) in object code or executable form under the terms of Sections
1 and 2 above provided that you accompany it with the complete corresponding
machine-readable source code, which must be distributed under the terms of
Sections 1 and 2 above on a medium customarily used for software interchange.”

I /think/ this is saying that you can include the used library(ies) in object
or executable form along with your software application, but you must also
include the library’s source code (or a simple means of obtaining it) as
well. Thus while the library must remain free-software, your application does
not.

I was under the impression that was the intention of the LGPL- to make
libraries more accessable to those lacking the ability to open the source code
for their software.On Sat, 17 Feb 2001, you wrote:

I have noticed this and been wondering about it for some time now.
SDLmain.lib is a statically linked library (for Borland’s Compiler the
SDL_main.c must be compiled into the project), yet it is under the LGPL
license. By the license, we must be able to either a) recompile the program
if a change occurred to the library or b) have it dynamically linked so only
the libray needs to be changed. If I am not mistaken, this means that any
project that uses the SDL_main.lib must be open-sourced.

I think that this goes against the very concept of the SDL. I know one
could just go and make a WinMain and a main and whatever else, but that just
seems a little odd to me. I think that this should either be a) made more
clear on the web page and documentation or b) remove the particular file
from the LGPL license (I believe you can still require them to dynamically
link to the SDL to use SDLmain.lib).

I’m no legal expert, but I also don’t want to get in any trouble if I use
the SDL in a closed source project (or a little play thing/demo I release on
the Net)


Sam “Criswell” Hart <@Sam_Hart>
AIM, Yahoo!, MSN:
Homepage: http://www.geekcomix.com/snh/
PGP Info: http://www.geekcomix.com/snh/contact/

Samuel Hart wrote:

I /think/ this is saying that you can include the used library(ies) in object
or executable form along with your software application, but you must also
include the library’s source code (or a simple means of obtaining it) as
well. Thus while the library must remain free-software, your application does
not.

I was under the impression that was the intention of the LGPL- to make
libraries more accessable to those lacking the ability to open the source code
for their software.

yep, IMO that was the intention, make the library as a whole protected by
a license, let it be usable by closedsourced software, but ensure
that no one may simply extract portions of the code and integrate it into
other projects. This intention can sometimes lead to confusions, as we see
here, but it is actually not. As a rule of thumb: make sure that the
library/libmain code can compile (and run) without the non opensource
parts, so that this libcode can be placed seperately and as a whole
as opensource material. The buildprocess of an program that links this
libcode statically is simply okay, since the libcode itself is placed
seperately, it is completely opensource, and even other applications (than
the original) can reuse that libcode - the intention of public IP
is maintained. No doubt, this is according to the intentions of the LGPL,
and the legalese of the LGPL-text should express that in a reasonable
manner that should hold before court (however, there was never an actual
GPL/LGPL case, but who’d sue you if you follow the original intentions).
Don’t worry, static linking to an opensource libary under LGPL is
always fine. If you made changes to the library (or the makefile-scheme
to build that library), put these under opensource, nothing else.

cheers
– guido http://pfe.sourceforge.net
31:GCS/E/S/P C++$++++ ULHS L++w- N++@ d(±) s+a- h.r(*@)>+++ y++ 5++X-

P.S. if you changed the lib to put a few init hooks in, make sure the
library compiles/runs without these hooks properly initialized. This is
most important with “unresolved symbols” - you may have to add a
missing.c part for these. Just a hint from me (w/o warranties, okay…)

Actually, it states in a different part that you must be able to allow users
to upgrade the library through recompilation or replacement of a
dynammically linked library w/o having to get a new binary from the
programmer (thus allowing upgrades even after support for a product has
disappeared)> ----- Original Message -----

From: owner-sdl@lokigames.com [mailto:owner-sdl at lokigames.com]On Behalf
Of Samuel Hart
Sent: Sunday, February 18, 2001 9:11 AM
To: sdl at lokigames.com
Subject: Re: [SDL] License Issues

On Sat, 17 Feb 2001, you wrote:

I have noticed this and been wondering about it for some time now.
SDLmain.lib is a statically linked library (for Borland’s Compiler the
SDL_main.c must be compiled into the project), yet it is under the LGPL
license. By the license, we must be able to either a) recompile the
program
if a change occurred to the library or b) have it dynamically linked so
only
the libray needs to be changed. If I am not mistaken, this means that any
project that uses the SDL_main.lib must be open-sourced.

I think that this goes against the very concept of the SDL. I know one
could just go and make a WinMain and a main and whatever else, but that
just
seems a little odd to me. I think that this should either be a) made more
clear on the web page and documentation or b) remove the particular file
from the LGPL license (I believe you can still require them to dynamically
link to the SDL to use SDLmain.lib).

I’m no legal expert, but I also don’t want to get in any trouble if I use
the SDL in a closed source project (or a little play thing/demo I release
on
the Net)

I’m not a legal expert either (so I could be completely wrong with this
interpretation!) but number four of “TERMS AND CONDITIONS FOR COPYING,
DISTRIBUTION AND MODIFICATION” of the LGPL states:

“4. You may copy and distribute the Library (or a portion or derivative of
it,
under Section 2) in object code or executable form under the terms of
Sections
1 and 2 above provided that you accompany it with the complete corresponding
machine-readable source code, which must be distributed under the terms of
Sections 1 and 2 above on a medium customarily used for software
interchange.”

I /think/ this is saying that you can include the used library(ies) in
object
or executable form along with your software application, but you must also
include the library’s source code (or a simple means of obtaining it) as
well. Thus while the library must remain free-software, your application
does
not.

I was under the impression that was the intention of the LGPL- to make
libraries more accessable to those lacking the ability to open the source
code
for their software.


Sam “Criswell” Hart
AIM, Yahoo!, MSN:
Homepage: http://www.geekcomix.com/snh/
PGP Info: http://www.geekcomix.com/snh/contact/

I don’t think what you are saying is correct. Please red the license again.
In its truest form (some people place their stuff under LGPL, but say they
won’t actually check on it) the LGPL is there for further support. Imagine
if id had statically linked the 3dfx OpenGL implementation (which at the
time was very weak) into GLQuake (as they were just about the only company
w/ GL drivers that would run it at the time). Now your nice new GeForce 2
wouldn’t be able to play it.

I know you are thinking that this is just good programming practice (and
you’re correct), but the LGPL forces you to do this. This way currently
weak library can be “upgraded” to a stronger, more stable one later. If you
statically link ANY LGPL code into your code, you MUST make your project
open-sourced and in a license that is compatible with the LGPL (the GPL, for
instance). They were thinking about the rights of the user, not the
programmers.> ----- Original Message -----

From: owner-sdl@lokigames.com [mailto:owner-sdl at lokigames.com]On Behalf
Of Guido Draheim
Sent: Sunday, February 18, 2001 10:20 AM
To: sdl at lokigames.com
Subject: [SDL] Re: License Issues

Samuel Hart wrote:

I /think/ this is saying that you can include the used library(ies) in
object
or executable form along with your software application, but you must
also
include the library’s source code (or a simple means of obtaining it) as
well. Thus while the library must remain free-software, your application
does
not.

I was under the impression that was the intention of the LGPL- to make
libraries more accessable to those lacking the ability to open the source
code
for their software.

yep, IMO that was the intention, make the library as a whole protected by
a license, let it be usable by closedsourced software, but ensure
that no one may simply extract portions of the code and integrate it into
other projects. This intention can sometimes lead to confusions, as we see
here, but it is actually not. As a rule of thumb: make sure that the
library/libmain code can compile (and run) without the non opensource
parts, so that this libcode can be placed seperately and as a whole
as opensource material. The buildprocess of an program that links this
libcode statically is simply okay, since the libcode itself is placed
seperately, it is completely opensource, and even other applications (than
the original) can reuse that libcode - the intention of public IP
is maintained. No doubt, this is according to the intentions of the LGPL,
and the legalese of the LGPL-text should express that in a reasonable
manner that should hold before court (however, there was never an actual
GPL/LGPL case, but who’d sue you if you follow the original intentions).
Don’t worry, static linking to an opensource libary under LGPL is
always fine. If you made changes to the library (or the makefile-scheme
to build that library), put these under opensource, nothing else.

cheers
– guido http://pfe.sourceforge.net
31:GCS/E/S/P C++$++++ ULHS L++w- N++@ d(±) s+a- h.r(*@)>+++ y++ 5++X-

P.S. if you changed the lib to put a few init hooks in, make sure the
library compiles/runs without these hooks properly initialized. This is
most important with “unresolved symbols” - you may have to add a
missing.c part for these. Just a hint from me (w/o warranties, okay…)

Couldn’t you just release the game as a static library minus the SDL
library, and let the user relink at any time they want?On 2001.02.18 13:41:16 -0500 Joe Tennies wrote:

I know you are thinking that this is just good programming practice (and
you’re correct), but the LGPL forces you to do this. This way currently
weak library can be “upgraded” to a stronger, more stable one later. If
you
statically link ANY LGPL code into your code, you MUST make your project
open-sourced and in a license that is compatible with the LGPL (the GPL,
for
instance). They were thinking about the rights of the user, not the
programmers.


Sean Middleditch
of
AwesomePlay Productions, Inc.

That’s an interesting concept. I personally think that would work, but, as
I said, I am no legal expert.

At 02:14 PM 2/18/01 -0500, you wrote:>Couldn’t you just release the game as a static library minus the SDL

library, and let the user relink at any time they want?

On 2001.02.18 13:41:16 -0500 Joe Tennies wrote:

I know you are thinking that this is just good programming practice (and
you’re correct), but the LGPL forces you to do this. This way currently
weak library can be “upgraded” to a stronger, more stable one later. If
you
statically link ANY LGPL code into your code, you MUST make your project
open-sourced and in a license that is compatible with the LGPL (the GPL,
for
instance). They were thinking about the rights of the user, not the
programmers.


Sean Middleditch
of
AwesomePlay Productions, Inc.


A student, working on a rather long math homework assignment, discovered
that one problem fairly easy to solve, except that it required about three
pages of fairly simple proof after the one or two difficult steps. It being
rather late at night, he did the difficult steps and left the proof undone,
along with a note:

This proof is left as an exercise for the grader.

Next week, he received his homework back. He noted that several extra pages
had been stapled to the back of it. Examining the extra pages, he was
surprised to find the entire proof written down step-by step. At the end,
in red pen, the grader had written:

I made a minor math error. Minus 2.

I recall back in the day when I didn’t even know what Linux (or even open
source/free software) was, I was using the DJGPP compiler (port of GCC to
DOS), and some of the libraries it came with were under the GPL/LPGL - some
docs there, or a library designed for DJGPP (like Allegro) recommended just
releasing object files in order to comply.

Also, I don’t believe you have to distribute the object files or anything -
they just have to be available on demand. Put them on an FTP server
somewhere, point to it in your docs, and you’re all set. Unless I’ve
missed something. ^,^On 2001.02.18 15:03:34 -0500 Joe Tennies wrote:

That’s an interesting concept. I personally think that would work, but,
as
I said, I am no legal expert.

At 02:14 PM 2/18/01 -0500, you wrote:

Couldn’t you just release the game as a static library minus the SDL
library, and let the user relink at any time they want?

On 2001.02.18 13:41:16 -0500 Joe Tennies wrote:

I know you are thinking that this is just good programming practice
(and

you’re correct), but the LGPL forces you to do this. This way
currently

weak library can be “upgraded” to a stronger, more stable one later.
If

you
statically link ANY LGPL code into your code, you MUST make your
project

open-sourced and in a license that is compatible with the LGPL (the
GPL,

for
instance). They were thinking about the rights of the user, not the
programmers.


Sean Middleditch
of
AwesomePlay Productions, Inc.


A student, working on a rather long math homework assignment, discovered
that one problem fairly easy to solve, except that it required about
three
pages of fairly simple proof after the one or two difficult steps. It
being
rather late at night, he did the difficult steps and left the proof
undone,
along with a note:

This proof is left as an exercise for the grader.

Next week, he received his homework back. He noted that several extra
pages
had been stapled to the back of it. Examining the extra pages, he was
surprised to find the entire proof written down step-by step. At the end,

in red pen, the grader had written:

I made a minor math error. Minus 2.


Sean Middleditch
of
AwesomePlay Productions, Inc.

Did you see my reply? The license is irrelevant for SDLmain.lib

See ya,
-Sam Lantinga, Lead Programmer, Loki Entertainment Software

Actually, my original reply was made before I saw yours… wasn’t aware of
SDLmain being in the PD…

…and now it’s just evolved into an interesting licensing discusion :wink:

(OT, perhaps… but interesting ;)On Sun, 18 Feb 2001, you wrote:

Did you see my reply? The license is irrelevant for SDLmain.lib


Sam “Criswell” Hart <@Sam_Hart>
AIM, Yahoo!, MSN:
Homepage: http://www.geekcomix.com/snh/
PGP Info: http://www.geekcomix.com/snh/contact/

Hello!

Joe Tennies wrote:

I have noticed this and been wondering about it for some time now.
SDLmain.lib is a statically linked library (for Borland’s Compiler the
SDL_main.c must be compiled into the project), yet it is under the LGPL
license. By the license, we must be able to either a) recompile the program
if a change occurred to the library or b) have it dynamically linked so only
the libray needs to be changed. If I am not mistaken, this means that any
project that uses the SDL_main.lib must be open-sourced.

I think that this goes against the very concept of the SDL. I know one
could just go and make a WinMain and a main and whatever else, but that just
seems a little odd to me. I think that this should either be a) made more
clear on the web page and documentation or b) remove the particular file
from the LGPL license (I believe you can still require them to dynamically
link to the SDL to use SDLmain.lib).

Sam Lantinga wrote:

This is why, if you look at the source for SDL_main.c, you’ll find that
the source code has been placed in the public domain.

You’re perfectly fine linking SDL_main.c (and libraries consisting of it)
with closed-source programs, with no license restrictions whatsoever.

FYI - I have also written a library which will handle the
WinMain problem. It is heavily inspired by SDL, but it is
completely separate:
http://www.HardcoreProcessing.com/pro/winmain/index.html

The only “license” for it is:
“There is no warranty of any kind and I will not be
held responsible for any problems it may cause.
Use at your own risk!” :slight_smile:

Maybe somebody will find it useful :slight_smile:

Cheers–
http://www.HardcoreProcessing.com