• Godot HelpQuestion
  • Complying with licenses - Why only FreeType, ENet and mbed require attribution?

I came across the Complying with liceneses article in the Godot documentation. The article has a paragraph on Third-party licenses and states that only FreeType, ENet and mbed TLS require attribution in the final export. However, Godot lists much more third-party dependencies in COPYRIGHT.txt with licenses such as BSD-3-clause. Are these libraries only used for the editor of the engine or why do I not have to list them in the export?

  • 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]

The copyright text includes items licensed as public domain, so they've obviously included some citations that they weren't legally required to. I do that myself sometimes.

My guess is that the engine editor and export templates use different libraries. For example, WebP is included but it may be compressed to a GPU texture format on export, meaning you would not need to include attribution for that, since WebP files are only imported, not exported. But I do find it suspect that some of the other ones aren't, as attribution with common licenses like BSD is required. I would do your own research.

    cybereality But I do find it suspect that some of the other ones aren't, as attribution with common licenses like BSD is required.

    assuming the copyright.txt gets exported along the executable it would cover that. But I haven't checked if it does get exported alongside the executable.

    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.

    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.

          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 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.

                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).

                  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?

                      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.