Skip to content

Restore the LGPL licence (this fork is EPPlus 4.5.3.3 code, LGPL-2.1-or-later) - #8

Open
davidnmbond wants to merge 1 commit into
mainfrom
fix/lgpl-licence
Open

davidnmbond wants to merge 1 commit into
mainfrom
fix/lgpl-licence

Conversation

@davidnmbond

Copy link
Copy Markdown

Why

PanoramicData.EPPlus is a fork of EPPlus 4.5.3.3, Jan Källman's final LGPL release, continued via rimland/EPPlus. 550 of the 678 .cs files carry the header "GNU Lesser General Public License ... version 2.1 of the License, or (at your option) any later version".

main has been relabelled MIT:

The next publish from main would declare LGPL code as MIT, which the LGPL does not allow. The published 9.x and 10.x packages are correctly labelled LGPL, so the problem exists only on main.

No Polyform Noncommercial (EPPlus 5 and later) code was found: no EPPlus Software AB headers appear in any source file.

What changes

File Change
LICENSE LGPL 2.1 text, unmodified from gnu.org
NOTICE.md (new) Lineage and authorship (Källman/Alm, then Rimland, then Panoramic Data); no EPPlus 5+ code; what the LGPL means for consumers
csproj PackageLicenseExpression is now LGPL-2.1-or-later. It is still expression-only, so the NU5033 fix from #5 is kept. LICENSE and NOTICE.md are packed. Authors and copyright credit Jan Källman, Mats Alm and Rimland. PackageProjectUrl points at this repo.
README / CONTRIBUTING LGPL badge; contribution terms changed from MIT to LGPL

lgpl-3.0.txt is still packed, which "or any later version" permits.

Verification

Running dotnet pack locally produced this nuspec:

<authors>Jan Källman, Mats Alm, Rimland, Panoramic Data Limited</authors>
<license type="expression">LGPL-2.1-or-later</license>
<projectUrl>https://github.com/panoramicdata/PanoramicData.EPPlus</projectUrl>
<copyright>Copyright © 2009-2020 Jan Källman, Mats Alm and EPPlus contributors; Rimland 2020; Panoramic Data Limited 2024-2026</copyright>

The package contains LICENSE, NOTICE.md, lgpl-3.0.txt and README.md.

Separate issue on main, not fixed here

The restore fails with NU1902/NU1903 because System.Security.Cryptography.Pkcs 9.0.0 has known moderate and high severity vulnerabilities, and those warnings are treated as errors. I verified this PR with -p:NuGetAudit=false. That package needs bumping before anything can be published from main.

Consumers

MagicSuite references this library as a NuGet package, so it is a separate, replaceable assembly. That is permitted under the LGPL.

Follow-up

The fix/mit-licence-expression branch can be deleted once this is merged.

…LGPL-2.1-or-later

550 of the 678 source files carry Jan Källman's LGPL v2.1-or-later header. The fork
derives from EPPlus 4.5.3.3, the final LGPL release, and contains no code from
EPPlus 5 or later (Polyform Noncommercial). The MIT LICENSE added in 1a8baa1 and the
MIT-only PackageLicenseExpression from #5 relabelled that code, which the LGPL does
not permit; published 9.x/10.x packages were correctly labelled LGPL.

- LICENSE is now the LGPL 2.1 text; NOTICE.md records lineage and authorship
- PackageLicenseExpression is LGPL-2.1-or-later (still expression-only, so the
  NU5033 fix from #5 stands); LICENSE and NOTICE.md are packed
- Authors and copyright credit Jan Källman, Mats Alm and Rimland
- PackageProjectUrl points at this repo instead of rimland/EPPlus
- README badge and CONTRIBUTING contribution terms say LGPL
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

AI Reviewer: first review requested successfully. AI can make mistakes. Always validate suggestions.

Run reviewer

TIP This summary will be updated as you push new changes.

@codacy-production codacy-production Bot 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.

Pull Request Overview

⚠️ Resolve issues before merging

NOTICE.md contains licensing guidance that could incorrectly imply static linking is prohibited. This should be corrected to accurately reflect LGPL section 6 obligations.

Packaging, metadata, and documentation verification scenarios remain unautomated. The dependency-audit failure noted by the intent review is outside this change’s licensing scope and is not treated as a merge-blocking finding here.

Test suggestions

  • Verify the generated NuGet package declares LGPL-2.1-or-later and contains LICENSE, NOTICE.md, and lgpl-3.0.txt
  • Verify README and CONTRIBUTING.md no longer identify the project or contributions as MIT-licensed
  • Verify package authors, copyright, and project URL match the documented lineage
Prompt proposal for missing tests
Consider implementing these tests if applicable:
1. Verify the generated NuGet package declares LGPL-2.1-or-later and contains LICENSE, NOTICE.md, and lgpl-3.0.txt
2. Verify README and CONTRIBUTING.md no longer identify the project or contributions as MIT-licensed
3. Verify package authors, copyright, and project URL match the documented lineage

TIP Improve review quality by adding custom instructions
TIP How was this review? Give us feedback

Comment thread NOTICE.md
Comment on lines +28 to +32
The LGPL permits this library to be used from software under any licence, including
proprietary software, provided that the library remains a separate, replaceable
assembly (for example, referenced as a NuGet package rather than merged or
statically linked) and that this notice and the licence accompany any
redistribution of it. Changes to the library itself must be released under the LGPL.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 MEDIUM RISK

Rewrite this paragraph to accurately describe both dynamic and static linking, including the applicable LGPL section 6 obligations, rather than imposing a separate-assembly requirement.

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.

1 participant