Skip to content

Third-party attribution: PyTorch BSD-3 requires the licence text, not a URL #99

Description

@balbasty

Found by:claude-jitfields-to-fastfields, during the atomics audit (#97).

Four files in this repository are derived from third-party projects. The licences are compatible; the attribution is not currently sufficient.

The files

fileupstreamlicence
include/fastfields/impl/kernels/atomic.h (CUDA half)PyTorch THCAtomics.cuh / ATen/cuda/Atomic.cuh (now torch/headeronly/cuda/Atomic.h)BSD-3-Clause-style
include/fastfields/impl/kernels/parallel.hPyTorch ATen ParallelNativesame
include/fastfields/impl/kernels/parallel_impl.hPyTorch ATen ParallelNativesame
include/fastfields/impl/cuda/utils.hPyTorch (the file says "Copied from PyTorch")same
include/fastfields/impl/kernels/threadpool.hYasserAsmi/wstpoolMIT

These entered via 7da9e7e ("Copy all lib files from jitfields", 2025-07-18), so they predate the consolidation.

Why the licences are fine but the attribution is not

BSD-3-Clause code may be redistributed inside an MIT project provided the copyright notice, the list of conditions, and the disclaimer are retained. That is the whole obligation, and it is not currently met:

  • The PyTorch-derived files carry only a bare URL to https://github.com/pytorch/pytorch/blob/master/LICENSE. A link is not the licence text. It also depends on a third-party URL remaining live and unchanged, which is precisely what the retention requirement exists to avoid.
  • The repository's root LICENSE is MIT-only, with no third-party section.

threadpool.h is the exception and the model to copy: its header carries the upstream name, the licence, and the source URL.

Suggested fix

  1. Add a THIRD-PARTY-LICENSES file (or a NOTICE section in LICENSE) containing the verbatim BSD-3-Clause text as PyTorch ships it — including the "Copyright (c) 2016- Facebook, Inc." block and the full contributor list header — plus the wstpool MIT notice.
  2. Point each derived file's header comment at that file, keeping the existing upstream URLs as a convenience rather than as the notice itself.
  3. Note in each header which parts are upstream and which are local, since these are adaptations rather than verbatim copies (Half/BFloat16/complex support was stripped from atomic.h, for instance).

Not urgent, but worth doing before any release

This has no effect on correctness and blocks nothing today. It does matter at the point wheels are published, since that is redistribution — which is what the retention clause actually governs.

Related

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

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions