Skip to content

Proper Licensing - #25

Merged
aliakherati merged 5 commits into
mainfrom
prep-for-public-release
Aug 24, 2026
Merged

aliakherati merged 5 commits into
mainfrom
prep-for-public-release

Conversation

@johnorcutt

Copy link
Copy Markdown
Contributor

Makes sure that we are properly attributing and licensing the fortran source code.

johnorcutt and others added 5 commits August 21, 2026 11:15
The root LICENCE becomes the canonical Apache License 2.0 text
(byte-identical to https://www.apache.org/licenses/LICENSE-2.0.txt).
The vendored Fortran keeps its BSD 3-Clause licence in fortran/LICENCE,
untouched, which together with the per-file Crown Copyright headers
satisfies BSD clause 1 for source redistribution.

Acceptance: root LICENCE asserts as Apache 2.0, fortran/LICENCE asserts
as BSD-3 with Crown Copyright, both in tests/test_licensing.py.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wheels contain only the JAX port, not fortran/, so BSD-3 clause 2
(reproduce the notice, conditions and disclaimer with binary
distributions) is satisfied by a NOTICE file that embeds
fortran/LICENCE byte-for-byte alongside the no-endorsement disclaimer.
Apache 2.0 section 4(d) then propagates it to downstream derivatives.

Acceptance: test_notice_carries_bsd_attribution_verbatim asserts the
embedded text matches fortran/LICENCE exactly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… claim

New code is Apache 2.0; vendored fortran/ stays BSD-3; fortran/src/box/
and validation overlays stay BSD-3 deliberately so they remain
upstreamable to glomap-box.

Removes the 'reimplementation, not a translation' characterisation: the
port is written from the Fortran source by rule, so it is treated as a
derivative work. Nothing depends on the stronger claim, and the
compliance posture (retain notices everywhere) is identical either way.

Acceptance: test_copyright_file_separates_vendored_from_new_code now
asserts both licence names alongside both owners.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
README, docs/index.md: Apache 2.0 for the port, BSD-3 for fortran/.
PROVENANCE.md: the BSD text now lives at fortran/LICENCE, not the root.
pyproject: PEP 639 licence expression plus license-files, so every wheel
and sdist ships LICENCE, NOTICE and fortran/LICENCE (verified: all three
land in dist-info/licenses/ of a locally built wheel, and METADATA
carries License-Expression: Apache-2.0). hatchling pinned >=1.27 for
PEP 639 support.

Acceptance: test_pyproject_ships_both_licences_in_distributions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The f2py shims and overlay patches say 'BSD 3-Clause (see LICENCE)', a
pointer that resolved to the BSD text until the root LICENCE became
Apache 2.0. Repointed to fortran/LICENCE (verified all patches still
apply cleanly to a staged fortran/ copy). COPYRIGHT.md now carves the
validation Fortran out of the Apache section explicitly.

fortran/src/box/ headers are untouched: their 'see LICENCE' resolves
within fortran/, and the tree stays byte-comparable with glomap-box.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@johnorcutt
johnorcutt requested a review from aliakherati August 21, 2026 19:30
@aliakherati
aliakherati merged commit 558394f into main Aug 24, 2026
6 checks passed
@aliakherati
aliakherati deleted the prep-for-public-release branch August 24, 2026 17:36
@aliakherati

Copy link
Copy Markdown
Contributor

Thanks @johnorcutt !

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants