[libcamera-devel,PATCH/RFC,00/11] Improve license information
mbox series

Message ID 20200213153635.27953-1-laurent.pinchart@ideasonboard.com
Headers show
Series
  • Improve license information
Related show

Message

Laurent Pinchart Feb. 13, 2020, 3:36 p.m. UTC
Hello,

The REUSE specification [1] defines a standardized method for declaring
copyright and licensing information, based on SPDX. It comes with a
compliance tool that can check for compliance and produce reports, as
well as licensing information to generate packages.

libcamera already uses SPDX tags to specify license information, but we
haven't been using them very consistently, as shown by the "reuse lint"
tool. This series is an initial step towards REUSE compliance, and fixes
a few real issues.

I've marked the patches as RFC as it's not clear to me how far we need
to go. Adding an SPDX header to include/linux/README, for instance,
seems overkill to me. I'm also not sure what license to pick for
meson.build files. Comments are more than welcome.

[1] https://reuse.software/spec/

Laurent Pinchart (11):
  licenses: Rename license files according to REUSE
  licenses: Add missing licenses
  licenses: Remove unused LGPL-2.1
  licenses: Replace deprecated GPL-2.0 with GPL-2.0-only
  licenses: Move developer's certificate of origin to Documentation/
  licenses: Add SPDX headers to RST documentation
  licenses: Add SPDX headers to Doxygen configuration
  licenses: Add SPDX headers to the website builder and theme
  licenses: Add SPDX headers to all meson files
  licenses: Add SPDX headers to the git commit hook scripts
  licenses: Add SPDX headers to Gentoo ebuild

 .clang-format                                 |   2 +-
 .gitignore                                    |   2 +
 Documentation/Doxyfile.in                     |   1 +
 Documentation/api-html/index.rst              |   2 +
 Documentation/coding-style.rst                |   2 +
 Documentation/conf.py                         |   1 +
 Documentation/contributing.rst                |   2 +
 .../developer-certificate-of-origin.txt       |   0
 Documentation/docs.rst                        |   2 +
 Documentation/index.rst                       |   2 +
 Documentation/meson.build                     |   2 +
 Documentation/theme/footer.html               |   3 +
 Documentation/theme/layout.html               |   3 +
 Documentation/theme/search.html               |   3 +
 Documentation/theme/static/css/theme.css      |   2 +
 Documentation/theme/theme.conf                |   2 +
 .../apache-2.0.txt => LICENSES/Apache-2.0.txt |   0
 LICENSES/BSD-3-Clause.txt                     |  26 +
 .../CC-BY-SA-4.0.txt                          |   0
 LICENSES/GPL-2.0+.txt                         |   1 +
 .../GPL-2.0-only.txt                          |   0
 LICENSES/GPL-2.0-or-later.txt                 | 319 +++++++++++
 LICENSES/GPL-2.0.txt                          |   1 +
 LICENSES/LGPL-2.1-or-later.txt                | 468 ++++++++++++++++
 LICENSES/Linux-syscall-note.txt               |   5 +
 LICENSES/MIT.txt                              |  19 +
 README.rst                                    |   2 +
 include/android/meson.build                   |   2 +
 include/ipa/meson.build                       |   2 +
 include/libcamera/meson.build                 |   2 +
 include/meson.build                           |   2 +
 licenses/gnu-lgpl-2.1.txt                     | 502 ------------------
 meson.build                                   |   2 +
 meson_options.txt                             |   2 +
 .../libcamera/libcamera-9999.ebuild           |   2 +-
 src/android/meson.build                       |   2 +
 src/cam/meson.build                           |   2 +
 src/ipa/libipa/meson.build                    |   2 +
 src/ipa/meson.build                           |   2 +
 src/ipa/rkisp1/meson.build                    |   2 +
 src/libcamera/include/meson.build             |   2 +
 src/libcamera/meson.build                     |   2 +
 src/libcamera/pipeline/ipu3/meson.build       |   2 +
 src/libcamera/pipeline/meson.build            |   2 +
 src/libcamera/pipeline/rkisp1/meson.build     |   2 +
 src/libcamera/proxy/meson.build               |   2 +
 src/libcamera/proxy/worker/meson.build        |   2 +
 src/meson.build                               |   2 +
 src/qcam/meson.build                          |   2 +
 src/v4l2/meson.build                          |   2 +
 test/camera/meson.build                       |   2 +
 test/controls/meson.build                     |   2 +
 test/ipa/meson.build                          |   2 +
 test/ipc/meson.build                          |   2 +
 test/libtest/meson.build                      |   2 +
 test/log/meson.build                          |   2 +
 test/media_device/meson.build                 |   2 +
 test/meson.build                              |   2 +
 test/pipeline/ipu3/meson.build                |   2 +
 test/pipeline/meson.build                     |   2 +
 test/pipeline/rkisp1/meson.build              |   2 +
 test/process/meson.build                      |   2 +
 test/serialization/meson.build                |   2 +
 test/stream/meson.build                       |   2 +
 test/v4l2_subdevice/meson.build               |   2 +
 test/v4l2_videodevice/meson.build             |   2 +
 utils/hooks/post-commit                       |   2 +
 utils/hooks/pre-commit                        |   2 +
 utils/ipu3/meson.build                        |   2 +
 utils/meson.build                             |   2 +
 70 files changed, 954 insertions(+), 504 deletions(-)
 rename {licenses => Documentation}/developer-certificate-of-origin.txt (100%)
 rename licenses/apache-2.0.txt => LICENSES/Apache-2.0.txt (100%)
 create mode 100644 LICENSES/BSD-3-Clause.txt
 rename licenses/cc-by-sa-v4.0.txt => LICENSES/CC-BY-SA-4.0.txt (100%)
 create mode 120000 LICENSES/GPL-2.0+.txt
 rename licenses/gnu-gpl-2.0.txt => LICENSES/GPL-2.0-only.txt (100%)
 create mode 100644 LICENSES/GPL-2.0-or-later.txt
 create mode 120000 LICENSES/GPL-2.0.txt
 create mode 100644 LICENSES/LGPL-2.1-or-later.txt
 create mode 100644 LICENSES/Linux-syscall-note.txt
 create mode 100644 LICENSES/MIT.txt
 delete mode 100644 licenses/gnu-lgpl-2.1.txt

Comments

Kieran Bingham Feb. 13, 2020, 4:41 p.m. UTC | #1
Hi Laurent,

On 13/02/2020 15:36, Laurent Pinchart wrote:
> Hello,
> 
> The REUSE specification [1] defines a standardized method for declaring
> copyright and licensing information, based on SPDX. It comes with a
> compliance tool that can check for compliance and produce reports, as
> well as licensing information to generate packages.
> 
> libcamera already uses SPDX tags to specify license information, but we
> haven't been using them very consistently, as shown by the "reuse lint"
> tool. This series is an initial step towards REUSE compliance, and fixes
> a few real issues.
> 
> I've marked the patches as RFC as it's not clear to me how far we need
> to go. Adding an SPDX header to include/linux/README, for instance,
> seems overkill to me. I'm also not sure what license to pick for
> meson.build files. Comments are more than welcome.

Meson.build files are part of the build system required to build the
library, so I agree on LGPL.

I think that would include the ebuild files, or anything we create to
actually generate libcamera.

--
Kieran



> [1] https://reuse.software/spec/
> 
> Laurent Pinchart (11):
>   licenses: Rename license files according to REUSE
>   licenses: Add missing licenses
>   licenses: Remove unused LGPL-2.1
>   licenses: Replace deprecated GPL-2.0 with GPL-2.0-only
>   licenses: Move developer's certificate of origin to Documentation/
>   licenses: Add SPDX headers to RST documentation
>   licenses: Add SPDX headers to Doxygen configuration
>   licenses: Add SPDX headers to the website builder and theme
>   licenses: Add SPDX headers to all meson files
>   licenses: Add SPDX headers to the git commit hook scripts
>   licenses: Add SPDX headers to Gentoo ebuild
> 
>  .clang-format                                 |   2 +-
>  .gitignore                                    |   2 +
>  Documentation/Doxyfile.in                     |   1 +
>  Documentation/api-html/index.rst              |   2 +
>  Documentation/coding-style.rst                |   2 +
>  Documentation/conf.py                         |   1 +
>  Documentation/contributing.rst                |   2 +
>  .../developer-certificate-of-origin.txt       |   0
>  Documentation/docs.rst                        |   2 +
>  Documentation/index.rst                       |   2 +
>  Documentation/meson.build                     |   2 +
>  Documentation/theme/footer.html               |   3 +
>  Documentation/theme/layout.html               |   3 +
>  Documentation/theme/search.html               |   3 +
>  Documentation/theme/static/css/theme.css      |   2 +
>  Documentation/theme/theme.conf                |   2 +
>  .../apache-2.0.txt => LICENSES/Apache-2.0.txt |   0
>  LICENSES/BSD-3-Clause.txt                     |  26 +
>  .../CC-BY-SA-4.0.txt                          |   0
>  LICENSES/GPL-2.0+.txt                         |   1 +
>  .../GPL-2.0-only.txt                          |   0
>  LICENSES/GPL-2.0-or-later.txt                 | 319 +++++++++++
>  LICENSES/GPL-2.0.txt                          |   1 +
>  LICENSES/LGPL-2.1-or-later.txt                | 468 ++++++++++++++++
>  LICENSES/Linux-syscall-note.txt               |   5 +
>  LICENSES/MIT.txt                              |  19 +
>  README.rst                                    |   2 +
>  include/android/meson.build                   |   2 +
>  include/ipa/meson.build                       |   2 +
>  include/libcamera/meson.build                 |   2 +
>  include/meson.build                           |   2 +
>  licenses/gnu-lgpl-2.1.txt                     | 502 ------------------
>  meson.build                                   |   2 +
>  meson_options.txt                             |   2 +
>  .../libcamera/libcamera-9999.ebuild           |   2 +-
>  src/android/meson.build                       |   2 +
>  src/cam/meson.build                           |   2 +
>  src/ipa/libipa/meson.build                    |   2 +
>  src/ipa/meson.build                           |   2 +
>  src/ipa/rkisp1/meson.build                    |   2 +
>  src/libcamera/include/meson.build             |   2 +
>  src/libcamera/meson.build                     |   2 +
>  src/libcamera/pipeline/ipu3/meson.build       |   2 +
>  src/libcamera/pipeline/meson.build            |   2 +
>  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
>  src/libcamera/proxy/meson.build               |   2 +
>  src/libcamera/proxy/worker/meson.build        |   2 +
>  src/meson.build                               |   2 +
>  src/qcam/meson.build                          |   2 +
>  src/v4l2/meson.build                          |   2 +
>  test/camera/meson.build                       |   2 +
>  test/controls/meson.build                     |   2 +
>  test/ipa/meson.build                          |   2 +
>  test/ipc/meson.build                          |   2 +
>  test/libtest/meson.build                      |   2 +
>  test/log/meson.build                          |   2 +
>  test/media_device/meson.build                 |   2 +
>  test/meson.build                              |   2 +
>  test/pipeline/ipu3/meson.build                |   2 +
>  test/pipeline/meson.build                     |   2 +
>  test/pipeline/rkisp1/meson.build              |   2 +
>  test/process/meson.build                      |   2 +
>  test/serialization/meson.build                |   2 +
>  test/stream/meson.build                       |   2 +
>  test/v4l2_subdevice/meson.build               |   2 +
>  test/v4l2_videodevice/meson.build             |   2 +
>  utils/hooks/post-commit                       |   2 +
>  utils/hooks/pre-commit                        |   2 +
>  utils/ipu3/meson.build                        |   2 +
>  utils/meson.build                             |   2 +
>  70 files changed, 954 insertions(+), 504 deletions(-)
>  rename {licenses => Documentation}/developer-certificate-of-origin.txt (100%)
>  rename licenses/apache-2.0.txt => LICENSES/Apache-2.0.txt (100%)
>  create mode 100644 LICENSES/BSD-3-Clause.txt
>  rename licenses/cc-by-sa-v4.0.txt => LICENSES/CC-BY-SA-4.0.txt (100%)
>  create mode 120000 LICENSES/GPL-2.0+.txt
>  rename licenses/gnu-gpl-2.0.txt => LICENSES/GPL-2.0-only.txt (100%)
>  create mode 100644 LICENSES/GPL-2.0-or-later.txt
>  create mode 120000 LICENSES/GPL-2.0.txt
>  create mode 100644 LICENSES/LGPL-2.1-or-later.txt
>  create mode 100644 LICENSES/Linux-syscall-note.txt
>  create mode 100644 LICENSES/MIT.txt
>  delete mode 100644 licenses/gnu-lgpl-2.1.txt
>
Laurent Pinchart Feb. 13, 2020, 4:44 p.m. UTC | #2
Hi Kieran,

On Thu, Feb 13, 2020 at 04:41:38PM +0000, Kieran Bingham wrote:
> On 13/02/2020 15:36, Laurent Pinchart wrote:
> > Hello,
> > 
> > The REUSE specification [1] defines a standardized method for declaring
> > copyright and licensing information, based on SPDX. It comes with a
> > compliance tool that can check for compliance and produce reports, as
> > well as licensing information to generate packages.
> > 
> > libcamera already uses SPDX tags to specify license information, but we
> > haven't been using them very consistently, as shown by the "reuse lint"
> > tool. This series is an initial step towards REUSE compliance, and fixes
> > a few real issues.
> > 
> > I've marked the patches as RFC as it's not clear to me how far we need
> > to go. Adding an SPDX header to include/linux/README, for instance,
> > seems overkill to me. I'm also not sure what license to pick for
> > meson.build files. Comments are more than welcome.
> 
> Meson.build files are part of the build system required to build the
> library, so I agree on LGPL.
> 
> I think that would include the ebuild files, or anything we create to
> actually generate libcamera.

But they are also used to build the documentation, under CC-BY-SA-4.0,
the cam and qcam application, under GPL-2.0-or-later, the Android
metadata library, under Apache-2.0, ...

> > [1] https://reuse.software/spec/
> > 
> > Laurent Pinchart (11):
> >   licenses: Rename license files according to REUSE
> >   licenses: Add missing licenses
> >   licenses: Remove unused LGPL-2.1
> >   licenses: Replace deprecated GPL-2.0 with GPL-2.0-only
> >   licenses: Move developer's certificate of origin to Documentation/
> >   licenses: Add SPDX headers to RST documentation
> >   licenses: Add SPDX headers to Doxygen configuration
> >   licenses: Add SPDX headers to the website builder and theme
> >   licenses: Add SPDX headers to all meson files
> >   licenses: Add SPDX headers to the git commit hook scripts
> >   licenses: Add SPDX headers to Gentoo ebuild
> > 
> >  .clang-format                                 |   2 +-
> >  .gitignore                                    |   2 +
> >  Documentation/Doxyfile.in                     |   1 +
> >  Documentation/api-html/index.rst              |   2 +
> >  Documentation/coding-style.rst                |   2 +
> >  Documentation/conf.py                         |   1 +
> >  Documentation/contributing.rst                |   2 +
> >  .../developer-certificate-of-origin.txt       |   0
> >  Documentation/docs.rst                        |   2 +
> >  Documentation/index.rst                       |   2 +
> >  Documentation/meson.build                     |   2 +
> >  Documentation/theme/footer.html               |   3 +
> >  Documentation/theme/layout.html               |   3 +
> >  Documentation/theme/search.html               |   3 +
> >  Documentation/theme/static/css/theme.css      |   2 +
> >  Documentation/theme/theme.conf                |   2 +
> >  .../apache-2.0.txt => LICENSES/Apache-2.0.txt |   0
> >  LICENSES/BSD-3-Clause.txt                     |  26 +
> >  .../CC-BY-SA-4.0.txt                          |   0
> >  LICENSES/GPL-2.0+.txt                         |   1 +
> >  .../GPL-2.0-only.txt                          |   0
> >  LICENSES/GPL-2.0-or-later.txt                 | 319 +++++++++++
> >  LICENSES/GPL-2.0.txt                          |   1 +
> >  LICENSES/LGPL-2.1-or-later.txt                | 468 ++++++++++++++++
> >  LICENSES/Linux-syscall-note.txt               |   5 +
> >  LICENSES/MIT.txt                              |  19 +
> >  README.rst                                    |   2 +
> >  include/android/meson.build                   |   2 +
> >  include/ipa/meson.build                       |   2 +
> >  include/libcamera/meson.build                 |   2 +
> >  include/meson.build                           |   2 +
> >  licenses/gnu-lgpl-2.1.txt                     | 502 ------------------
> >  meson.build                                   |   2 +
> >  meson_options.txt                             |   2 +
> >  .../libcamera/libcamera-9999.ebuild           |   2 +-
> >  src/android/meson.build                       |   2 +
> >  src/cam/meson.build                           |   2 +
> >  src/ipa/libipa/meson.build                    |   2 +
> >  src/ipa/meson.build                           |   2 +
> >  src/ipa/rkisp1/meson.build                    |   2 +
> >  src/libcamera/include/meson.build             |   2 +
> >  src/libcamera/meson.build                     |   2 +
> >  src/libcamera/pipeline/ipu3/meson.build       |   2 +
> >  src/libcamera/pipeline/meson.build            |   2 +
> >  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
> >  src/libcamera/proxy/meson.build               |   2 +
> >  src/libcamera/proxy/worker/meson.build        |   2 +
> >  src/meson.build                               |   2 +
> >  src/qcam/meson.build                          |   2 +
> >  src/v4l2/meson.build                          |   2 +
> >  test/camera/meson.build                       |   2 +
> >  test/controls/meson.build                     |   2 +
> >  test/ipa/meson.build                          |   2 +
> >  test/ipc/meson.build                          |   2 +
> >  test/libtest/meson.build                      |   2 +
> >  test/log/meson.build                          |   2 +
> >  test/media_device/meson.build                 |   2 +
> >  test/meson.build                              |   2 +
> >  test/pipeline/ipu3/meson.build                |   2 +
> >  test/pipeline/meson.build                     |   2 +
> >  test/pipeline/rkisp1/meson.build              |   2 +
> >  test/process/meson.build                      |   2 +
> >  test/serialization/meson.build                |   2 +
> >  test/stream/meson.build                       |   2 +
> >  test/v4l2_subdevice/meson.build               |   2 +
> >  test/v4l2_videodevice/meson.build             |   2 +
> >  utils/hooks/post-commit                       |   2 +
> >  utils/hooks/pre-commit                        |   2 +
> >  utils/ipu3/meson.build                        |   2 +
> >  utils/meson.build                             |   2 +
> >  70 files changed, 954 insertions(+), 504 deletions(-)
> >  rename {licenses => Documentation}/developer-certificate-of-origin.txt (100%)
> >  rename licenses/apache-2.0.txt => LICENSES/Apache-2.0.txt (100%)
> >  create mode 100644 LICENSES/BSD-3-Clause.txt
> >  rename licenses/cc-by-sa-v4.0.txt => LICENSES/CC-BY-SA-4.0.txt (100%)
> >  create mode 120000 LICENSES/GPL-2.0+.txt
> >  rename licenses/gnu-gpl-2.0.txt => LICENSES/GPL-2.0-only.txt (100%)
> >  create mode 100644 LICENSES/GPL-2.0-or-later.txt
> >  create mode 120000 LICENSES/GPL-2.0.txt
> >  create mode 100644 LICENSES/LGPL-2.1-or-later.txt
> >  create mode 100644 LICENSES/Linux-syscall-note.txt
> >  create mode 100644 LICENSES/MIT.txt
> >  delete mode 100644 licenses/gnu-lgpl-2.1.txt
Kieran Bingham Feb. 13, 2020, 4:52 p.m. UTC | #3
On 13/02/2020 16:44, Laurent Pinchart wrote:
> Hi Kieran,
> 
> On Thu, Feb 13, 2020 at 04:41:38PM +0000, Kieran Bingham wrote:
>> On 13/02/2020 15:36, Laurent Pinchart wrote:
>>> Hello,
>>>
>>> The REUSE specification [1] defines a standardized method for declaring
>>> copyright and licensing information, based on SPDX. It comes with a
>>> compliance tool that can check for compliance and produce reports, as
>>> well as licensing information to generate packages.
>>>
>>> libcamera already uses SPDX tags to specify license information, but we
>>> haven't been using them very consistently, as shown by the "reuse lint"
>>> tool. This series is an initial step towards REUSE compliance, and fixes
>>> a few real issues.
>>>
>>> I've marked the patches as RFC as it's not clear to me how far we need
>>> to go. Adding an SPDX header to include/linux/README, for instance,
>>> seems overkill to me. I'm also not sure what license to pick for
>>> meson.build files. Comments are more than welcome.
>>
>> Meson.build files are part of the build system required to build the
>> library, so I agree on LGPL.
>>
>> I think that would include the ebuild files, or anything we create to
>> actually generate libcamera.
> 
> But they are also used to build the documentation, under CC-BY-SA-4.0,
> the cam and qcam application, under GPL-2.0-or-later, the Android
> metadata library, under Apache-2.0, ...

Indeed, but it's only libcamera.so that other projects will link
against, and I don't "think" having LGPL has any effect on the build of
the documentation, or cam/qcam.

As the Android metadata library is just 'used' by libcamera.so, I don't
think it has much effect there?

Who knows. ... IANAL :-)

Do we need to hire a lawyer to tell us the right answer? Or perhaps ask
FSF or such an organisation?

--
Kieran.



> 
>>> [1] https://reuse.software/spec/
>>>
>>> Laurent Pinchart (11):
>>>   licenses: Rename license files according to REUSE
>>>   licenses: Add missing licenses
>>>   licenses: Remove unused LGPL-2.1
>>>   licenses: Replace deprecated GPL-2.0 with GPL-2.0-only
>>>   licenses: Move developer's certificate of origin to Documentation/
>>>   licenses: Add SPDX headers to RST documentation
>>>   licenses: Add SPDX headers to Doxygen configuration
>>>   licenses: Add SPDX headers to the website builder and theme
>>>   licenses: Add SPDX headers to all meson files
>>>   licenses: Add SPDX headers to the git commit hook scripts
>>>   licenses: Add SPDX headers to Gentoo ebuild
>>>
>>>  .clang-format                                 |   2 +-
>>>  .gitignore                                    |   2 +
>>>  Documentation/Doxyfile.in                     |   1 +
>>>  Documentation/api-html/index.rst              |   2 +
>>>  Documentation/coding-style.rst                |   2 +
>>>  Documentation/conf.py                         |   1 +
>>>  Documentation/contributing.rst                |   2 +
>>>  .../developer-certificate-of-origin.txt       |   0
>>>  Documentation/docs.rst                        |   2 +
>>>  Documentation/index.rst                       |   2 +
>>>  Documentation/meson.build                     |   2 +
>>>  Documentation/theme/footer.html               |   3 +
>>>  Documentation/theme/layout.html               |   3 +
>>>  Documentation/theme/search.html               |   3 +
>>>  Documentation/theme/static/css/theme.css      |   2 +
>>>  Documentation/theme/theme.conf                |   2 +
>>>  .../apache-2.0.txt => LICENSES/Apache-2.0.txt |   0
>>>  LICENSES/BSD-3-Clause.txt                     |  26 +
>>>  .../CC-BY-SA-4.0.txt                          |   0
>>>  LICENSES/GPL-2.0+.txt                         |   1 +
>>>  .../GPL-2.0-only.txt                          |   0
>>>  LICENSES/GPL-2.0-or-later.txt                 | 319 +++++++++++
>>>  LICENSES/GPL-2.0.txt                          |   1 +
>>>  LICENSES/LGPL-2.1-or-later.txt                | 468 ++++++++++++++++
>>>  LICENSES/Linux-syscall-note.txt               |   5 +
>>>  LICENSES/MIT.txt                              |  19 +
>>>  README.rst                                    |   2 +
>>>  include/android/meson.build                   |   2 +
>>>  include/ipa/meson.build                       |   2 +
>>>  include/libcamera/meson.build                 |   2 +
>>>  include/meson.build                           |   2 +
>>>  licenses/gnu-lgpl-2.1.txt                     | 502 ------------------
>>>  meson.build                                   |   2 +
>>>  meson_options.txt                             |   2 +
>>>  .../libcamera/libcamera-9999.ebuild           |   2 +-
>>>  src/android/meson.build                       |   2 +
>>>  src/cam/meson.build                           |   2 +
>>>  src/ipa/libipa/meson.build                    |   2 +
>>>  src/ipa/meson.build                           |   2 +
>>>  src/ipa/rkisp1/meson.build                    |   2 +
>>>  src/libcamera/include/meson.build             |   2 +
>>>  src/libcamera/meson.build                     |   2 +
>>>  src/libcamera/pipeline/ipu3/meson.build       |   2 +
>>>  src/libcamera/pipeline/meson.build            |   2 +
>>>  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
>>>  src/libcamera/proxy/meson.build               |   2 +
>>>  src/libcamera/proxy/worker/meson.build        |   2 +
>>>  src/meson.build                               |   2 +
>>>  src/qcam/meson.build                          |   2 +
>>>  src/v4l2/meson.build                          |   2 +
>>>  test/camera/meson.build                       |   2 +
>>>  test/controls/meson.build                     |   2 +
>>>  test/ipa/meson.build                          |   2 +
>>>  test/ipc/meson.build                          |   2 +
>>>  test/libtest/meson.build                      |   2 +
>>>  test/log/meson.build                          |   2 +
>>>  test/media_device/meson.build                 |   2 +
>>>  test/meson.build                              |   2 +
>>>  test/pipeline/ipu3/meson.build                |   2 +
>>>  test/pipeline/meson.build                     |   2 +
>>>  test/pipeline/rkisp1/meson.build              |   2 +
>>>  test/process/meson.build                      |   2 +
>>>  test/serialization/meson.build                |   2 +
>>>  test/stream/meson.build                       |   2 +
>>>  test/v4l2_subdevice/meson.build               |   2 +
>>>  test/v4l2_videodevice/meson.build             |   2 +
>>>  utils/hooks/post-commit                       |   2 +
>>>  utils/hooks/pre-commit                        |   2 +
>>>  utils/ipu3/meson.build                        |   2 +
>>>  utils/meson.build                             |   2 +
>>>  70 files changed, 954 insertions(+), 504 deletions(-)
>>>  rename {licenses => Documentation}/developer-certificate-of-origin.txt (100%)
>>>  rename licenses/apache-2.0.txt => LICENSES/Apache-2.0.txt (100%)
>>>  create mode 100644 LICENSES/BSD-3-Clause.txt
>>>  rename licenses/cc-by-sa-v4.0.txt => LICENSES/CC-BY-SA-4.0.txt (100%)
>>>  create mode 120000 LICENSES/GPL-2.0+.txt
>>>  rename licenses/gnu-gpl-2.0.txt => LICENSES/GPL-2.0-only.txt (100%)
>>>  create mode 100644 LICENSES/GPL-2.0-or-later.txt
>>>  create mode 120000 LICENSES/GPL-2.0.txt
>>>  create mode 100644 LICENSES/LGPL-2.1-or-later.txt
>>>  create mode 100644 LICENSES/Linux-syscall-note.txt
>>>  create mode 100644 LICENSES/MIT.txt
>>>  delete mode 100644 licenses/gnu-lgpl-2.1.txt
>
Laurent Pinchart Feb. 13, 2020, 4:54 p.m. UTC | #4
Hi Kieran,

On Thu, Feb 13, 2020 at 04:52:53PM +0000, Kieran Bingham wrote:
> On 13/02/2020 16:44, Laurent Pinchart wrote:
> > On Thu, Feb 13, 2020 at 04:41:38PM +0000, Kieran Bingham wrote:
> >> On 13/02/2020 15:36, Laurent Pinchart wrote:
> >>> Hello,
> >>>
> >>> The REUSE specification [1] defines a standardized method for declaring
> >>> copyright and licensing information, based on SPDX. It comes with a
> >>> compliance tool that can check for compliance and produce reports, as
> >>> well as licensing information to generate packages.
> >>>
> >>> libcamera already uses SPDX tags to specify license information, but we
> >>> haven't been using them very consistently, as shown by the "reuse lint"
> >>> tool. This series is an initial step towards REUSE compliance, and fixes
> >>> a few real issues.
> >>>
> >>> I've marked the patches as RFC as it's not clear to me how far we need
> >>> to go. Adding an SPDX header to include/linux/README, for instance,
> >>> seems overkill to me. I'm also not sure what license to pick for
> >>> meson.build files. Comments are more than welcome.
> >>
> >> Meson.build files are part of the build system required to build the
> >> library, so I agree on LGPL.
> >>
> >> I think that would include the ebuild files, or anything we create to
> >> actually generate libcamera.
> > 
> > But they are also used to build the documentation, under CC-BY-SA-4.0,
> > the cam and qcam application, under GPL-2.0-or-later, the Android
> > metadata library, under Apache-2.0, ...
> 
> Indeed, but it's only libcamera.so that other projects will link
> against, and I don't "think" having LGPL has any effect on the build of
> the documentation, or cam/qcam.
> 
> As the Android metadata library is just 'used' by libcamera.so, I don't
> think it has much effect there?
> 
> Who knows. ... IANAL :-)

That's my point really :-) I'm not either.

> Do we need to hire a lawyer to tell us the right answer? Or perhaps ask
> FSF or such an organisation?

I think it would make sense to ask how to license build system files. If
you look at buildroot, for instance, all build system files are GPL,
regardless of the license of the software they compile.

I briefly searched for information on this topic, but couldn't find
anything conclusive.

> >>> [1] https://reuse.software/spec/
> >>>
> >>> Laurent Pinchart (11):
> >>>   licenses: Rename license files according to REUSE
> >>>   licenses: Add missing licenses
> >>>   licenses: Remove unused LGPL-2.1
> >>>   licenses: Replace deprecated GPL-2.0 with GPL-2.0-only
> >>>   licenses: Move developer's certificate of origin to Documentation/
> >>>   licenses: Add SPDX headers to RST documentation
> >>>   licenses: Add SPDX headers to Doxygen configuration
> >>>   licenses: Add SPDX headers to the website builder and theme
> >>>   licenses: Add SPDX headers to all meson files
> >>>   licenses: Add SPDX headers to the git commit hook scripts
> >>>   licenses: Add SPDX headers to Gentoo ebuild
> >>>
> >>>  .clang-format                                 |   2 +-
> >>>  .gitignore                                    |   2 +
> >>>  Documentation/Doxyfile.in                     |   1 +
> >>>  Documentation/api-html/index.rst              |   2 +
> >>>  Documentation/coding-style.rst                |   2 +
> >>>  Documentation/conf.py                         |   1 +
> >>>  Documentation/contributing.rst                |   2 +
> >>>  .../developer-certificate-of-origin.txt       |   0
> >>>  Documentation/docs.rst                        |   2 +
> >>>  Documentation/index.rst                       |   2 +
> >>>  Documentation/meson.build                     |   2 +
> >>>  Documentation/theme/footer.html               |   3 +
> >>>  Documentation/theme/layout.html               |   3 +
> >>>  Documentation/theme/search.html               |   3 +
> >>>  Documentation/theme/static/css/theme.css      |   2 +
> >>>  Documentation/theme/theme.conf                |   2 +
> >>>  .../apache-2.0.txt => LICENSES/Apache-2.0.txt |   0
> >>>  LICENSES/BSD-3-Clause.txt                     |  26 +
> >>>  .../CC-BY-SA-4.0.txt                          |   0
> >>>  LICENSES/GPL-2.0+.txt                         |   1 +
> >>>  .../GPL-2.0-only.txt                          |   0
> >>>  LICENSES/GPL-2.0-or-later.txt                 | 319 +++++++++++
> >>>  LICENSES/GPL-2.0.txt                          |   1 +
> >>>  LICENSES/LGPL-2.1-or-later.txt                | 468 ++++++++++++++++
> >>>  LICENSES/Linux-syscall-note.txt               |   5 +
> >>>  LICENSES/MIT.txt                              |  19 +
> >>>  README.rst                                    |   2 +
> >>>  include/android/meson.build                   |   2 +
> >>>  include/ipa/meson.build                       |   2 +
> >>>  include/libcamera/meson.build                 |   2 +
> >>>  include/meson.build                           |   2 +
> >>>  licenses/gnu-lgpl-2.1.txt                     | 502 ------------------
> >>>  meson.build                                   |   2 +
> >>>  meson_options.txt                             |   2 +
> >>>  .../libcamera/libcamera-9999.ebuild           |   2 +-
> >>>  src/android/meson.build                       |   2 +
> >>>  src/cam/meson.build                           |   2 +
> >>>  src/ipa/libipa/meson.build                    |   2 +
> >>>  src/ipa/meson.build                           |   2 +
> >>>  src/ipa/rkisp1/meson.build                    |   2 +
> >>>  src/libcamera/include/meson.build             |   2 +
> >>>  src/libcamera/meson.build                     |   2 +
> >>>  src/libcamera/pipeline/ipu3/meson.build       |   2 +
> >>>  src/libcamera/pipeline/meson.build            |   2 +
> >>>  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
> >>>  src/libcamera/proxy/meson.build               |   2 +
> >>>  src/libcamera/proxy/worker/meson.build        |   2 +
> >>>  src/meson.build                               |   2 +
> >>>  src/qcam/meson.build                          |   2 +
> >>>  src/v4l2/meson.build                          |   2 +
> >>>  test/camera/meson.build                       |   2 +
> >>>  test/controls/meson.build                     |   2 +
> >>>  test/ipa/meson.build                          |   2 +
> >>>  test/ipc/meson.build                          |   2 +
> >>>  test/libtest/meson.build                      |   2 +
> >>>  test/log/meson.build                          |   2 +
> >>>  test/media_device/meson.build                 |   2 +
> >>>  test/meson.build                              |   2 +
> >>>  test/pipeline/ipu3/meson.build                |   2 +
> >>>  test/pipeline/meson.build                     |   2 +
> >>>  test/pipeline/rkisp1/meson.build              |   2 +
> >>>  test/process/meson.build                      |   2 +
> >>>  test/serialization/meson.build                |   2 +
> >>>  test/stream/meson.build                       |   2 +
> >>>  test/v4l2_subdevice/meson.build               |   2 +
> >>>  test/v4l2_videodevice/meson.build             |   2 +
> >>>  utils/hooks/post-commit                       |   2 +
> >>>  utils/hooks/pre-commit                        |   2 +
> >>>  utils/ipu3/meson.build                        |   2 +
> >>>  utils/meson.build                             |   2 +
> >>>  70 files changed, 954 insertions(+), 504 deletions(-)
> >>>  rename {licenses => Documentation}/developer-certificate-of-origin.txt (100%)
> >>>  rename licenses/apache-2.0.txt => LICENSES/Apache-2.0.txt (100%)
> >>>  create mode 100644 LICENSES/BSD-3-Clause.txt
> >>>  rename licenses/cc-by-sa-v4.0.txt => LICENSES/CC-BY-SA-4.0.txt (100%)
> >>>  create mode 120000 LICENSES/GPL-2.0+.txt
> >>>  rename licenses/gnu-gpl-2.0.txt => LICENSES/GPL-2.0-only.txt (100%)
> >>>  create mode 100644 LICENSES/GPL-2.0-or-later.txt
> >>>  create mode 120000 LICENSES/GPL-2.0.txt
> >>>  create mode 100644 LICENSES/LGPL-2.1-or-later.txt
> >>>  create mode 100644 LICENSES/Linux-syscall-note.txt
> >>>  create mode 100644 LICENSES/MIT.txt
> >>>  delete mode 100644 licenses/gnu-lgpl-2.1.txt
Kieran Bingham Feb. 13, 2020, 4:57 p.m. UTC | #5
Hi Laurent,

On 13/02/2020 16:54, Laurent Pinchart wrote:
> Hi Kieran,
> 
> On Thu, Feb 13, 2020 at 04:52:53PM +0000, Kieran Bingham wrote:
>> On 13/02/2020 16:44, Laurent Pinchart wrote:
>>> On Thu, Feb 13, 2020 at 04:41:38PM +0000, Kieran Bingham wrote:
>>>> On 13/02/2020 15:36, Laurent Pinchart wrote:
>>>>> Hello,
>>>>>
>>>>> The REUSE specification [1] defines a standardized method for declaring
>>>>> copyright and licensing information, based on SPDX. It comes with a
>>>>> compliance tool that can check for compliance and produce reports, as
>>>>> well as licensing information to generate packages.
>>>>>
>>>>> libcamera already uses SPDX tags to specify license information, but we
>>>>> haven't been using them very consistently, as shown by the "reuse lint"
>>>>> tool. This series is an initial step towards REUSE compliance, and fixes
>>>>> a few real issues.
>>>>>
>>>>> I've marked the patches as RFC as it's not clear to me how far we need
>>>>> to go. Adding an SPDX header to include/linux/README, for instance,
>>>>> seems overkill to me. I'm also not sure what license to pick for
>>>>> meson.build files. Comments are more than welcome.
>>>>
>>>> Meson.build files are part of the build system required to build the
>>>> library, so I agree on LGPL.
>>>>
>>>> I think that would include the ebuild files, or anything we create to
>>>> actually generate libcamera.
>>>
>>> But they are also used to build the documentation, under CC-BY-SA-4.0,
>>> the cam and qcam application, under GPL-2.0-or-later, the Android
>>> metadata library, under Apache-2.0, ...
>>
>> Indeed, but it's only libcamera.so that other projects will link
>> against, and I don't "think" having LGPL has any effect on the build of
>> the documentation, or cam/qcam.
>>
>> As the Android metadata library is just 'used' by libcamera.so, I don't
>> think it has much effect there?
>>
>> Who knows. ... IANAL :-)
> 
> That's my point really :-) I'm not either.
> 
>> Do we need to hire a lawyer to tell us the right answer? Or perhaps ask
>> FSF or such an organisation?
> 
> I think it would make sense to ask how to license build system files. If
> you look at buildroot, for instance, all build system files are GPL,
> regardless of the license of the software they compile.

That's a bit different, that's the licence of *buildroot* ?

The thing to look at is the licence of the build files for an equivalent
LGPL library, not an arbitrary external build system which is capable of
building that library.

--
Kieran


> 
> I briefly searched for information on this topic, but couldn't find
> anything conclusive.>
>>>>> [1] https://reuse.software/spec/
>>>>>
>>>>> Laurent Pinchart (11):
>>>>>   licenses: Rename license files according to REUSE
>>>>>   licenses: Add missing licenses
>>>>>   licenses: Remove unused LGPL-2.1
>>>>>   licenses: Replace deprecated GPL-2.0 with GPL-2.0-only
>>>>>   licenses: Move developer's certificate of origin to Documentation/
>>>>>   licenses: Add SPDX headers to RST documentation
>>>>>   licenses: Add SPDX headers to Doxygen configuration
>>>>>   licenses: Add SPDX headers to the website builder and theme
>>>>>   licenses: Add SPDX headers to all meson files
>>>>>   licenses: Add SPDX headers to the git commit hook scripts
>>>>>   licenses: Add SPDX headers to Gentoo ebuild
>>>>>
>>>>>  .clang-format                                 |   2 +-
>>>>>  .gitignore                                    |   2 +
>>>>>  Documentation/Doxyfile.in                     |   1 +
>>>>>  Documentation/api-html/index.rst              |   2 +
>>>>>  Documentation/coding-style.rst                |   2 +
>>>>>  Documentation/conf.py                         |   1 +
>>>>>  Documentation/contributing.rst                |   2 +
>>>>>  .../developer-certificate-of-origin.txt       |   0
>>>>>  Documentation/docs.rst                        |   2 +
>>>>>  Documentation/index.rst                       |   2 +
>>>>>  Documentation/meson.build                     |   2 +
>>>>>  Documentation/theme/footer.html               |   3 +
>>>>>  Documentation/theme/layout.html               |   3 +
>>>>>  Documentation/theme/search.html               |   3 +
>>>>>  Documentation/theme/static/css/theme.css      |   2 +
>>>>>  Documentation/theme/theme.conf                |   2 +
>>>>>  .../apache-2.0.txt => LICENSES/Apache-2.0.txt |   0
>>>>>  LICENSES/BSD-3-Clause.txt                     |  26 +
>>>>>  .../CC-BY-SA-4.0.txt                          |   0
>>>>>  LICENSES/GPL-2.0+.txt                         |   1 +
>>>>>  .../GPL-2.0-only.txt                          |   0
>>>>>  LICENSES/GPL-2.0-or-later.txt                 | 319 +++++++++++
>>>>>  LICENSES/GPL-2.0.txt                          |   1 +
>>>>>  LICENSES/LGPL-2.1-or-later.txt                | 468 ++++++++++++++++
>>>>>  LICENSES/Linux-syscall-note.txt               |   5 +
>>>>>  LICENSES/MIT.txt                              |  19 +
>>>>>  README.rst                                    |   2 +
>>>>>  include/android/meson.build                   |   2 +
>>>>>  include/ipa/meson.build                       |   2 +
>>>>>  include/libcamera/meson.build                 |   2 +
>>>>>  include/meson.build                           |   2 +
>>>>>  licenses/gnu-lgpl-2.1.txt                     | 502 ------------------
>>>>>  meson.build                                   |   2 +
>>>>>  meson_options.txt                             |   2 +
>>>>>  .../libcamera/libcamera-9999.ebuild           |   2 +-
>>>>>  src/android/meson.build                       |   2 +
>>>>>  src/cam/meson.build                           |   2 +
>>>>>  src/ipa/libipa/meson.build                    |   2 +
>>>>>  src/ipa/meson.build                           |   2 +
>>>>>  src/ipa/rkisp1/meson.build                    |   2 +
>>>>>  src/libcamera/include/meson.build             |   2 +
>>>>>  src/libcamera/meson.build                     |   2 +
>>>>>  src/libcamera/pipeline/ipu3/meson.build       |   2 +
>>>>>  src/libcamera/pipeline/meson.build            |   2 +
>>>>>  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
>>>>>  src/libcamera/proxy/meson.build               |   2 +
>>>>>  src/libcamera/proxy/worker/meson.build        |   2 +
>>>>>  src/meson.build                               |   2 +
>>>>>  src/qcam/meson.build                          |   2 +
>>>>>  src/v4l2/meson.build                          |   2 +
>>>>>  test/camera/meson.build                       |   2 +
>>>>>  test/controls/meson.build                     |   2 +
>>>>>  test/ipa/meson.build                          |   2 +
>>>>>  test/ipc/meson.build                          |   2 +
>>>>>  test/libtest/meson.build                      |   2 +
>>>>>  test/log/meson.build                          |   2 +
>>>>>  test/media_device/meson.build                 |   2 +
>>>>>  test/meson.build                              |   2 +
>>>>>  test/pipeline/ipu3/meson.build                |   2 +
>>>>>  test/pipeline/meson.build                     |   2 +
>>>>>  test/pipeline/rkisp1/meson.build              |   2 +
>>>>>  test/process/meson.build                      |   2 +
>>>>>  test/serialization/meson.build                |   2 +
>>>>>  test/stream/meson.build                       |   2 +
>>>>>  test/v4l2_subdevice/meson.build               |   2 +
>>>>>  test/v4l2_videodevice/meson.build             |   2 +
>>>>>  utils/hooks/post-commit                       |   2 +
>>>>>  utils/hooks/pre-commit                        |   2 +
>>>>>  utils/ipu3/meson.build                        |   2 +
>>>>>  utils/meson.build                             |   2 +
>>>>>  70 files changed, 954 insertions(+), 504 deletions(-)
>>>>>  rename {licenses => Documentation}/developer-certificate-of-origin.txt (100%)
>>>>>  rename licenses/apache-2.0.txt => LICENSES/Apache-2.0.txt (100%)
>>>>>  create mode 100644 LICENSES/BSD-3-Clause.txt
>>>>>  rename licenses/cc-by-sa-v4.0.txt => LICENSES/CC-BY-SA-4.0.txt (100%)
>>>>>  create mode 120000 LICENSES/GPL-2.0+.txt
>>>>>  rename licenses/gnu-gpl-2.0.txt => LICENSES/GPL-2.0-only.txt (100%)
>>>>>  create mode 100644 LICENSES/GPL-2.0-or-later.txt
>>>>>  create mode 120000 LICENSES/GPL-2.0.txt
>>>>>  create mode 100644 LICENSES/LGPL-2.1-or-later.txt
>>>>>  create mode 100644 LICENSES/Linux-syscall-note.txt
>>>>>  create mode 100644 LICENSES/MIT.txt
>>>>>  delete mode 100644 licenses/gnu-lgpl-2.1.txt
>