About the automatization of licences concatenation

Problem

ParaView/VTK contains many files of different licenses, and uses many third parties of different licenses, how can we (people building ParaView) distribute an accurate license file for the generated binaries, or even for the distribution of the sources?

Licensed files can be found at different locations but we can assume that a single module/directory in VTK/ParaView is distributed under a license specified in a file present in the directory.

Current solution

Licenses are gathered by the developers on different places, when they think about it.

VTK ThirdParty licenses are listed here but are very much out of date:
https://www.paraview.org/Wiki/VTK/ThirdPartyLicenses

ParaView ThirdParty licenses are listed here but are very much out of data:
https://www.paraview.org/Wiki/ParaView/ThirdPartyLicenses

ParaView also lists binaries licenses here, but are very much incomplete:
https://www.paraview.org/paraview-license/

A few licenses can also be found here:
https://gitlab.kitware.com/paraview/paraview/-/blob/master/License_v1.2.txt

As with documentation, keeping this kind of document up to date is hard and doing it after the fact is even harder, this is not the right way to go.

Better Solution

The solution I suggest is in multiple parts and can be done in multiple parts.

1. Generating a license file during configuration/build of the software

The idea would be to let VTK/ParaView module creator specify license files in the cmake module declaration. These license file will be recovered during configuration if a module is enabled and concatenated in a single file in the build/install of the software.
This has many advantages:

  • Multiple file formats can be supported, text file, SPDX, others ?
  • Only enabled modules license will be listed in the resulting file
  • This even covers remote modules !
  • This system works for third party modules
  • This system can be extended to any software using the VTK modules system, including ParaView
  • All license we accept in VTK/ParaView source code will be covered by this as the requirements are generally only to include a mention/copyright/license in the distributed software.

2. Generating a license file during the superbuild configuration

Using the same logic, each project of the ParaView superbuild could list their licence in their declaration and a similar mechanism will create the file. The advantages are the same and ensure no license will be forgotten.

  • Only enabled project licenses will be listed
  • System can be extended to any superbuild based software (CMB?)

3. The special case of plugins

ParaView plugins can have EULA to accept when loading them, so including the license of the plugin dependencies in the whole license of the ParaView binary is not a good indication of the license, as the library is only loaded on demand. Plugin license should be recovered in dedicated files in a dedicated folder in the build/install to be recovered if needed.

4. Generating a license file for the source

While not as critical, being able to generate a complete license file without building anything make sense, even if the license of each module is distributed in the module itself, having it generated in a single file would be nice. Parsing all the VTK modules for their license file using a script seems doable, especially there is already such scripts to show tree of module dependencies. There also should be some special cases for non-module directories under specific licenses.

This automatization is needed and will happen, this is for sure, but if you have inputs or special cases we may have missed, let us know !

3 Likes

ref: https://gitlab.kitware.com/paraview/paraview/-/issues/18818

1 Like

Good summary. I can’t think of any other cases to cover.

1 Like

This is moving forward, with a system to install module licenses now present in VTK and being used in VTK and ParaView.

I’m now looking at the superbuild.

The superbuild part has been merged, the next nightly should contains all licenses.

Only SPDX management and Plugins specific license remains.

2 Likes

spdx follow up in VTK discourse: https://discourse.vtk.org/t/about-using-spdx-to-handle-license-and-copyright-in-vtk/9647

As of b87a1dd905254327592ef904c5648f6ce8f89ba6, ParaView now supports generating .spdx files on build for list all licenses and copyrights.

This feature is used in the ParaView superbuild to generate such files in the binary release.

This conclude my SPDX work.

2 Likes