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
| file | upstream | licence |
|---|
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.h | PyTorch ATen ParallelNative | same |
include/fastfields/impl/kernels/parallel_impl.h | PyTorch ATen ParallelNative | same |
include/fastfields/impl/cuda/utils.h | PyTorch (the file says "Copied from PyTorch") | same |
include/fastfields/impl/kernels/threadpool.h | YasserAsmi/wstpool | MIT |
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
- 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. - Point each derived file's header comment at that file, keeping the existing upstream URLs as a convenience rather than as the notice itself.
- 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
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
include/fastfields/impl/kernels/atomic.h(CUDA half)THCAtomics.cuh/ATen/cuda/Atomic.cuh(nowtorch/headeronly/cuda/Atomic.h)include/fastfields/impl/kernels/parallel.hParallelNativeinclude/fastfields/impl/kernels/parallel_impl.hParallelNativeinclude/fastfields/impl/cuda/utils.hinclude/fastfields/impl/kernels/threadpool.hThese 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:
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.LICENSEis MIT-only, with no third-party section.threadpool.his the exception and the model to copy: its header carries the upstream name, the licence, and the source URL.Suggested fix
THIRD-PARTY-LICENSESfile (or a NOTICE section inLICENSE) 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.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
charcorrupts neighbouring bytes,unsigned longtruncates on Win64 #98 — two integer CAS specialisations inatomic.hwere retyped during the copy and diverge from upstream in ways that are latent bugs. Same file, same provenance, worth handling in the same pass.