The license lets users:
-
Link the code to proprietary programs, and keep their proprietary code private.
-
Use the code in services online, without making the service itself follow the license.
It requires users to:
-
Make any and all changes they make to the code public for all to share and benefit from.
-
Give a patent grant if they use a patent
There is the usual legal terminology, and it is carefully written to close various loopholes existing in other licenses.
This one is easy. You can simply do so without having to do anything extra.
If you are just using the project in your code, you can do the following:
-
Fork the Github repo you likely downloaded the code from into your own company repo as a public project.
-
Tell those buying your software / licensing it that you are using the project by providing a link to that fork.
The license requires that the code you link to be available for a year, so it is best to fork the project to ensure you remain in control of keeping it available.
If you just linked to a random Github repo you used, it’s possible whoever put up that repo may pull it down when your users may still want to access it.
Just like the previous example, you need to mention to users, which includes users of the system within your company, that you are using the project.
You need to release your improvements. If you are using the changed code in any way you need to push the changes to a public repo for others to benefit within 90 days of using those changes yourself.
You further must identify your legal name publicly or the legal name of the entity to which the copyright for your changes belongs.
If you don’t want to reveal your name, you’ll need to give your changes to someone to own who is willing to do so. Or give the changes to a company and have them own the changes.
You’ll need to ensure that for each PR the legal name of the copyright owner of the change is known.
As this is uncommon with other licenses, you should probably add a contribution section to your readme and mention this so that people are aware it is necessary.
You can’t merge that PR. It is in violation of the license.
Easy enough. Just keep the license with the software and/or any binaries of it.
If you have to patch the project in some way to make it build for all your platforms, that patch is a modification and needs to be published. From the date of the patch you need to ensure the public can get that patch for 1 year.
That’s fine, if you license all the code where you use that bit under this license.
Even if you didn’t copy and paste, and simply wrote some code based on something you learned by reading the project, you cannot do so without keeping any resulting new code under the same license.
Any process by which you create code resulting from having done something with the licensed code, is considered by the license to be making a derivative.
You can’t just read the code and steal ideas from it without fairly placing those new ideas into the same license.
Okay, but as a result any output from your LLM may be required to be licensed under this license. Additionally you’ll have to tell every user of your LLM that your LLM ingested the project, and that any output may be tainted by the license.
As there is no way to tell if an output of the LLM used information gleaned from the project, you’ll need to treat ALL outputs of the LLM as under this license.
Essentially, don’t ingest the project into your LLM. The license allows it only if all outputs of your LLM are licensed under this license.
Okay, you can actually do this by creating your feature in a new project that links to the FCL instead of modifying the project itself.
If you do that you just have to state that you are using the project and share the code used and the license. Your new project using it does not have to be under the license.
You really shouldn’t do this sort of thing, as it isn’t in the spirit of cooperation, but it is allowed by the license.
I want to extend a feature in a FCL project to do more, but I don’t want my extension under this license
Ok, so like the previous example you probably are calling into the project via linking, but you’ve found you need to make some changes to the project to get your extension to function as needed.
This is a modification. It’s reasonable to add the extension into the project, and you are attempting to avoid that. You are in violation of the "Prohibition on Circumvention to PROVIDE".
Don’t do this. Share your change.
The documentation you created is considered a modification to the project. You need to:
-
Identify the legal name of the copyright owner of your change ( yourself or the company you work for )
-
Publish your new documentation publicly and license it under this license.
-
Ensure your published documentation is available online for at least 1 year. Just publish it to Github.
Any source code or configuration you created in the process of packaging needs to be published as well as it is considered SOURCE for the creation of the source tarball or BINARY package.
Yes. This is explicitly allowed by the license.
You may have to jump through some hoops in how your project is built to ensure that it follows the linking provision of LGPL.
That is, you probably are not allowed to directly compile LGPL code files and FCL code files together, as that isn’t considered "linking".
If you statically or dynamically link them in, that is likely fine. If in doubt, read the LGPL license carefully.
No. GPL is "contagious" and they insist that all code in a project be GPL. Don’t use GPL. Problem solved.
Whoever redistributed that binary to you without providing information about the source is violating the license. You should not use the binary. Delete it and inform whoever is redistributing the binary that they are violating the license.