Licensing SDL

To clear this up as clear as it gets (being that LGPL has a few grey
areas up for interpretation).

You can do a number of things on reasonably firm legal grounds.
-If you link your code against SDL (and not include SDL in your
code), then your code is not considered LGPL by reference.
-If you include SDL code in your code, your code is now LGPL by
reference.
-If you include the SDL .dll’s with your product, you are legaly
obliged to provide the code for SDL (assuming you made no modifications
to SDL you can just point them at loki).
-If you link against SDL .dlls (during run time) and do not include
them with your product (just tell the user where to get them), you
don’t need to provide either the .dll’s or the code.

Besides the somewhat questionable point of pointing people at loki
for the sdl code (don’t know if they would like it or not). Loki as it
is has a obligation to provide the code because of the LGPL (or at
least the last version of code under the LGPL), and your also obliged
to provide your enhancements/code changes that you’ve done to SDL to
loki (because of the LGPL).On the chance that you are curious to what the ‘grey area’ is, it is the ‘api’ which cannot be considered under the legalities of the GPL/LGPL etc… In general respects a API is void of legal inference (API in this case is equivilant to the function prototypes and not code, documentation, etc… what so ever). Tim Jansen wrote:

Sam Lantinga wrote:

To comply with this license, you must give prominent notice that
you use the
Simple DirectMedia Layer library, and that it is included under the
terms of
the LGPL license. You must include a copy of the LGPL license.
You must also do one of the following:

1. Include the source code for the version of SDL that you link

with,

   as well as the full source or object code to your

application so that

   the user can relink your application,
   or
2. Include a written offer, valid for at least three years, to

provide

   the materials listed in option 1, charging no more than the

cost of

   providing this distribution,
   or
3. Make the materials listed in option 1 available from the

same place

   that your application is available.

Maybe I’m wrong, but AFAIK you only have to do this if you distribute
the library in
binary form. If you write an application (commercial or GPL) that
links dynamically
to SDL and you require the user to get SDL from another source then
you dont have to
provide the source for SDL. This is the common case for most
OpenSource software, as
package systems like rpm and deb separate the libraries from the
programs and source
tars with configure usually dont include the libraries.

bye…

=====
Jason Platt.

“In theory: theory and practice are the same.
In practice: they arn’t.”


Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.

To clear this up as clear as it gets (being that LGPL has a few grey
areas up for interpretation).

Please don’t make final statements about the LGPL unless you have a
firm background in software license law. As I understand it, a few
of the statements you made are not quite correct:

You can do a number of things on reasonably firm legal grounds.
-If you include the SDL .dll’s with your product, you are legaly
obliged to provide the code for SDL (assuming you made no modifications
to SDL you can just point them at loki).

Even if you made no modifications to SDL, you are still required by the
license to provide the source code to the version of SDL you used.

Besides the somewhat questionable point of pointing people at loki
for the sdl code (don’t know if they would like it or not). Loki as it
is has a obligation to provide the code because of the LGPL (or at
least the last version of code under the LGPL), and your also obliged
to provide your enhancements/code changes that you’ve done to SDL to
loki (because of the LGPL).

You are not obligated to return code changes to anyone (though it is
appreciated), you just have to make them available with your product.

Of course my interpretation could be incorrect, since I’m not a software
license lawyer either. :slight_smile:

-Sam Lantinga				(slouken at devolution.com)

Lead Programmer, Loki Entertainment Software–
“Any sufficiently advanced bug is indistinguishable from a feature”
– Rich Kulawiec

You can do a number of things on reasonably firm legal grounds.
-If you include the SDL .dll’s with your product, you are legaly
obliged to provide the code for SDL (assuming you made no modifications
to SDL you can just point them at loki).

Even if you made no modifications to SDL, you are still required by the
license to provide the source code to the version of SDL you used.

Remember, if you are not comfortable with including the source code with
your product directly, all you have to do is provide written promise to
provide the source code to your end-user if they ask for it.

It’s always a good idea to keep a copy of the source code for libraries
that you use around, in case the publicly released sources change in some
incompatible way. Even if that doesn’t happen, you may need to provide a
debug version of the library to your user for support purposes.

BTW, I’m not planning to change SDL in an incompatible way - but it
occasionally accidently happens.

See ya!
-Sam Lantinga (slouken at devolution.com)

Lead Programmer, Loki Entertainment Software–
“Any sufficiently advanced bug is indistinguishable from a feature”
– Rich Kulawiec

-If you include the SDL .dll’s with your product, you are legaly
obliged to provide the code for SDL (assuming you made no modifications
to SDL you can just point them at loki).

Not to be argumentative here, but this part is fairly clear.
The person distributing the LGPL library must provide the code.

Even if his site has the exact version you use, it still doesn’t
meet the requirements of the LGPL, because you aren’t providing it.
(being down-to-the-letter legal here, though I doubt the copyright holder
would enforce this…)

Besides the somewhat questionable point of pointing people at loki
for the sdl code (don’t know if they would like it or not). Loki as it
is has a obligation to provide the code because of the LGPL (or at
least the last version of code under the LGPL), and your also obliged
to provide your enhancements/code changes that you’ve done to SDL to
loki (because of the LGPL).

Loki is only required to provide the versions of SDL that it’s game uses
and it distributes. They are not required to provide the interim versions
that your game may use, which theirs may not.

Everything else you’ve said makes complete sense.–
Brian

Sam said:

BTW, I’m not planning to change SDL in an incompatible way - but it
occasionally accidently happens.

<mutter mutter, mixer API changes… mutter mutter library name changes…>

The changes are always for the better. :wink:

-bill!

— Sam Lantinga wrote:

To clear this up as clear as it gets (being that LGPL has a few
grey
areas up for interpretation).

Please don’t make final statements about the LGPL unless you have a
firm background in software license law. As I understand it, a few
of the statements you made are not quite correct:

One of the problems with the GPL/LGPL is that some parts of it can be
interpreted differently, sometimes that alone makes me prefer the BSD
style licence (though it has problems of it’s own).

You can do a number of things on reasonably firm legal grounds.
-If you include the SDL .dll’s with your product, you are legaly
obliged to provide the code for SDL (assuming you made no
modifications
to SDL you can just point them at loki).

Even if you made no modifications to SDL, you are still required by
the
license to provide the source code to the version of SDL you used.

True, but as long as the source code of the version that you used is
availible either from you or a third party it still fills the
conditions of the licence. Ie: it is freely availible.

Besides the somewhat questionable point of pointing people at
loki
for the sdl code (don’t know if they would like it or not). Loki as
it
is has a obligation to provide the code because of the LGPL (or at
least the last version of code under the LGPL), and your also
obliged
to provide your enhancements/code changes that you’ve done to SDL
to
loki (because of the LGPL).

You are not obligated to return code changes to anyone (though it is
appreciated), you just have to make them available with your product.

Hmm, your right on this one. Although in this case it would be you
that provided the source, etc… for it (assuming that the code wasn’t
reintegrated back into the package).

Of course my interpretation could be incorrect, since I’m not a
software
license lawyer either. :slight_smile:

-Sam Lantinga (slouken at devolution.com)

Lead Programmer, Loki Entertainment Software

Either way, I am not a lawyer and not a american either (I’m a
canadian). As such I have different views on the correctness and impact
of laws and legaliese (based in part on the differences between the
american and canadian legal systems, etc…)

So to make things clear and simple, assuming that you link against
and not merge your code with the SDL code, and include the SDL .dll’s
you need for your product with your product (say on a CD). Then put the
SDL source on the CD. If you include the .DLL’s within the tarball,
zip, etc on a ftp/web site, put the SDL code on the ftp/web site.

Any which way you go, please give credit where it is due and make
sure you credit loki (and give the url to their web site) because it is
the nice thing to do.=====
Jason Platt.

“In theory: theory and practice are the same.
In practice: they arn’t.”


Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.

Any which way you go, please give credit where it is due and make
sure you credit loki (and give the url to their web site) because it is
the nice thing to do.

Aww, thanks. :slight_smile:

Actually, it’s not Loki that owns SDL, but lil’ ole me. Loki just uses it
a whole lot, contributes code, and lets me improve it on the clock. :slight_smile:
I certainly don’t do things like work on the Mac and Win32 ports at work. :slight_smile:

See ya!
-Sam Lantinga (slouken at devolution.com)

Lead Programmer, Loki Entertainment Software–
“Any sufficiently advanced bug is indistinguishable from a feature”
– Rich Kulawiec

Aside from the actual “legality” of things (which I do not pretend to fully
understand/interpret myself :), it only makes sense to provide the source
code to the version of SDL used by your program. Suppose I created a game,
based on the 1.0.4 release. I tell folks “Hey, I used SDL. It’s a great
library, grab the source from Loki, blah blah”. Now suppose that when a
curious user wants to grab the source and build the library themselves, and
in the time between my release and their download SDL is now sitting at
version 1.2.0, which happens to break a number of interfaces (for whatever
reason, this is purely hypothetical. In reality, Sam would never do that
to us…would you? :). Now, their new library couldn’t be used with my
game, and they’d probably spend quite a bit of time searching for the
correct version.
You really should provide the source, if not for legal reasons or broken
interfaces, but simply because “Why not?”. It’s freely available. It’s
fairly small. It’s all good :slight_smile:
Now, of course there isn’t anything wrong with saying “I’m giving you the
version of SDL I used for my game. If you want the latest version, here’s
where to find it”. Again, this should just be common sense.

I vaguely remember a debate on slashdot about this awhile back (if you are
required to personally distribute the source or if you can point to someone
elses site). They were referring to LinuxOne’s move to say “Hey, we used
Redhat/Mandrake source as a base model. If you want anything, go pester
those guys”. The general consensus was that they couldn’t do it, it was
against the licenses. 'Course that’s slashdot. Might want to take it with
a grain of salt :slight_smile:

cheers,
Dave “PenguinDude” Archbold
davea at radiks.netOn Monday, February 21, 2000 4:34 PM, Sam Lantinga [SMTP:slouken at devolution.com] wrote:

You can do a number of things on reasonably firm legal grounds.
-If you include the SDL .dll’s with your product, you are legaly
obliged to provide the code for SDL (assuming you made no modifications
to SDL you can just point them at loki).

Even if you made no modifications to SDL, you are still required by the
license to provide the source code to the version of SDL you used.

Even if you made no modifications to SDL, you are still required by
the
license to provide the source code to the version of SDL you used.

True, but as long as the source code of the version that you used is
availible either from you or a third party it still fills the
conditions of the licence. Ie: it is freely availible.

Not true at all. The license does not say “it is freely available”. If
you read the LGPL word for word, it says YOU (the person) must supply the
source code. It’s a picky difference, yes, but it makes the difference
between complying with the license and not complying with it.

Any which way you go, please give credit where it is due and make
sure you credit loki (and give the url to their web site) because it is
the nice thing to do.

I’ll definitely drink to that… Give credit where it is due.

It seems to me that loki keeps it’s distance from SDL. They take no claim
to ownership of it, even though they seem to pay for supporting it. It
appears to be a product of Sam’s personally, not Loki the company.

I always wondered why Loki didn’t push this from a marketing perspective.
Maybe if they distance themselves from “giving away source code” they can
easier convince game companies they wont’ give away their source code.–
Brian

I vaguely remember a debate on slashdot about this awhile back (if you are
required to personally distribute the source or if you can point to someone
elses site). They were referring to LinuxOne’s move to say “Hey, we used
Redhat/Mandrake source as a base model. If you want anything, go pester
those guys”. The general consensus was that they couldn’t do it, it was
against the licenses. 'Course that’s slashdot. Might want to take it with
a grain of salt :slight_smile:

Funny, I almost quoted this as an example as well. There were a few
differences between this and the example at hand, but it is a good point.–
Brian

— “Archbold, David W.” wrote:> On Monday, February 21, 2000 4:34 PM, Sam Lantinga [SMTP:slouken at devolution.com] wrote:

You can do a number of things on reasonably firm legal grounds.
-If you include the SDL .dll’s with your product, you are
legaly

obliged to provide the code for SDL (assuming you made no
modifications

to SDL you can just point them at loki).

Even if you made no modifications to SDL, you are still required by
the
license to provide the source code to the version of SDL you used.

Aside from the actual “legality” of things (which I do not pretend to
fully
understand/interpret myself :), it only makes sense to provide the
source
code to the version of SDL used by your program. Suppose I created a
game,
based on the 1.0.4 release. I tell folks “Hey, I used SDL. It’s a
great
library, grab the source from Loki, blah blah”. Now suppose that
when a
curious user wants to grab the source and build the library
themselves, and
in the time between my release and their download SDL is now sitting
at
version 1.2.0, which happens to break a number of interfaces (for
whatever
reason, this is purely hypothetical. In reality, Sam would never do
that
to us…would you? :). Now, their new library couldn’t be used with
my
game, and they’d probably spend quite a bit of time searching for the
correct version.
You really should provide the source, if not for legal reasons or
broken
interfaces, but simply because “Why not?”. It’s freely available.
It’s
fairly small. It’s all good :slight_smile:
Now, of course there isn’t anything wrong with saying “I’m giving you
the
version of SDL I used for my game. If you want the latest version,
here’s
where to find it”. Again, this should just be common sense.

I vaguely remember a debate on slashdot about this awhile back (if
you are
required to personally distribute the source or if you can point to
someone
elses site). They were referring to LinuxOne’s move to say “Hey, we
used
Redhat/Mandrake source as a base model. If you want anything, go
pester
those guys”. The general consensus was that they couldn’t do it, it
was
against the licenses. 'Course that’s slashdot. Might want to take
it with
a grain of salt :slight_smile:

cheers,
Dave “PenguinDude” Archbold
davea at radiks.net

Well that is different too, linuxone changed the code. If you don’t
change the code I really don’t see the difference myself.

=====
Jason Platt.

“In theory: theory and practice are the same.
In practice: they arn’t.”


Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.

Ok, lots of feedback (thanks). The following would then be ok…

  1. I supply the binary for my app dynamically linked to SDL.
  2. I supply the dynamic SDL library binary.
  3. I keep a full archive of all the source for all the SDL binaries that
    have been supplied (regardless of wether I compiled it or not - it’s
    up to me to supply the source for any version I distribute) and make
    that source easily available on request (I expect I can set up a
    download page, but I am unlikely to be able to ship a tarball with
    the product - size is very much an issue).
  4. Full advertising of SDL usage and LGPL status in docs and on credit
    screen (including a copy of the LGPL for reference).

Hopefully the above covers a reasonable(?) and legal(?) approach to
commercial apps using SDL?

ttfn,
JohnOn Tue, Feb 22, 2000 at 02:26:59AM +0800, Dido Sevilla wrote:

John Marshall wrote:

Thanks, Sam, but just to get it totally clear, would this be ok…

  1. I supply the binary for my app dynamically linked to SDL
  2. I supply the dynamic SDL (unmodified) library
  3. I supply full details on how to get SDL (link to main SDL website)
  4. Full advertising of SDL usage (in docs and on credit screen)

As 2) is unmodified from the core SDL code is 3) sufficient?

Ok, lots of feedback (thanks). The following would then be ok…

  1. I supply the binary for my app dynamically linked to SDL.
  2. I supply the dynamic SDL library binary.
  3. I keep a full archive of all the source for all the SDL binaries that
    have been supplied (regardless of wether I compiled it or not - it’s
    up to me to supply the source for any version I distribute) and make
    that source easily available on request (I expect I can set up a
    download page, but I am unlikely to be able to ship a tarball with
    the product - size is very much an issue).
  4. Full advertising of SDL usage and LGPL status in docs and on credit
    screen (including a copy of the LGPL for reference).

Hopefully the above covers a reasonable(?) and legal(?) approach to
commercial apps using SDL?

Absolutely. :slight_smile:

I’m curious now, what are you shipping? :slight_smile:

See ya!
-Sam Lantinga (slouken at devolution.com)

Lead Programmer, Loki Entertainment Software–
“Any sufficiently advanced bug is indistinguishable from a feature”
– Rich Kulawiec

Ahh, nothing yet, but I’ve got something going down. I don’t know if
anyone else has had the experience but one day I suddenly 'saw the light’
for a product. It’s not even something I would normally have been interested
in doing, it doesn’t have techie appeal or coolness factor, and has a lot
of dog work that I’d normally avoid, and goes up against a very well known
opponent. Normally any one of those would put me off, but this idea
is really driving me.

I saw that certain free and GPL projects could be combined together fairly
easily, given a framework, and create something useful for a certain
market.

I don’t want to reveal anything just yet, because if anyone else considered
it cool then they may create an open source version before I get a chance
to make some money from mine :slight_smile: Not that my target audience would even
know open source from a kick in the head :slight_smile:

I hope that I can make this project open source at some point in it’s
future (probably most like MySQL’s license, free for non-commercial
entities), but that will depend on my business partners attitudes and
market response.

ttfn,
JohnOn Tue, Feb 22, 2000 at 02:47:27AM -0800, Sam Lantinga wrote:

Hopefully the above covers a reasonable(?) and legal(?) approach to
commercial apps using SDL?

Absolutely. :slight_smile:

I’m curious now, what are you shipping? :slight_smile:

Sam Lantinga schrieb am 21 Feb 2000:

I certainly don’t do things like work on the Mac and Win32 ports at work. :slight_smile:

That’s too bad. Maybe we can get Micro$oft to sponsor you a bit? It would
be too bad if all those SDL games didn’t run on Win32 Systems…

  • Andreas–
    Probably one of the smallest 3D-Games in the world: http://www.gltron.org
    More than 50’000 Downloads of the latest version (0.53)

— John Marshall wrote:> On Tue, Feb 22, 2000 at 02:26:59AM +0800, Dido Sevilla wrote:

John Marshall wrote:

Thanks, Sam, but just to get it totally clear, would this be
ok…

  1. I supply the binary for my app dynamically linked to SDL
  2. I supply the dynamic SDL (unmodified) library
  3. I supply full details on how to get SDL (link to main SDL
    website)
  1. Full advertising of SDL usage (in docs and on credit screen)

As 2) is unmodified from the core SDL code is 3) sufficient?

Ok, lots of feedback (thanks). The following would then be ok…

  1. I supply the binary for my app dynamically linked to SDL.
  2. I supply the dynamic SDL library binary.
  3. I keep a full archive of all the source for all the SDL binaries
    that
    have been supplied (regardless of wether I compiled it or not -
    it’s
    up to me to supply the source for any version I distribute) and
    make
    that source easily available on request (I expect I can set up a
    download page, but I am unlikely to be able to ship a tarball with
    the product - size is very much an issue).
  4. Full advertising of SDL usage and LGPL status in docs and on
    credit
    screen (including a copy of the LGPL for reference).

Hopefully the above covers a reasonable(?) and legal(?) approach to
commercial apps using SDL?

ttfn,
John

That sounds quite sound, in the case of #3 you probably will want to
include a link to the SDL project as well as the link to your tarball.
You also are ‘required’ to provide the source on a disk/cd if requested
(only if you ship your product on that medium) but you can charge them
for the medium and shipping (it’s very unlikely anyone will ever ask,
but they might).

=====
Jason Platt.

“In theory: theory and practice are the same.
In practice: they arn’t.”


Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.

From Section 6 of the LGPL (last two paragraphs of section 6).

If you have a proprietary library that allows distribution of it as a
runtime but not as a development library, you cannot link an LGPL library
and the proprietary library with your program to create an executable.

For example, commercial versions of Motif provide you with a development
library and say you can distribute static or dynamic executables, but you
cannot distribute the library itself.

You cannot link an application with a LGPL library as well as this
commercial library and distribute it, because you aren’t allowed to give
them everything they need to recreate the executable.

The LGPL says you must provide them with all libraries needed to create
the executable again. They did make an exception for libc, gcc, or
anything commonly shipped with the OS that the application is distributed
to run on.

Boy… I must say, that LGPL has some good points in it, but overall it’s
sortof a mess. It’s really easy even if you read it a couple times to
miss something and be in violation of it when you don’t intend to do so.
It’s already happened to companies before too.

Just be careful and read the licenses closely yourself. As Sam said,
don’t trust what we all say on this list, you have to understand it
yourself. Even if we sound like we know what we’re talking about… :-)–
Brian Hayward

From Section 6 of the LGPL (last two paragraphs of section 6).

If you have a proprietary library that allows distribution of it as a
runtime but not as a development library, you cannot link an LGPL library
and the proprietary library with your program to create an executable.

For example, commercial versions of Motif provide you with a development
library and say you can distribute static or dynamic executables, but you
cannot distribute the library itself.

You cannot link an application with a LGPL library as well as this
commercial library and distribute it, because you aren’t allowed to give
them everything they need to recreate the executable.

I don’t know about the legal ramifications of this, but one way I would
look at to get around this would be to link all of your code and proprietary
libraries into a single giant object file and distribute that.

Like I said, I’m not sure the legal ramifications of this. :slight_smile:

-Sam Lantinga				(slouken at devolution.com)

Lead Programmer, Loki Entertainment Software–
“Any sufficiently advanced bug is indistinguishable from a feature”
– Rich Kulawiec

I don’t know about the legal ramifications of this, but one way I would
look at to get around this would be to link all of your code and proprietary
libraries into a single giant object file and distribute that.

Like I said, I’m not sure the legal ramifications of this. :slight_smile:

You’re right, this should work.

Either way, this issue just tends to complicate things…
Anyway, I’ll drop this licensing thread now, it’s not really relavent to
this list anymore…
:-)–
Brian

Fortunately, there are a lot of good natured people out there in the open
source community who are willing to politely inform you of your violation
and help you take steps to correct it. Like you said, it’s easy to be in
violation even if you had the best intentions not to.
'Course you don’t want to rely on someone telling you that you screwed up,
but it is nice to know that people ask questions first then shoot (well,
most of the time :slight_smile:

cheers,
Dave “PenguinDude” ArchboldOn Tuesday, February 22, 2000 10:16 AM, hayward at slothmud.org [SMTP:hayward at slothmud.org] wrote:

Boy… I must say, that LGPL has some good points in it, but overall it’s
sortof a mess. It’s really easy even if you read it a couple times to
miss something and be in violation of it when you don’t intend to do so.
It’s already happened to companies before too.