Skip to content

docs: correct LICENSE copyright attribution - #14

Open
anderslindho wants to merge 1 commit into
masterfrom
docs/correct-license-attribution
Open

docs: correct LICENSE copyright attribution#14
anderslindho wants to merge 1 commit into
masterfrom
docs/correct-license-attribution

Conversation

@anderslindho

@anderslindho anderslindho commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #11.

The LICENSE added there is a copy of epics-base/LICENSE with the product name changed; the two files are otherwise identical. So it carries EPICS Base's copyright holders (UChicago Argonne, the Regents of the University of California, Los Alamos National Security, 1991-2011), the DE-AC52-06NA25396 LANL sentence, and the BESSY disclaimer. Those are EPICS Base's project-level attributions, not reccaster's. reccaster's first commit is from 2013; the Base-derived files here are makeBaseApp boilerplate and need file-level attribution of their own.

That matters for clause 2, where the copyright holders shown above are the ones granting the license. As merged, the project-level notice names EPICS Base's holders rather than reccaster's, and the people who wrote reccaster aren't named anywhere. recsync avoided this with a COPYRIGHT file naming Michael Davidsaver, which wasn't carried over.

This PR replaces Base's project-level holder block with a reccaster-specific one and drops the Base-specific material. Clause 5 stays: it's part of the EPICS Open License, and several contributors work under US Government contract even though Base's contract number is wrong for us. The seven numbered conditions are unchanged apart from the product name.

I didn't add a COPYRIGHT file. With the holders named in LICENSE it would just be the same fact in two places.

@mdavidsaver, the holder line is a guess and I'd rather you decided it. I've used "Michael Davidsaver and the reccaster contributors", following recsync's COPYRIGHT, but most of the work here is institutional so you may prefer the labs named.

@ralphlange, relevant to #10: EPICS has an SPDX identifier but is not in the Choose a License corpus used by GitHub, so this repo will keep showing "Other" the way epics-base and recsync do.

@ralphlange

Copy link
Copy Markdown

@ralphlange, relevant to #10: EPICS isn't OSI-approved and isn't in the set GitHub's detector recognises, so this repo will keep showing "Other" the way epics-base and recsync do. Only a license from choosealicense.com changes that, in case detectability was part of what you were after.

Since the EPICS License has variable text in the license file (the copyright holders), it can't be added to the choosealicense.com/GitHub database of detected licenses. (The detection does an exact compare.)

Changing the EPICS License is something you should take a deep breath and talk to @anjohnson about.

@anjohnson anjohnson left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Adding the edited text of the EPICS Open License like this is partly correct, but not complete.

The reason the text of the GNU GPL texts contain a Copyright statement isn't because the FSF claims Copyright over all of the software covered by their licenses, far from it. That notice is there to say "We wrote this license, you can use it for your software, but you're not allowed to change the text of it without our permission."

When we added the EPICS LICENSE file we didn't have any explicit copyright notices in most of the source files, most just had a header comment pointing to that file. The LICENSE file was seen as the Copyright notice for the whole software, which is why the other labs were added there, on request of their legal departments when the agreed to relicensing their contributions under this license. Of course that approach doesn't scale, and nobody updates it to add new contributors, so for that reason I think the "contributors" language used in this PR is a good idea.

Nowadays my recommendation is to use SPDX keywords in the individual files as well as including a LICENSE file. Look at the source files in recent makeBaseApp templates, which were updated most recently. Those all start with the 2 lines below; the text in the second one will change and may be duplicated to name multiple holders.

/* SPDX-License-Identifier: EPICS */
/* SPDX-FileCopyrightText: 2026 UChicago Argonne LLC */

The EPICS Open license is registered with the SPDX License List run by the Linux Foundation, so while GitHub doesn't recognize your LICENSE file the license is publicly recognized.

I believe the people running the SPDX list have tools which can be used to add their keywords to source files, so it's probably worth looking for them.

Comment thread LICENSE Outdated
@ralphlange

Copy link
Copy Markdown

What I was thinking:

Changing the EPICS license's LICENSE file to not contain the copyright holders and move those into a separate COPYRIGHT file instead would keep the license file identical across all uses and easier to detect for services like GitHub.

As this wouldn't change the license itself, we could just go forward without much involvement of Legal departments.

I would suggest to also use this moment to add a version number - one never knows.

The previously added LICENSE carried EPICS Base's project-level holder
block, LANL contract sentence, and BESSY disclaimer. Those describe
Base rather than reccaster and leave reccaster's authors unnamed.

Use a reccaster-specific project-level notice and remove the
Base-specific material. Retain clause 5 because reccaster includes work
developed under U.S. Government contracts. Keep the seven numbered
licence conditions unchanged apart from the product name.
@anderslindho
anderslindho force-pushed the docs/correct-license-attribution branch from fad7de0 to ba7f267 Compare August 3, 2026 08:03
@anderslindho

Copy link
Copy Markdown
Contributor Author

Thanks, Andrew. I did consider SPDX headers before opening this PR, but decided against them because I had not seen them used widely in EPICS modules.

I will follow this PR with a separate one adding per-file headers, preserving the Argonne attribution on the makeBaseApp-derived files, and will look at adding a check for them as well.

While checking the SPDX entry I also found a transcription error and some old webpage framing included as mandatory licence text. I reported those in spdx/license-list-XML#3054.

@anderslindho

Copy link
Copy Markdown
Contributor Author

@ralphlange I investigated this a bit. GitHub uses Licensee rather than comparing files byte for byte. Licensee normalises titles, copyright notices, “All rights reserved”, version lines and comment markers, and then measures similarity with a 98% confidence threshold.

I ran the relevant files through that comparison. epics-base/LICENSE and recsync/LICENSE score 98.97% against one another despite the different product names. Against SPDX’s EPICS entry, however, Base scores only 63.29% and reccaster’s original LICENSE 62.86%.

The difference runs in both directions. SPDX includes an old webpage heading and explanatory paragraph as mandatory licence text, while Base’s file contains the longer LANL attribution and contract wording and the BESSY disclaimer. Licensee removes ordinary copyright notices, but not all of that surrounding prose. The initial text in this PR scored 83.58%. Adding SPDX’s webpage paragraph raised that to 95.02%, or 95.87% after removing “All rights reserved”, which is still below the threshold. SPDX also contains a REPTHAT transcription error. I reported the incorrect text and outdated source reference in spdx/license-list-XML#3054.

Moving the copyright notice into a separate file would therefore not solve GitHub detection.

On the version number, I do not think adding one to reccaster’s copy alone would be meaningful. A licence version needs to be assigned by EPICS, with a canonical versioned text and a defined relationship between revisions. Without that, it would only make this copy differ from other EPICS LICENSE files without changing the rights it grants. If EPICS wants to version the licence, that should be decided and applied across the project.

EPICS is not currently in the Choose a License corpus used by GitHub. It has an SPDX identifier, but is neither OSI-approved nor listed by the FSF. The OSI legacy-license process appears potentially applicable, and FSF listing is another possible route. Either would satisfy one Choose a License criterion, although its separate repository-count and exemplar requirements would still apply.

Would you or @anjohnson be willing to bring licence versioning and the question of seeking OSI approval or FSF listing to an EPICS Core or Council meeting? Both seem like EPICS-wide decisions rather than something reccaster should establish locally.

@anderslindho
anderslindho requested a review from anjohnson August 3, 2026 08:15
@ralphlange

Copy link
Copy Markdown

On the version number, I do not think adding one to reccaster’s copy alone would be meaningful. A licence version needs to be assigned by EPICS, with a canonical versioned text and a defined relationship between revisions.

This is what I was trying to suggest.

@anjohnson

Copy link
Copy Markdown

@anderslindho Thank-you for finding and reporting the errors in the license-list, and for updating their link. I don't know why their website says the old link is no longer in use though, it still works fine for me, maybe they checked it on a day when the APS web-server was down for maintenance.

IIRC when I registered the EPICS license for SPDX purposes I told them there would never be another version of the license; if the EPICS community ever changes the license we would move to some other standard BSD-like license instead. I used to keep a large ring-binder of faxes of the Grant of License signed by every organization that ever contributed to the code-base up to some time in the 2000-teens IIRC. Unfortunately that binder disappeared during an office clean-out when our group got a new secretary, so changing the license may be legally almost impossible now.

There is some history about the EPICS license in this 2006 core-talk email which mentions DOE requirements for the license, OSI approval, and acceptance by the FSF (for which I have no documented proof).

Ralph's suggestion above to move the lab Copyrights out to a separate file seems ok to me. Not sure if we'd want/need to keep a UChicago Argonne LLC copyright in the LICENSE file or not. If we do, I would suggest it says

The text of this SOFTWARE LICENSE AGREEMENT is Copyright (c) 2004 UChicago Argonne LLC.

to clarify the limited extent of the claim. It could be moved to the bottom of the file.

@sonarqubecloud

sonarqubecloud Bot commented Aug 3, 2026

Copy link
Copy Markdown

@anderslindho
anderslindho requested review from jacomago and simon-ess and removed request for anjohnson August 7, 2026 11:53
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.

3 participants