panda3d liscense questions

This web page says panda has a “Free software license.”

In the LISCENSE file I downloaded with panda3d:

On the panda3d.org/license.php :

Does this mean that it is not allowed to develop commercial products with panda anymore? Or does the “sublicense” part allow for that?

I also noticed that panda uses the FMOD sound library. FMOD is not free software. If I want to sell a game I develop using panda3d do I have to buy an FMOD liscense as well? Is it okay if I never invoke that library? If not, and I do, does the “modify, merge” part allow me to cut that out and use my own sound library?

Are there any other non-free libraries bundled with this “free software” I have to worry about before I can sell a commercial game made using panda3d?

On the panda3d.org/license.php :

“A modification is any change, deletion or addition made to the Software code.” What does “Software code.” mean? Is this like the LGPL where any changes to the library must be open but anything linked doesn’t have to? In other words, do I have to email Panda.Project@Disney.com all of my python scripted game logic or just changes made to the engine itself?

Developing and distributing commercial products is intended to be allowed by the license.

Yes, the license for FMOD is independent of the license for Panda3D. If you distribute a game using FMOD with Panda, you will need to buy an FMOD license. If you don’t intend to use FMOD, you can simply avoid distributing libfmod_audio.dll, which is where all of the Panda code that interfaces with FMOD is contained. You are also certainly free to use your own sound ilbrary of choice.

To my knowledge, FMOD is the only library that has a commercial license. You may or may not be concerned by the GPL license associated with libfftw. Most of the other libraries that Panda makes use of have, I believe, fairly unrestrictive licenses.

A modification is a change to the engine itself, so any game that you write that uses the engine does not fall under this category. Also, note that you are not required to send us any changes you make to the engine; it’s just intended to be a suggestion.

I am compelled to point out that my interpretation of the license is just my own opinion, which may or may not be shared by a court of law. The license stands on its own, as must any license. But I am expressing the intent of the original developers, which our lawyers attempted to encode in this license.

Note that we have recently been making real progress towards replacing this license, which nobody likes, with something less confusing and more universally identifiable as a truly free license. While I cannot give a specific timetable towards achieving this goal, it is my hope that it will happen by the time you finish any project you might start now. :slight_smile: Of course, as with any legal matter, my personal hopes cannot be taken as a legally binding promise.

David

I did a search for all the files installed with Panda3D that had “fmod” in the filename:

libfmod_audio.dll
fmod.dll
libfmod_audio.lib
fmodAudioSound.I
fmodAudioSound.h
fmodAudioManager.h
config_fmodAudio.h

I don’t want to include FMOD with my distrubutions. If I never intend to invoke the fmod library can I safely remove these files without breaking panda? Also, are those files all of FMOD that was included or do I have to change the panda source and recompile?

That depends. Would it require me to make the game logic open as well? I assume Toontown’s game logic code is proprietary and yet uses the libfftw as well, so maybe that’s not a problem? Why else should I be concerned?

Of all those files you name, the only one that is actually part of FMOD is fmod.dll. The others are the Panda3D code that interfaces with FMOD, which is technically under the same Panda3D license with the rest of the Panda3D code. You can remove them if it makes you more comfortable without damaging Panda, but you don’t need to remove them to avoid using FMOD. Also, for the record, only the two dll’s are actually part of any binary distribution; the other files are used for building the source and never need be distributed in any case.

Since fftw is released under the GPL (unless you make other arrangements with the distributors of fftw) then by the terms of the GPL any code that uses it, either directly or indirectly, is also under the GPL. This presumably includes all of your application code as well. If you intend to release your application under the GPL, this should not be a problem for you. If, however, you intend to keep your application under a closed-source license, then you should either not use fftw or you should arrange an appropriate closed-source-compatible license from the fftw distributors. If you decide not to use fftw, then to strictly follow the terms of the GPL you should download the source version of Panda and compile a version yourself that does not even link with fftw (since the prebuilt binary provided here links with it).

David

Okay, dll is FMOD and the others are harmless.

I would perfer to avoid using the GNU GPL. Is that an option? I mean, can I easily do without libfftw, or is it integrated into the scenegraph calculations or something so I would have to find a replacement or code one from scratch? Is libfftw even included in the binary distribution of panda3D? I don’t even know what use panda3D has for a Fourier transform. What’s it for?

From the GNU GPL version 2 gnu.org/copyleft/gpl.html

If panda doesn’t include libfftw and my subliscence forbids modification, is removing the links really nessecary? In other words, can Panda3D be resonably considered an independent and seperate work in itself when distributed without the Fastest Fourier Transform in the West?

You can easily do without fftw. It is used for storing highly compressed animation channels in the bam format. If you don’t have fftw, or elect not to use it, you can store animation channels uncompressed. (You can then use the bam.pz format to compress the whole file, if you like.)

Seems reasonable to me. Certainly no code in Panda3D is derived from any code in fftw. So if you compile a version of Panda that does not link with fftw, clearly the GPL does not apply to Panda in that case. The situation is less clear when you have compiled a version of Panda that does link with fftw, so that the fftw code becomes a part of libpanda.dll by virtue of the linker’s operations, even if you never use that code.

David

Thank you drwr, that helps a lot.

I have started a new thread in the Source Compilation forum about this:
Where to remove fftw links

:open_mouth: Wait a second. How can Walt Disney Imagineering (legally) release Panda3D under the “PANDA 3D PUBLIC LICENSE” if it uses a GPL’ed library anyway?

I read over the GPL. It expressly forbids distribution of derivative works under any liscense other than a version of the GPL.

From the GNU GPL under “TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION” (emphasis added)

There are only two ways around this. One is if the copyright holder liscenses it to you under different terms:

The other is if the software in no way contains part of the GPL’ed code.

That means if the “PANDA 3D PUBLIC LICENSE” (I’ll call it PPL for short) is legal for Panda3D, then presumably Walt Disney Imagineering obtained liscense from the copyright holders allowing them to subliscense under the terms of the PPL and I don’t have to remove the GPL’ed library after all, because I can use the PPL instead of the GPL.

If, on the other hand, Walt Disney Imagineering did not obtain permission from the copyright holder then they [b]cannot legally include GPL’ed code in something distributed under the PPL. [/b]If they cannot obtain permission from the copyright holder as per GPL section 10, they must either:

  1. Entirely replace the PPL with the GPL (But as I said before, I can’t use GPL’ed code in a commercial game so I would perfer the second option.)

  2. Remove the GPL’ed code from all available versions of Panda3D. (And I don’t have to remove the GPL’ed library after all, because they have to do it for me. :stuck_out_tongue:)

So, which is it? If I made any mistake in my interpretation, please, correct me. 8)

Yeah, we just realized this unintentional oversight too, and we’re on it. We’ll remove fftw from the next release.

David

That makes me feel better about fftw. :slight_smile:

But now I’m worried about the other third party licenses.

I checked INSTALL-MK from version 1.2.2. It mentioned 18 (I assume that’s all of them) third-party components, but I’m unsure of all the licenses: * ZLIB-Very unrestrictive license.

  • PNG-Unpatented alternative to GIF.
  • JPEG-Patent is disputed, but probably not a problem.
  • TIFF-Image standard, but I don’t know the license.
  • VRPN-What is this?
  • FMOD-Proprietary, but I can easily remove the .dll’s
  • NVIDIACG-Varient of C for shaders, fairly unrestrictive license.
  • HELIX-RealNetworks has released HELIX (or parts of it) under at least three different licenses.
  • NSPR-Netscape Portable Runtime. I can’t find license information anywhere.
  • OPENSSL-Strong cryptography. Fairly unrestrictive license, subject to export conrols. Patent issues.
  • FREETYPE-For rendering text. Fairly unrestrictive license. Patent issues.
  • FFTW-GPL, but will be removed from the next release :wink:
  • MILES-What is this?
  • MAYA5, MAYA6 -Maya models? What’s the license?
  • MAX5, MAX6, MAX7 -Presumably 3D Studio Max? What’s the license?
    The ones in bold I’m unsure of, but the others I’m fairly comfortable with. Some of the “fairly unrestrictive” licenses do have some restrictions. Like a BSD style obnoxious advertising clause or a requirement of copyright notice. It would be nice if the next PPL version made mention of these third-party requirements, and described how to meet them.

See www.libtiff.org. Fairly unrestrictive license.

This is code from UNC to manage devices like trackers, joysticks, etc. Public domain. See http://www.cs.unc.edu/Research/vrpn/.

The Helix libraries are no longer distributed with Panda.

See http://www.mozilla.org/projects/nspr/. The license is under the MPL, which is a fairly unrestrictive license.

Not part of the public Panda distribution.

No Maya code is distributed with Panda. In order to use maya2egg etc., the user must supply the Maya dll’s locally.


MAX5, MAX6, MAX7 -Presumably 3D Studio Max? What's the license?

Similar to the Maya case. The user must supply the required 3DSMax dll’s.

David