Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: use proper SPDX headers to clarify LGPL3 vs JSA licensing #1321

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/workflows/spdx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: spdx

on:
pull_request

jobs:
check-spdx-headers:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- uses: enarx/spdx@5e6fecdee147bd4cab97893c71d638280e280e66
with:
licenses: LGPL-3.0-or-later JSA
33 changes: 33 additions & 0 deletions LICENSE.JSA
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@

Copyright (c) 2020, Jefferson Science Associates, LLC. All Rights Reserved. Redistribution
and use in source and binary forms, with or without modification, are permitted as a
licensed user provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products derived
from this software without specific prior written permission.

This material resulted from work developed under a United States Government Contract.
The Government retains a paid-up, nonexclusive, irrevocable worldwide license in such
copyrighted data to reproduce, distribute copies to the public, prepare derivative works,
perform publicly and display publicly and to permit others to do so.

THIS SOFTWARE IS PROVIDED BY JEFFERSON SCIENCE ASSOCIATES LLC "AS IS" AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
JEFFERSON SCIENCE ASSOCIATES, LLC OR THE U.S. GOVERNMENT BE LIABLE TO LICENSEE OR ANY
THIRD PARTES FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.


Authors: David Lawrence, Nathan Brei, Paul Mattione

Origin repository: http://github.com/eic/EICrecon
23 changes: 15 additions & 8 deletions NOTICE.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
# Notices for EICrecon

Software contained in the repository exists in the public domain
except where an alternate LICENSE.md file exists. Any other
LICENSE.md file occurring in this repository will apply to the
directory it resides in and all subdirectories from there except
where another LICENSE.md file exists.
This content is produced and maintained by the ePIC collaboration.

By contributing to this repository in any directory on any branch,
you are consenting to that contribution being entered into the public
domain.
## Trademarks

Jefferson Lab is a trademark of United States Department of Energy.

## Copyright

All content is the property of the respective authors or their employers. For more information regarding authorship of content, please consult the listed source code repository logs.

## Declared Project Licenses

Software contained in this repository exists in the public domain unless indicated otherwise by the file header. By contributing to this repository in any directory on any branch, you are consenting to that your contribution will be licensed under the GNU Lesser General Public License version 3, or any later version.

Any other LICENSE.md file occurring in this repository will apply to the files in the directory it resides in and in all subdirectories from there unless indicated otherwise by the file header and except where another LICENSE.md file exists.
4 changes: 2 additions & 2 deletions src/algorithms/calorimetry/CalorimeterClusterRecoCoGConfig.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2023 - 2024, Wouter Deconinck, Sebouh Paul

#pragma once

Expand Down
4 changes: 2 additions & 2 deletions src/algorithms/calorimetry/CalorimeterHitsMergerConfig.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2023, Wouter Deconinck

#pragma once

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/interfaces/WithPodConfig.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#pragma once
namespace eicrecon {
Expand Down
6 changes: 3 additions & 3 deletions src/algorithms/meta/SubDivideFunctors.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright 2024, Simon Gardner
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2024, Simon Gardner

#pragma once

#include <algorithms/geo.h>
Expand Down
4 changes: 2 additions & 2 deletions src/algorithms/pid/IrtCherenkovParticleID.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright 2023, Christopher Dilks
// Subject to the terms in the LICENSE file found in the top-level directory.
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2023, Christopher Dilks

#pragma once

Expand Down
4 changes: 2 additions & 2 deletions src/algorithms/pid/IrtCherenkovParticleIDConfig.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright 2023, Christopher Dilks
// Subject to the terms in the LICENSE file found in the top-level directory.
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2023, Christopher Dilks

#pragma once

Expand Down
4 changes: 2 additions & 2 deletions src/algorithms/pid/MergeTracks.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright 2023, Christopher Dilks
// Subject to the terms in the LICENSE file found in the top-level directory.
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2023, Christopher Dilks

#include "MergeTracks.h"

Expand Down
4 changes: 2 additions & 2 deletions src/algorithms/pid/MergeTracks.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright 2023, Christopher Dilks
// Subject to the terms in the LICENSE file found in the top-level directory.
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2023, Christopher Dilks

// merge together TrackSegments, sorting their TrackPoints by time
/* FIXME: only VectorMember `points` is combined, which is all that is needed
Expand Down
2 changes: 1 addition & 1 deletion src/algorithms/pid/ParticlesWithPID.cc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Original licence: SPDX-License-Identifier: LGPL-3.0-or-later
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2022, 2023, Sylvester Joosten, Wouter Deconinck, Dmitry Romanov, Christopher Dilks

#include "ParticlesWithPID.h"
Expand Down
2 changes: 1 addition & 1 deletion src/algorithms/pid/ParticlesWithPID.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Original licence header: SPDX-License-Identifier: LGPL-3.0-or-later
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2022, 2023, Sylvester Joosten, Wouter Deconinck, Dmitry Romanov, Christopher Dilks


Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/pid/ParticlesWithPIDConfig.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#pragma once

Expand Down
4 changes: 2 additions & 2 deletions src/algorithms/pid/Tools.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright 2023, Alexander Kiselev, Christopher Dilks
// Subject to the terms in the LICENSE file found in the top-level directory.
// SPDX-License-Identifier: JSA
// Copyright (C) 2023, Alexander Kiselev, Christopher Dilks
//
// Common functions for PID algorithms
// Several methods ported from Juggler's JugPID `IRTAlgorithmServices`
Expand Down
3 changes: 2 additions & 1 deletion src/algorithms/reco/ElectronReconstructionConfig.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// Subject to the terms in the LICENSE file found in the top-level directory.
// SPDX-License-Identifier: JSA
// Copyright (C) 2023, Daniel Brandenburg

#pragma once

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/CKFTrackingConfig.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#pragma once

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/IterativeVertexFinder.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Joe Osborn
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2023, Joe Osborn

#include "IterativeVertexFinder.h"

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/IterativeVertexFinder.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Joe Osborn
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2023, Joe Osborn

#pragma once

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/OrthogonalTrackSeedingConfig.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#pragma once

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/TrackParamTruthInit.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#include "TrackParamTruthInit.h"

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/TrackParamTruthInit.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#pragma once

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/TrackParamTruthInitConfig.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#pragma once

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/TrackProjector.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#pragma once

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/TrackSeeding.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#include "TrackSeeding.h"

Expand Down
5 changes: 2 additions & 3 deletions src/algorithms/tracking/TrackSeeding.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#pragma once

Expand Down
4 changes: 0 additions & 4 deletions src/algorithms/tracking/TrackerMeasurementFromHits.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
// Created by Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
// Original header from Gaudi algorithm
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2022 Whitney Armstrong, Sylvester Joosten, Wouter Deconinck, Shujie Li
// TODO refactor header when license is clear

#pragma once

Expand Down
6 changes: 2 additions & 4 deletions src/detectors/B0ECAL/B0ECAL.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, David Lawrence
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022 David Lawrence

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/B0TRK/B0TRK.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/BEMC/BEMC.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, David Lawrence
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022 David Lawrence

Copy link
Member

@veprbl veprbl Mar 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Almost none of these attributions in src/detectors are correct. You, @wdconinc , are the primary author after all the conversions. The original configuration variables were derived from the LGPL3 code. Single item from API like void InitPlugin(JApplication *app) { is not subject to copyright.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You may be right about this. I was going to keep the first batch of commits limited to making a literal translation from the various headers we have to the recommended spdx headers. We can handle the changes in licensing through code review (for some files where I am the sole copyright holder, I have changed this from JSA license to LGPL3).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not the correct translation then. Assigning everyone's code copyright to JSA without asking is a regression compared to status quo.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm asking and will be asking others (see #1321 (comment)).

When these contributions were made, even by people who may be perfectly fine with LGPL3, the licensing language in the repository was (at best) ambiguous, and definitely not as unambiguously LGPL3 as it is now. Until Jan 15, 2024, #1237, only the NOTICE.md was include at top-level, and it indicated that contributions were under the JSA public domain clause, unless otherwise indicated (such as for src/algorithms, since #185, or for files with explicit LGPL-3.0-or-later SPDX header, such as most of src/factories). Any other code from before Jan 15 should be assumed to have been contributed under the conditions of the NOTICE.md file, and we should secure permissions from the copyright holders to license it under LGPL3. I think in that sense the only approach is to assume the contributions were made in line with the JSA notice, and ask all copyright holders to license them as LGPL3.

Some clear cases that can be resolved right away, however (and this isn't exhaustive):

  • under src/algorithms, src/factories: this is all LGPL-3.0-or-later (possibly there are others), and it should be labeled like that,
  • some code has been mistakenly labeled as JSA in the SPDX header (e.g. src/algorithms/tracking/TrackParamTruthInit.cc which came from LGPL-3.0-or-later juggler), and this should be fixed,
  • some code has mistakenly not been labeled as LGPL-3.0-or-later (i.e. missing SPDX header), and this should be fixed.

I don't think there will be many issues getting people to agree to license their changes to LGPL3, though we may get one or two holdouts.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It wasn't my intention to go into that detail. All I'm saying:

  1. Original files in src/detectors are a derivative work from other codes (like https://eicweb.phy.anl.gov/EIC/benchmarks/reconstruction_benchmarks/-/blob/master/benchmarks/clustering/options/full_cal_reco.py?ref_type=heads for BEMC.cc ) and can't claim copyright.
  2. The current files were entirely rewritten by you.

These are the reasons why I think signing off copyright on those files is too generous in the first place.

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/BTOF/BTOF.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/BTRK/BTRK.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/BVTX/BVTX.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/DIRC/DIRC.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022,2023 Christopher Dilks, Nilanga Wickramaarachchi
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022 - 2023, Christopher Dilks, Nilanga Wickramaarachchi

#include <JANA/JApplication.h>
#include <stddef.h>
Expand Down
4 changes: 2 additions & 2 deletions src/detectors/DRICH/DRICH.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright (C) 2022, 2023, Christopher Dilks, Luigi Dello Stritto
// Subject to the terms in the LICENSE file found in the top-level directory.
// SPDX-License-Identifier: JSA
// Copyright (C) 2022 - 2023, Christopher Dilks, Luigi Dello Stritto

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/ECTOF/ECTOF.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/ECTRK/ECTRK.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, Dmitry Romanov
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022, Dmitry Romanov

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/EEMC/EEMC.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2022, David Lawrence
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2022 David Lawrence

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
6 changes: 2 additions & 4 deletions src/detectors/EHCAL/EHCAL.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Copyright 2023, Friederike Bock
// Subject to the terms in the LICENSE file found in the top-level directory.
//
//
// SPDX-License-Identifier: JSA
// Copyright (C) 2023, Friederike Bock

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
Expand Down
Loading
Loading