respect and accept license files during build #136

Open
marcoceppi opened this Issue Mar 16, 2016 · 4 comments

Comments

Projects
None yet
4 participants
Owner

marcoceppi commented Mar 16, 2016

Layer and Interface authors should include COPYRIGHT files in each of their respective repositories either using DEP5 format or another means (just the copyright license text). charm-build should then be able to parse the copyright file if it is DEP5 or determine license type from license text and generate a COPYRIGHT file for the built charm using the DEP5 format to properly attribute and respect licensing of components. Intended goal is to have all layers include a COPYRIGHT file and generate the following example from that file:

layer-foo example

├── config.yaml
├── COPYRIGHT
├── layer.yaml
├── reactive
│   └── foo.py
└── wheelhouse.txt

layer-foo/COPYRIGHT

Format: http://dep.debian.net/deps/dep5/

Files: *
Copyright: Copyright 2016, Marco Ceppi, All Rights Reserved.
License: MIT
  MIT LICENSE TEXT

layer-charm

├── config.yaml
├── COPYRIGHT
├── layer.yaml
├── UPSTREAM_DIST.tar.gz
└── reactive
    └── charm.py

layer-charm/COPYRIGHT

Format: http://dep.debian.net/deps/dep5/

Files: *
Copyright: Copyright 2016, Guy LeDouce, All Rights Reserved.
License: LGPL

Files: UPSTREAM_DIST.tar.gz
Copyright: Copyright 2014, Upstream Project, All Rights Reserved.
License: Special Company License

interface-noop

├── COPYRIGHT
├── provides.py
├── requires.py
└── peers.py

interface-noop/COPYRIGHT

APACHE LICENSE TEXT

All of these, once built, should produce

charm

├── config.yaml
├── COPYRIGHT
├── hooks
│   ├── install
│   ├── interfaces
│   │   └── noop
│   │         ├── provides.py
│   │         ├── provides.py
│   │         └── peers.py
│   └── upgrade-charm
├── layer.yaml
├── UPSTREAM_DIST.tar.gz
├── reactive
│   ├── charm.py
│   └── foo.py
└── wheelhouse.txt

charm/COPYRIGHT

Format: http://dep.debian.net/deps/dep5/

Files: hooks/* Makefile config.yaml layer.yaml .build.manifest wheelhouse.txt
Copyright: Copyright 2016, Canonical, Ltd., All Rights Reserved.
License: <BASE LAYER LICENSE>

Files: reactive/foo.py
Copyright: Copyright 2016, Marco Ceppi, All Rights Reserved.
License: MIT

Files: reactive/charm.py
Copyright: Copyright 2016, Guy LeDouce, All Rights Reserved.
License: LGPL

Files: hooks/interfaces/noop/*
Copyright: Copyright 2016, INTERFACE AUTHOR
License: Apache

Files: UPSTREAM_DIST.tar.gz
Copyright: Copyright 2014, Upstream Project, All Rights Reserved.
License: Special Company License

@marcoceppi marcoceppi added this to the 2.0 milestone Mar 16, 2016

Contributor

bcsaller commented Mar 16, 2016

I agree that GPL.x might cause issues for some consumers, but we should insist on a permissive license going forward, not add tooling around a problem that only gets more complex as you explore the space. What if two licenses are not compatible? Can we accept GPL code into an apache project (no) but we can accept apache code into a GPL project, do we detect that? What if some files are one license but overridden in another layer, is that a derived work? Lets just ask that contributors honor the Apache license and we include in base and other important layers a note saying that merges to this repo require copyright assignment or something like that.

Member

johnsca commented Mar 16, 2016

@bcsaller We're not expecting built charms to be part of any project, only the source layers, though. And there might be restrictions imposed by the project where the layer resides that require the layer to have a more restrictive license.

Contributor

bcsaller commented Mar 16, 2016

I was just saying that this gets complex and silly quickly and we should avoid the issue with a simpler policy rather than more tooling (which ultimately won't address all the possible issues)

Contributor

chuckbutler commented Mar 16, 2016

requiring copyright assignment means requiring a CLA right?

And this CLA would really only apply to the base layer, as anything deriving from that is under a potentially different copyright, and at that point the licensing soup may continue - as thats up to the intent of the author of the derived work?

Is this something that plugging https://www.clahub.com/ into layer:basic repo, giving it a permissive license, and calling this "done for now" would work?

@marcoceppi marcoceppi modified the milestones: 2.NEXT, 2.0 Mar 22, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment