No, the only things that are exported are an exe file (on Windows) and a pck file. Or just an exe if you embed the pck. I'm not a lawyer, but I don't think that complies with all those licenses.
Complying with licenses - Why only FreeType, ENet and mbed require attribution?
Then best to manually copy and include the file with the rest of the export for distribution.
I think it would be a nice feature if Godot exports the third party notices along with the exe it generates. Unfortunately most people are not aware of these obligations. You can observe that with many games out there. But the question why the Godot documentation only mentions 3 libraries under the third party notice paragraph is still a mystery to me.
eggsa Well, it might be enough if you just acknowledge that you are using godot engine. Godot project itself gives all the further relevant attributions and credit already.
Yeah, that may be the case. Lots of commercial and open-source software uses open source and does not contain licenses on export (let's say an image created with GIMP). However, I think that might fall under the derivative work clause. I think it's clear an image you made with GIMP is not a derivative work from a JPEG library. Though a game made with Godot, I'm not sure if that is clear. But honestly, it would be hard to see a situation where you got sued for this, and there are likely thousands of Godot games and demos that haven't included a license text.
- Best Answerset by eggsa
The reason is because most open-source licenses are pretty flexible about how you present them to users, but these 3 libraries are very old and they're stuck with awkward licenses because some of their contributors are dead/unreachable to get their permission to change the licenses.
Anyway, current versions of all 70 licenses are included in the engine in a slightly convoluted format. I wrote a routine to make string with only the mandatory licenses, which you can display in a TextEdit or Label:
var license_text = "\n\n\nGODOT LICENSE\n\n" + Engine.get_license_text()
var components = Engine.get_copyright_info()
license_text += "\n\n\nTHIRD PARTY LIBRARIES\n\nWe are required to display license text for the following libraries included in the Godot Engine:"
var license_list = {}
var regex = RegEx.create_from_string("freetype|enet|mbed")
for component in components:
var name = component.name
if !regex.search(name.to_lower()):
continue
license_text += "\n" + name + "\n"
for part in component.parts:
license_list[part.license] = true
license_text += " License: " + part.license + "\n"
for line in part.copyright:
license_text += " Copyright " + line + "\n"
var licenses = Engine.get_license_info()
for k in licenses:
if license_list.has(k):
license_text += "\n\n\nLICENSE: " + k + "\n\n" + licenses[k]
Thanks. I believe having a button in the menu or options for "3rd party licenses" and showing a popup with that text is enough to cover you legally (for example, this is how it is done on iOS and Android).
cybereality Yep, it can even be buried 3 levels deep in Settings, that's how Android itself does it, lol.
- Edited
cybereality this is how it is done on iOS and Android
synthnostate that's how Android itself does it,
But keep in mind that Apple and Google are much more capable of fighting a lawsuit, or a threat of one, than an independent developer or small company.
DaveTheCoder But keep in mind that Apple and Google are much more capable of fighting a lawsuit
They are, but there is also a WHOLE LOT more money to gain if you win against Apple/Google. No one is going to bother suing some broke indie developer.
- Edited
cybereality Yeah, that may be the case. Lots of commercial and open-source software uses open source and does not contain licenses on export (let's say an image created with GIMP). However, I think that might fall under the derivative work clause. I think it's clear an image you made with GIMP is not a derivative work from a JPEG library. Though a game made with Godot, I'm not sure if that is clear. But honestly, it would be hard to see a situation where you got sued for this, and there are likely thousands of Godot games and demos that haven't included a license text.
With respect to source copyright (trademarks, patents and EULAs are different), the license of a tool doesn't apply to the output of that tool. Blender and Gimp are GPL, but that has no effect on things you make with them.
A EULA (End User License Agreement) can have an effect. For example 3DS Max educational licenses don't allow commercial use. You can't create a model for a commercial game using the educational version of Max.
So a jpeg library might have a license agreement on how the output can be used, but that's not related to the copyright of the library's source.
In the case of godot, any component that the godot editor uses but the godot runtime doesn't (so not present in the exported result at all, not just sitting there but not used) wouldn't need its copyright license included in a game. Also the zlib license used by some third party stuff in godot only requires attribution in source distributions, not binary distributions.
One area where licensing of art did affect games was MP3 audio. The owners of the MP3 patents required a license fee from any game that played MP3 files (plus from any program or library that could load or save MP3s). Luckily their patents have expired (plus OGG is better).
cybereality They are, but there is also a WHOLE LOT more money to gain if you win against Apple/Google. No one is going to bother suing some broke indie developer.
One example of going the opposite way is the Uniloc patent. Uniloc have a patent on mobile apps checking a license key against a remote server to verify you own the program before it runs. Google provides a library to do this in Android. But Uniloc doesn't go after google, they purely target small developers who use that library and can't afford court fees so quickly settle out of court. The company that made X-Plane fought them for years (iirc the estimated court costs were a couple of million dollars).
- Edited
I guess what I'm getting at is that some of the libraries used are exported. For example, Bullet Physics (with Godot 3.x). If you made a physics game (like Angry Birds) it could conceivably be considered derivative work.
Kojack Uniloc have a patent on mobile apps checking a license key against a remote server to verify you own the program before it runs. <…> they purely target small developers who use that library
So, the developers want to verify that their software is being used license-wise, but they don't want to pay for the verification tool? That's original. For some reason I have no sympathy for them.
In the game I'm developing (which may never be finished), I use HTTPRequest to send a license key to a web server on which I have an account. I wrote a server-side PHP script that checks the key against a list of keys in a file, and responds to the HTTPRequest.
Are you saying that violates a patent?
- Edited
DaveTheCoder Are you saying that violates a patent?
Depending on how exactly you implemented it, maybe. But they might opportunistically try to sue even if they are fairly certain that you aren't actually violating their patented mechanism for it because it's a patent trolling scare tactic.
DaveTheCoder Are you saying that violates a patent?
As far as I understood, in the described case we are talking about a specific library. But of course, no one cancelled the trolls.
DaveTheCoder In the game I'm developing (which may never be finished), I use HTTPRequest to send a license key to a web server on which I have an account. I wrote a server-side PHP script that checks the key against a list of keys in a file, and responds to the HTTPRequest.
Are you saying that violates a patent?
Apparently it does. Somehow, completely trivial ideas can be submitted for patent, approved, and upheld by judges. The whole patent system (not just software) is so corrupt it should just be abolished. However, in this case, if you're not using that Android library the patent troll will probably never know.
This dude got a patent for the wheel in 2001.
https://www.smh.com.au/national/this-is-patent-nonsense-20090522-bia2.html
- Edited
Megalomaniak Well, technically its not enough. The BSD-3 license for example says: "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.".
There are some good examples out there. For example, games from Microsoft like Age of Empires 4 or Forza Horizon 5 both contain a list of the third party libraries used inside their install directory. And for the game Gears 5 you can find the document which lists them online. Although it does somewhat shift away from my original question, it appears that the attribution requirement doesn't have a solid legal ground because its difficult to claim damage if someone uses your library but does not give attribution. It seems to be more of a moral obligation.
The same issue goes for Unreal Engine. They use a lot of third party libraries but hardly anyone considers listing them in the shipped game. So basically every game made with Unreal Engine that does not list any third party notices is infringing copyright in broad daylight. But the fact that there are no lawsuits around this (at least I am not aware of any) proves my point of a missing legal ground.
I went through the list of third party notices in Godot and found the following libraries that I do believe are also part of the engine itself which in turn is part of the shipped game:
Files: ./servers/physics_3d/collision_solver_3d_sat.cpp
Comment: Open Dynamics Engine
Copyright: 2001-2003, Russell L. Smith, Alen Ladavac, Nguyen Binh
License: BSD-3-clause
Files: ./thirdparty/libogg/
Comment: OggVorbis
Copyright: 2002, Xiph.org Foundation
License: BSD-3-clause
Files: ./thirdparty/vulkan/
Comment: Vulkan Headers
Copyright: 2014-2023, The Khronos Group Inc.
2014-2023, Valve Corporation
2014-2023, LunarG, Inc.
2015-2023, Google Inc.
License: Apache-2.0
They all require attribution even in binary form. Apache-2 is somewhat special as it appears to only require attribution in binary form if there is a notice file. But because some other libraries require you to have this notice file, Apache-2 will require attribution too in this context. Don't get me wrong. Godot is not doing anything wrong. They list all the licenses. Its just that some libraries seem missing in the documentation about complying with licenses. Of course, I could be wrong about assuming that the listed libraries are included in the engine that gets distributed, but it seems natural that for example a collision solver has to be part of the engine for physics simulation at runtime in a 3D game.
AAA games do usually have attribution, but it's at the end of the credits, if anyone watches the whole thing.