Skip to content

Source release: ship only the top-level LICENSE and NOTICE, not the subdirectory copies #268

Open

Description

@pjfanning

The 0.9.0-incubating-RC7 source release (apache-openserverless-0.9.0-incubating-src.tar.gz) contains the top-level LICENSE, NOTICE and DISCLAIMER, plus 85 more LICENSE/NOTICE/DISCLAIMER files in subdirectories. They come from the submodules and from each runtime image directory:

  • one set per submodule: admin-api/, build/, cli/, devcontainer/, oplugins/, oplugins-op/, runtimes/, streamer/, testing/;
  • one set per runtime image: runtimes/runtime/{go,java,nodejs,python}/*/ and runtimes/experimental/*/;
  • build/openwhisk/LICENSE.txt, NOTICE.txt and licenses/LICENSE-spray.txt (from the vendored OpenWhisk sources);
  • cli/tests/oplugins/LICENSE (test data).

Together they run to about 94,000 lines (runtimes/LICENSE alone is 37,204 lines).

Please ship only the top-level LICENSE and NOTICE in the source release, and leave the subdirectory ones out (e.g. via no-release.txt).

Why

For the source release, the top-level LICENSE and NOTICE are the ones that count. The subdirectory files mostly describe something else: the container images built from each directory, which bundle OS packages, language runtimes and dependencies that are not in the source release. Shipping them in the source tarball is confusing for users and reviewers, who cannot tell which file applies to what. It also means the same facts are maintained in many places, and they have already drifted apart. In RC7:

With only the top-level files, there is one place to review and keep correct for each release.

Things to handle

  1. Image builds use these files. 26 Dockerfiles COPY their directory's DISCLAIMER LICENSE NOTICE into the image (e.g. oplugins-op/Dockerfile:152, streamer/Dockerfile:30, admin-api/Dockerfile:47, every runtimes/runtime/*/*/Dockerfile, build/standalone/Dockerfile:47). The images do need their own LICENSE/NOTICE (as convenience binaries), so dropping the files from the source tarball needs one of:
    • generate the image LICENSE/NOTICE at image build time (they are largely derived from the image contents anyway); or
    • keep them in git but outside the source release, and have the image build (CI) supply them; or
    • if they must stay in the source tree, rename them (e.g. LICENSE-image, NOTICE-image) and add a first line saying they describe the container image, not the source, so they are not mistaken for the source release's licensing.
  2. The top-level LICENSE points at build/openwhisk/licenses/LICENSE-spray.txt. Either keep that one file, or inline the Spray licence text in the top-level LICENSE. The Spray licence is Apache-2.0, already reproduced there.
  3. build/openwhisk/LICENSE.txt / NOTICE.txt are the vendored OpenWhisk project's own files. The top-level NOTICE already carries the OpenWhisk attribution, so they can go too.
  4. Optional: the same applies to the 27 subdirectory DISCLAIMER files, which duplicate the top-level DISCLAIMER.

Related: #260, #262, #263, #267.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions