I have some animated GIF code, can I

I used some code from the SDL image library to add support for loading
all the frames from animated GIF files into a series SDL surfaces.

I didn’t change the SDL image library, but I “borrowed” some of its GIF
code, modified it, moved it into a separate C file, and changed the
function names so they wouldn’t conflict with the image library names.
In essence, I’ve copy/pasted the code, modified it, and made a new
function like, MyLoadAnimatedGIF().

I’ve read that others have had desires for animated GIF code. Is it OK
for me to post the modified source code that supports animated GIFs,
even though it uses 95% of the SDL image library code? I don’t want to
break any licensing rules if this is not permitted.

Thanks,
Doug.

I’ve read that others have had desires for animated GIF code. Is it OK
for me to post the modified source code that supports animated GIFs,
even though it uses 95% of the SDL image library code? I don’t want to
break any licensing rules if this is not permitted.

Basically, under SDL’s license it’s a “derived work” … posting the
modified code certainly doesn’t violate the license (in fact, it’s
actually a requirement in most cases). Go ahead and post it.

–ryan.

Basically, under SDL’s license it’s a “derived work” … posting the
modified code certainly doesn’t violate the license (in fact, it’s
actually a requirement in most cases). Go ahead and post it.

Thanks Ryan!

I’ll clean the code up a bit, and probably make a little test app to go
along with it.

I was uncertain about what we’re allowed to do with the SDL source in the
public domain, as a while ago there seems to be an opinion that one could
not statically link to the SDL code (supposedly violated some licensing).
I was under the impression that, in general, if one releases all the source
code to their app, then how one linked to SDL became a non-issue.

In this case (animated GIF suppport), it has nothing to do with static
linking or changes to the SDL core - but from past experience, I got the
impression there were things we couldn’t do with the SDL code (outside of
releasing it in a retail work).

Stay tuned for the “derived work”! :stuck_out_tongue:
Doug.

Please read the LGPL closely, and if you have questions, there should be
tons of information on it on the web, or it shouldn’t be too off-topic to
ask specific “is it ok if I…?” questions here, I think.On Thu, Oct 19, 2006 at 04:13:43AM -0700, Doug wrote:

I was uncertain about what we’re allowed to do with the SDL source


-bill!
bill at newbreedsoftware.com
http://www.newbreedsoftware.com/

Hello !

Please read the LGPL closely, and if you have questions, there should be
tons of information on it on the web, or it shouldn’t be too off-topic to
ask specific “is it ok if I…?” questions here, I think.

Reading is easy, but understanding
licences is often really hard.
Even if you have the license text
in your native language.
Good for that, who has a lawyer as
a friend.

CU

Please read the LGPL closely, and if you have questions, there should be
tons of information on it on the web, or it shouldn’t be too off-topic to
ask specific “is it ok if I…?” questions here, I think.

It can be difficult to fully understand the LGPL, let alone any legal
document. I think only lawyers can fully understand them. :stuck_out_tongue:

I’m NOT trying to get around the LGPL - I’m trying to comply with it 100%.
I have some derived code that could possibly benefit the SDL community,
but according to the LGPL I can only release my code as a library - it
seems to indicate that I can’t just release a .c and .h file with the
sample code that was derived from the image library.

Also, the LGPL sometimes seems contradictory. Case-in-point:

“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”. …”

“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”. …”

Notice the work linking. In the first clause it says one can link
non-derived work with the library and be considered “work that uses the
library”. In the second clause it then seems to indicate that linking
non-derived work with the library now creates a work that is a derived
work. I suspect that the second clause is INTENDED to mean STATICALLY
link. But it doesn’t say that. The LGPL is a legal document, so it
should not contain clauses that appear to condradict each other.

If anyone can clarify the second clause, that would be helpful.

I would like to release my “derived work” animated GIF source code. I
don’t have a library - just a .h and .c file. I’m not now certain (even
after reading the LGPL) if I can just release the source code as-is
because, strictly speaking, it’s not a “library” - it’s just source code.

Fun with legalese! :stuck_out_tongue:
Doug.

Doug wrote:

Also, the LGPL sometimes seems contradictory. Case-in-point:

“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”. …”

“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”. …”

IANAL etc., but I assume the first clause applies to programs designed
to be linked (but not yet linked) with the library but distributed as a
self-contained entity (possibly without the library), while the second
clause applies to programs after they’ve been linked. The process of
linking changes the status of the work from "work that uses the Library"
to “derivative”.

Regards,

Uli

IANAL etc., but I assume the first clause applies to programs designed
to be linked (but not yet linked) with the library but distributed as a
self-contained entity (possibly without the library), while the second
clause applies to programs after they’ve been linked. The process of
linking changes the status of the work from "work that uses the Library"
to “derivative”.

Hmmm, not sure. I’d think that if this was true, then every Windows
program ever written would be “owned” by MS because they link with
kernel32.dll, etc. :stuck_out_tongue:

I also realized that the LGPL is written from a linux point-of-view. I
think the linking term may have slightly different meaning in the linux
world than it does in the windows world.

For example, if I have program APP, and library LIB, I can “link” APP to
LIB in many different ways under windows…

  1. APP + LIB linked together to form a single entity.
  2. APP links to LIB and LIB.DLL must be present (like MSVCRT.DLL).
  3. APP “soft” links to LIB and uses LIB with lots of GetProcAddress()
    calls.

In case #1, there ends up being no LIB.DLL, so APP and LIB become one
entity with no “line in the sand”. Generally, I believe this is known as
statically linking. In this case, there is no visible difference between
the APP and the LIB, as all that is seem is APP.EXE.

In both cases #2 and #3, the APP is separate from LIB, and LIB.DLL is
used by APP (in Windows). Generally, I believe this is known as
dynamically linking. The main differenet between #2 and #3 is that
LIB.DLL must exist for APP to run in case #2, but in case #3 APP can
start without LIB.DLL present (with either limited or no functionality).

Also in cases #2 and #3, APP.EXE can be distributed without LIB.DLL, as
LIB.DLL can be provide separately or the user of APP.EXE must obtain
LIB.DLL from its official source.

All very interesting, but I’m making my animated GIF code a library, so
it will remain true to the LGPL.

Doug.

IANAL etc., but I assume the first clause applies to programs designed
to be linked (but not yet linked) with the library but distributed as a
self-contained entity (possibly without the library), while the second
clause applies to programs after they’ve been linked. The process of
linking changes the status of the work from "work that uses the Library"
to “derivative”.

Hmmm, not sure. I’d think that if this was true, then every Windows
program ever written would be “owned” by MS because they link with
kernel32.dll, etc. :stuck_out_tongue:

No, system-provided libraries are excluded from the "derivative"
definition. This is what makes the (L)GPL possible under non-free
systems.

I also realized that the LGPL is written from a linux point-of-view. I
think the linking term may have slightly different meaning in the linux
world than it does in the windows world.

Not really, no. Everything you’ve mentionned after this paragraph
(static linking, build-time dynamic linking, run-time dynamic linking)
is basically just as valid under Windows and Linux. Things get
complicated when dealing with environments where the “library” and
"static vs. dynamic linking" concepts are replaced by other mechanisms
(such as Java), but in the case of native C/C++ libraries it is more
or less the same regardless of the OS.On 10/22/06, Doug wrote:

  • SR

Doug escreveu:

It can be difficult to fully understand the LGPL, let alone any legal
document. I think only lawyers can fully understand them. :stuck_out_tongue:

Then read what Stallman has to say about GPL and LGPL. It’s MUCH easier
to understand what Free Software is about in human language than in
"legalese".

but according to the LGPL I can only release my code as a library - it
seems to indicate that I can’t just release a .c and .h file with the
sample code that was derived from the image library.

You are kidding, right? Before trying to “understand” the LGPL any
further you should first read these:
http://www.gnu.org/philosophy/free-sw.html
http://www.gnu.org/philosophy/categories.html
http://www.gnu.org/licenses/gpl-faq.html

I still can’t tell if you are either being too sarcastic, or completely
missed the point. I’m hoping for the later.

In short: the user that receives your code must be able to freely
replace LGPL library. The preferable way is releasing your code under a
free-software license - either by a LGPL extension of the library, or by
a loose-coupled code around it. This is the “main idea”, but too
oversimplified; there are many special cases that need special handling,
but I doubt that your potential contribution is one of them. Just
release your code under the LGPL, and let it be merged into the SDL_image.–
Daniel K. O.

You are kidding, right? Before trying to “understand” the LGPL any
further you should first read these:
http://www.gnu.org/philosophy/free-sw.html
http://www.gnu.org/philosophy/categories.html
http://www.gnu.org/licenses/gpl-faq.html

Hey, thanks for those links, Daniel, they were helpful. I’ve done more
LGPL reading since my last post, and I think I’m starting to “get it”.

I still can’t tell if you are either being too sarcastic, or completely
missed the point. I’m hoping for the later.

I’m not trying to be sarcastic at all, I’m trying to understand a license
agreement that I’ve never dealt with before. Also, since I’ve done more
reading about the LGPL, it appears that there is a lot of heated discussion
regarding some “linking” issues. These usually center around issues of
statically linking, what the FSF says, and what the LGPL is intended for,
and the “gray” areas in between.

In short: the user that receives your code must be able to freely
replace LGPL library. The preferable way is releasing your code under a
free-software license - either by a LGPL extension of the library, or by
a loose-coupled code around it.

This is what I now think I understand. It seems that the LGPL doesn’t
really deal with the “way” I release code (source code, libraries,
archives, etc), but rather how that code is and must be used (assuming that
source code is always made available under the LGPL terms).

It seems that as long as the “USE” of the code obeys the LGPL, everything
is fine.

This all is moot anyways. I’m making a “derived work” library, based on
code from the SDL image library. When released, all sources will be
available, the LGPL will be included, and the new library can be freely
replaced out.

Realize that not everyone just “gets” the LGPL instantly, and that there
are probably plenty of LGPL code out there that is in complete violation of
the terms of the agreement. All I’m trying to do is make 100% sure that
everything I do does not violate the license.

Doug.

Doug escreveu:

It can be difficult to fully understand the LGPL, let alone any legal
document. I think only lawyers can fully understand them. :stuck_out_tongue:

Then read what Stallman has to say about GPL and LGPL. It’s MUCH easier
to understand what Free Software is about in human language than in
"legalese".

To put it bluntly: an animated gif library is way too derivative
to be covered by the LGPL. Duh.> Date: Mon, 23 Oct 2006 00:51:23 -0200

From: “Daniel K. O.” <danielko.listas at gmail.com>

Doug escreveu:

Realize that not everyone just “gets” the LGPL instantly, and that there
are probably plenty of LGPL code out there that is in complete violation of
the terms of the agreement. All I’m trying to do is make 100% sure that
everything I do does not violate the license.

You are correct, sorry for being a bit harsh in my response.
It’s not too common for someone to contribute to a free softwre without
knowing what it means, so I incorrectly assumed things.–
Daniel K. O.

Quoting “Daniel K. O.” <danielko.listas at gmail.com>:

*-> Doug escreveu:
*-> > Realize that not everyone just “gets” the LGPL instantly, and that there
*-> > are probably plenty of LGPL code out there that is in complete violation
*-> of
*-> > the terms of the agreement. All I’m trying to do is make 100% sure that
*-> > everything I do does not violate the license.
*-> >
*-> You are correct, sorry for being a bit harsh in my response.
*-> It’s not too common for someone to contribute to a free softwre without
*-> knowing what it means, so I incorrectly assumed things.
*->
*->

crazeeman is released under the gpl what the fonze is the gpl :wink:

violation!

on that note, if conveysdl is in gentoo, and is beer and cigs ware, should i not
do the trendy thing and sue them?----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.