-
Notifications
You must be signed in to change notification settings - Fork 172
Add THIRD-PARTY-NOTICES.txt with package details(id-authentication) #1641
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
base: release-1.3.x
Are you sure you want to change the base?
Conversation
This file lists third-party packages used in the project along with their licenses, versions, and homepages. Signed-off-by: Rakshithasai123 <rakshithasai2002@gmail.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (1)
Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@CodeRabbit please review the changes and the licenses in the THIRD-PARTY-NOTICES.txt |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 10937 🏁 Script executed: Length of output: 23 🏁 Script executed: Length of output: 2 🏁 Script executed: Length of output: 41 🏁 Script executed: Length of output: 409 🏁 Script executed: Length of output: 2737 🏁 Script executed: Length of output: 3185 @Rakshithasai123, I've reviewed the THIRD-PARTY-NOTICES.txt file and the associated licenses. Here are my findings: ✅ Positives
|
|
@CodeRabbit please review the changes and the licenses in the THIRD-PARTY-NOTICES.txt, and also the licenses that I added |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 328 🏁 Script executed: Length of output: 13508 🏁 Script executed: Length of output: 11467 @Rakshithasai123, I've reviewed the changes in this PR. Based on my analysis: 📁 What Was Actually AddedThis PR adds only one file: No separate license files or 📋 Review of THIRD-PARTY-NOTICES.txt✅ Positive Aspects
|
|
@CodeRabbit please review the changes and the licenses in the THIRD-PARTY-NOTICES.txt and does the dependencies have the exact licenses as we mentioned THIRD-PARTY-NOTICES.txt |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 25566 🏁 Script executed: Length of output: 9122 🏁 Script executed: Length of output: 6085 🏁 Script executed: Length of output: 6478 🏁 Script executed: Length of output: 277 🌐 Web query: 💡 Result: Yes — Spring Boot 3.3 is released under the Apache License, Version 2.0. [1][2] Sources: 🌐 Web query: 💡 Result: The official PostgreSQL JDBC driver (the 42.x series distributed by the pgjdbc project) is released under the BSD 2‑clause ("Simplified") license. [1][2] Note: third‑party forks or repackaged artifacts may use different licensing or metadata — check the specific artifact's repository/pom if you did not obtain it from the official pgjdbc project. [3] Sources: GitHub pgjdbc license, pgjdbc official license page, Maven listings. [1][2][3] 🌐 Web query: 💡 Result: Short answer: org.json originally used the "JSON License" (includes the clause "The Software shall be used for Good, not Evil"), but from the 2022-09-24 release the JSON-java distribution was relicensed as public-domain.
If you need the exact license text or want to know which version you have and whether it is permitted for a particular use, tell me the org.json version you are using and I’ll fetch the exact license file for that release. 🌐 Web query: 💡 Result: Yes — Project Lombok is released under the MIT License. See the repository LICENSE and project pages. [1][2] Sources: 🌐 Web query: 💡 Result: Yes — JUnit 4 is released under the Eclipse Public License 1.0 (EPL-1.0). [1][2][3] Sources:
🌐 Web query: 💡 Result: Yes — Mockito is released under the MIT License. [1][2] Sources:
🌐 Web query: 💡 Result: The org.openpnp/opencv Java package is released under the BSD (3‑clause) license. [1][2] For context: upstream OpenCV itself moved to Apache‑2.0 for versions >= 4.5.0, while this org.openpnp packaged Java binding (the repo/artifact) carries a BSD-style license. [3] Sources:
🌐 Web query: 💡 Result: Yes — TensorFlow Java 1.15.0 is licensed under the Apache License, Version 2.0. [1][2] Sources:
🏁 Script executed: Length of output: 1416 🌐 Web query: 💡 Result: Yes — Jackson Databind (the 2.x line) is licensed under the Apache License 2.0. [1][2] Sources:
🌐 Web query: 💡 Result: Apache Commons Lang 3 is distributed under the Apache License, Version 2.0. [1][2][3] Sources:
🌐 Web query: 💡 Result: Hibernate Validator 8.x is released under the Apache License, Version 2.0. [1][2] Sources:
🌐 Web query: 💡 Result: Springdoc OpenAPI 2.x is released under the Apache License 2.0. [1][2] Sources:
🌐 Web query: 💡 Result: Yes — SourceAFIS for Java is distributed under the Apache License, Version 2.0. See the project README and LICENSE in the repository and the project homepage. [1][2][3] Sources:
@Rakshithasai123, I've completed a thorough verification of the licenses in THIRD-PARTY-NOTICES.txt against the actual dependencies in your codebase. Here's my detailed analysis: ✅ Correctly Documented LicensesThe following licenses are accurate and match the official licenses of the dependencies:
|
| Category | Count | Status |
|---|---|---|
| ✅ Correctly documented | 25/26 packages | 96% accurate |
| 1 package (org.json) | Needs attention | |
| 📝 Minor precision issue | 1 description | Optional improvement |
🎯 Recommendations
-
Immediate Action: Address the org.json license issue by either:
- Upgrading to version 20220924+ (Public Domain), or
- Migrating to Jackson (recommended since it's already widely used)
-
Optional Improvement: Update PostgreSQL license description for precision
-
Documentation: The missing
license/directory reference should be addressed (create it or remove the reference)
Would you like me to help create a migration plan from org.json to Jackson?
|
Rakshithasai123_id-authentication_cb16b9.json Your responsibilities: ────────────────────────────────────────
For every dependency found, verify:
──────────────────────────────────────── ✔ Package name matches the actual pom.xml / module POM dependency Do not accept inferred or guessed licenses or versions unless confirmed from authoritative official sources. ────────────────────────────────────────
For each of these, also confirm that:
──────────────────────────────────────── Validate:
Report any differences across: ────────────────────────────────────────
Ensure the license text and identifier in THIRD-PARTY-NOTICES.txt is EXACT and compliant with the official SPDX definition for that license. ──────────────────────────────────────── • Dependencies present in pom.xml or SBOM but missing in THIRD-PARTY-NOTICES.txt ──────────────────────────────────────── ✔ 100% accurate Please output your findings in a clear, structured format suitable for immediate PR updates. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 74752 🏁 Script executed: Length of output: 605 🏁 Script executed: Length of output: 27578 🏁 Script executed: Length of output: 3941 🏁 Script executed: Length of output: 41375 🏁 Script executed: Length of output: 33409 🏁 Script executed: Length of output: 3875 #!/usr/bin/env python3
import json
print("=== Step 15: Python analysis of SBOM structure ===")
try:
with open('sbom.json', 'r') as f:
sbom = json.load(f)
print(f"SPDX Version: {sbom.get('spdxVersion', 'N/A')}")
print(f"Document Name: {sbom.get('name', 'N/A')}")
print(f"Creation Date: {sbom.get('creationInfo', {}).get('created', 'N/A')}")
packages = sbom.get('packages', [])
print(f"\nTotal packages in SBOM: {len(packages)}")
# Categorize packages
maven_pkgs = [p for p in packages if 'maven' in p.get('name', '').lower() or
p.get('SPDXID', '').startswith('SPDXRef-maven')]
github_pkgs = [p for p in packages if 'github' in p.get('name', '').lower() or
'githubactions' in p.get('SPDXID', '')]
mosip_pkgs = [p for p in packages if 'io.mosip' in p.get('name', '')]
print(f"Maven packages: {len(maven_pkgs)}")
print(f"GitHub Actions: {len(github_pkgs)}")
print(f"MOSIP packages: {len(mosip_pkgs)}")
# Extract packages with licenses
print("\n=== Packages with explicit licenses ===")
licensed_pkgs = [p for p in packages if p.get('licenseConcluded') and p.get('licenseConcluded') != 'NOASSERTION']
print(f"Packages with explicit licenses: {len(licensed_pkgs)}")
for pkg in licensed_pkgs[:20]: # Show first 20
name = pkg.get('name', 'N/A')
ver = pkg.get('versionInfo', 'N/A')
lic = pkg.get('licenseConcluded', 'N/A')
print(f" {name} @ {ver} => {lic}")
# Check for org.json
print("\n=== Checking for org.json ===")
json_pkgs = [p for p in packages if 'org.json' in p.get('name', '')]
for pkg in json_pkgs:
print(f" Name: {pkg.get('name')}")
print(f" Version: {pkg.get('versionInfo', 'N/A')}")
print(f" License: {pkg.get('licenseConcluded', 'N/A')}")
print(f" SPDXID: {pkg.get('SPDXID')}")
except Exception as e:
print(f"Error: {e}")#!/usr/bin/env python3
import json
from collections import defaultdict
print("=== Step 16: Comprehensive SBOM to NOTICES mapping analysis ===\n")
try:
with open('sbom.json', 'r') as f:
sbom = json.load(f)
with open('THIRD-PARTY-NOTICES.txt', 'r') as f:
notices = f.read()
packages = sbom.get('packages', [])
# Extract Maven packages only (exclude GitHub Actions)
maven_packages = []
for pkg in packages:
spdx_id = pkg.get('SPDXID', '')
name = pkg.get('name', '')
if 'SPDXRef-maven' in spdx_id and 'github' not in name.lower():
maven_packages.append(pkg)
print(f"Total Maven packages in SBOM: {len(maven_packages)}\n")
# Group by license
license_groups = defaultdict(list)
for pkg in maven_packages:
lic = pkg.get('licenseConcluded', 'NOASSERTION')
if lic == 'NOASSERTION':
lic = pkg.get('licenseDeclared', 'NOASSERTION')
license_groups[lic].append(pkg.get('name'))
print("=== License Distribution in SBOM ===")
for lic, pkgs in sorted(license_groups.items(), key=lambda x: len(x[1]), reverse=True):
print(f"{lic}: {len(pkgs)} packages")
print("\n=== Key packages to validate ===")
# Check specific important packages
important_patterns = ['spring', 'jackson', 'postgres', 'json', 'lombok', 'junit',
'mockito', 'tensorflow', 'opencv', 'apache', 'hibernate']
for pattern in important_patterns:
matching = [p for p in maven_packages if pattern in p.get('name', '').lower()]
if matching:
print(f"\n{pattern.upper()} packages ({len(matching)}):")
for pkg in matching[:5]: # Show first 5
print(f" - {pkg.get('name')} | {pkg.get('versionInfo', 'N/A')} | {pkg.get('licenseConcluded', 'N/A')}")
except Exception as e:
print(f"Error: {e}")🏁 Script executed: Length of output: 7720 🏁 Script executed: Length of output: 1210 🏁 Script executed: Length of output: 107 🏁 Script executed: Length of output: 612 🏁 Script executed: Length of output: 286 #!/usr/bin/env python3
import json
print("=== Step 18: Detailed SBOM vs NOTICES Comparison ===\n")
try:
with open('sbom.json', 'r') as f:
sbom = json.load(f)
packages = sbom.get('packages', [])
# Filter to Maven packages only
maven_pkgs = [p for p in packages if 'SPDXRef-maven' in p.get('SPDXID', '')]
print(f"Total Maven packages: {len(maven_pkgs)}\n")
# Key packages to check
key_packages = {
'spring-boot': [],
'jackson': [],
'commons': [],
'postgresql': [],
'junit': [],
'mockito': [],
'lombok': [],
'json': [],
'tensorflow': [],
'opencv': [],
'hibernate': [],
'micrometer': [],
'springdoc': [],
'sourceafis': [],
'apache-http': [],
'batch': [],
'kafka': []
}
for pkg in maven_pkgs:
name = pkg.get('name', '').lower()
for key in key_packages.keys():
if key.replace('-', '') in name.replace(':', '').replace('-', ''):
key_packages[key].append({
'name': pkg.get('name'),
'version': pkg.get('versionInfo', 'N/A'),
'license': pkg.get('licenseConcluded', pkg.get('licenseDeclared', 'N/A'))
})
# Report findings
for category, pkgs in key_packages.items():
if pkgs:
print(f"\n### {category.upper()} ###")
for p in pkgs:
print(f" {p['name']}")
print(f" Version: {p['version']}")
print(f" License: {p['license']}")
# Specific checks
print("\n\n=== CRITICAL CHECKS ===\n")
# Check org.json
json_pkgs = [p for p in maven_pkgs if 'org.json:json' in p.get('name', '')]
print("1. org.json package:")
if json_pkgs:
for pkg in json_pkgs:
print(f" Found: {pkg.get('name')}")
print(f" Version in SBOM: {pkg.get('versionInfo', 'N/A')}")
print(f" License in SBOM: {pkg.get('licenseConcluded', 'N/A')}")
else:
print(" NOT FOUND in SBOM (but declared in pom.xml with version 20180130)")
# Count packages with NOASSERTION license
no_license = [p for p in maven_pkgs if p.get('licenseConcluded', 'NOASSERTION') == 'NOASSERTION']
print(f"\n2. Packages with NO license info: {len(no_license)} out of {len(maven_pkgs)}")
print(f" Percentage: {len(no_license)*100/len(maven_pkgs):.1f}%")
# Packages with explicit licenses
with_license = [p for p in maven_pkgs if p.get('licenseConcluded') and p.get('licenseConcluded') != 'NOASSERTION']
print(f"\n3. Packages WITH explicit licenses: {len(with_license)}")
license_dist = {}
for pkg in with_license:
lic = pkg.get('licenseConcluded')
license_dist[lic] = license_dist.get(lic, 0) + 1
print(" License distribution:")
for lic, count in sorted(license_dist.items(), key=lambda x: x[1], reverse=True):
print(f" {lic}: {count}")
except Exception as e:
print(f"Error: {e}")
import traceback
traceback.print_exc()#!/usr/bin/env python3
print("=== Step 20: Generate Discrepancy Report ===\n")
# Read NOTICES file
with open('THIRD-PARTY-NOTICES.txt', 'r') as f:
notices = f.read()
# Parse NOTICES structure
import re
# Find all package entries
package_pattern = r'Package: (.+?)\nVersion: (.+?)\nLicense: (.+?)\nHomepage: (.+?)\n'
notices_packages = re.findall(package_pattern, notices, re.DOTALL)
print(f"THIRD-PARTY-NOTICES.txt Analysis:")
print(f"Total grouped package entries: {len(notices_packages)}\n")
# List them
for i, (pkg, ver, lic, home) in enumerate(notices_packages, 1):
pkg_clean = pkg.strip().split('\n')[0][:80]
print(f"{i}. {pkg_clean}")
# Check for specific concerning items
print("\n=== LICENSE CONCERNS IN NOTICES ===")
if 'JSON License' in notices:
print("⚠️ JSON License found (problematic license)")
if 'Inferred from' in notices:
inferred_count = notices.count('Inferred from')
print(f"⚠️ {inferred_count} licenses marked as 'Inferred' (should be verified)")
if 'per SBOM' in notices:
sbom_ref_count = notices.count('per SBOM')
print(f"⚠️ {sbom_ref_count} version references to 'per SBOM' (should be explicit)")
print("\n=== KEY FINDINGS ===")
print("1. THIRD-PARTY-NOTICES groups dependencies into 26 entries")
print("2. Many versions reference 'per SBOM' instead of explicit versions")
print("3. Many licenses marked as 'Inferred from project repository'")
print("4. JSON.org explicitly mentions 'JSON License' (non-OSI approved)")
print("5. Document references non-existent 'license/' directory")#!/usr/bin/env python3
import json
print("=== Step 21: Final Validation & Discrepancy Report ===\n")
# Load SBOM
with open('sbom.json') as f:
sbom = json.load(f)
maven_pkgs = [p for p in sbom.get('packages', []) if 'SPDXRef-maven' in p.get('SPDXID', '')]
# Known versions from pom.xml analysis
known_versions = {
'org.json:json': '20180130',
'org.springframework.boot:spring-boot-starter-webflux': '3.3.2',
'org.springframework.kafka:spring-kafka': '2.5.8',
'org.apache.httpcomponents:httpmime': '4.5.9',
'org.tensorflow:tensorflow': '1.15.0',
'org.openpnp:opencv': '4.5.3-4',
'org.springdoc:springdoc-openapi-starter-webmvc-ui': '2.5.0',
'junit:junit': '4.13.2',
'org.mockito:mockito-core': '3.4.3',
'com.machinezoo.sourceafis:sourceafis': '3.4.0',
'org.postgresql:postgresql': '42.2.2',
'javax.xml.parsers:jaxp-api': '1.4.5',
'info.weboftrust:ld-signatures-java': '1.0.0',
'org.springframework:spring-webflux': '6.1.11',
}
print("="*80)
print("COMPREHENSIVE DISCREPANCY REPORT")
print("="*80)
print("\n### 1. CRITICAL ISSUES ###\n")
# Issue 1: org.json
print("❌ ISSUE 1: org.json License Problem")
print(" Package: org.json:json")
print(" Version in pom.xml: 20180130")
print(" License: JSON License (includes 'Good, not Evil' clause)")
print(" Status: NOT OSI-APPROVED")
print(" Problem: This license version is problematic for enterprise use")
print(" SBOM Status: Listed but no license info (NOASSERTION)")
print(" NOTICES Status: Listed under 'JSON Libraries' with 'JSON License (Inferred)'")
print(" Action Required: Upgrade to version 20220924+ OR migrate to Apache 2.0 alternative\n")
# Issue 2: Missing license/ directory
print("❌ ISSUE 2: Missing license/ Directory")
print(" THIRD-PARTY-NOTICES.txt references: 'license/ directory'")
print(" Actual status: Directory does NOT exist")
print(" Action Required: Create directory with full license texts OR remove reference\n")
# Issue 3: Version mismatches
print("❌ ISSUE 3: Vague Version References")
print(" Problem: Many entries use 'per SBOM' or 'family' instead of exact versions")
print(" Examples:")
print(" - 'Spring Boot 3.3.x' (should be 3.3.2)")
print(" - 'Jackson 2.x family' (version unclear)")
print(" - 'Micrometer 1.x family' (version unclear)")
print(" Action Required: Specify exact versions\n")
print("\n### 2. SBOM VALIDATION ISSUES ###\n")
no_version = [p for p in maven_pkgs if not p.get('versionInfo') or p.get('versionInfo') == 'N/A']
print(f"⚠️ {len(no_version)} packages in SBOM without version info ({len(no_version)*100/len(maven_pkgs):.0f}%)")
no_license_sbom = [p for p in maven_pkgs if not p.get('licenseConcluded') or p.get('licenseConcluded') == 'NOASSERTION']
print(f"⚠️ {len(no_license_sbom)} packages in SBOM without license info ({len(no_license_sbom)*100/len(maven_pkgs):.0f}%)")
print(f"\nTotal Maven packages in SBOM: {len(maven_pkgs)}")
print(f"Packages with explicit versions: {len(maven_pkgs) - len(no_version)}")
print(f"Packages with explicit licenses: {len(maven_pkgs) - len(no_license_sbom)}")
print("\n### 3. MOSIP INTERNAL PACKAGES ###\n")
mosip_pkgs = [p for p in maven_pkgs if 'io.mosip' in p.get('name', '')]
print(f"Total MOSIP packages: {len(mosip_pkgs)}")
print("These use 1.3.0-SNAPSHOT versions and MPL-2.0 license (correctly documented)")
print("\n### 4. LICENSE VERIFICATION RESULTS ###\n")
license_checks = {
'Apache-2.0': '✅ Verified',
'MIT': '✅ Verified',
'BSD-3-Clause': '✅ Verified',
'EPL-2.0': '✅ Verified',
'LGPL-3.0': '⚠️ Copyleft (Sonar plugin)',
'JSON License': '❌ Problematic',
'MPL-2.0': '✅ Verified (MOSIP components)'
}
for lic, status in license_checks.items():
print(f" {lic}: {status}")
print("\n### 5. SUMMARY STATISTICS ###\n")
print(f"THIRD-PARTY-NOTICES.txt: 26 grouped package entries")
print(f"SBOM Maven packages: {len(maven_pkgs)}")
print(f"pom.xml files analyzed: 11")
print(f"SBOM packages with licenses: {len(maven_pkgs) - len(no_license_sbom)}")
print(f"SBOM packages with versions: {len(maven_pkgs) - len(no_version)}")
print("\n### 6. RECOMMENDED ACTIONS ###\n")
print("1. ❌ URGENT: Address org.json license issue")
print(" - Option A: Upgrade to version 20220924+ (Public Domain)")
print(" - Option B: Migrate to Jackson or Gson (Apache 2.0)")
print("")
print("2. ❌ Create license/ directory with full license texts")
print(" OR remove the reference from THIRD-PARTY-NOTICES.txt")
print("")
print("3. ⚠️ Replace 'per SBOM' and version 'families' with exact versions")
print("")
print("4. ⚠️ Replace 'Inferred from repository' with verified licenses")
print(" from official sources (Maven Central, SPDX, project LICENSE files)")
print("")
print("5. ⚠️ Update PostgreSQL license description")
print(" From: 'PostgreSQL License (BSD-style)'")
print(" To: 'BSD-2-Clause License (PostgreSQL License)'")
print("")
print("6. ℹ️ Consider breaking down grouped entries for better traceability")
print(" Example: List each Jackson module separately instead of grouped")
print("\n" + "="*80)
print("END OF REPORT")
print("="*80)🏁 Script executed: Length of output: 3135 @Rakshithasai123, I've completed a comprehensive legal-compliance, accuracy, and metadata validation of your THIRD-PARTY-NOTICES.txt file. Here is the structured report: 🔍 COMPREHENSIVE VALIDATION REPORTTHIRD-PARTY-NOTICES.txt Legal Compliance & Accuracy AnalysisRepository: id-authentication ❌ CRITICAL ISSUES (Must Fix)1. org.json License Violation RiskStatus: 🚨 HIGH PRIORITY - LEGAL COMPLIANCE RISK
✅ SOLUTION:
Update Required in:
2. Missing license/ DirectoryStatus: 🚨 DOCUMENTATION ERROR
✅ SOLUTION:
3. Vague Version ReferencesStatus: Problem: Most entries use imprecise version references instead of exact versions. Examples of Issues:
✅ SOLUTION: Replace all vague references with exact versions from your pom.xml/BOM 4. Inferred LicensesStatus: Problem: 20+ instances of "Inferred from project's official repository" instead of verified licenses. ✅ SOLUTION: Verify licenses from authoritative sources:
📊 DETAILED FINDINGSSBOM AnalysisTotal Packages in SBOM: 108 entries
SBOM Issues:
Packages WITH Explicit Licenses in SBOM (13 total):
pom.xml vs NOTICES vs SBOM Comparison✅ Correctly DocumentedThese packages are accurately represented:
|
| License | Packages | SPDX ID | Status |
|---|---|---|---|
| Apache License 2.0 | ~60+ | Apache-2.0 | ✅ OSI Approved |
| MIT License | 2 | MIT | ✅ OSI Approved |
| BSD 3-Clause | 1 | BSD-3-Clause | ✅ OSI Approved |
| BSD 2-Clause | 1 | BSD-2-Clause | ✅ OSI Approved |
| EPL 1.0/2.0 | 2 | EPL-1.0/EPL-2.0 | ✅ OSI Approved |
| MPL 2.0 | ~25 | MPL-2.0 | ✅ OSI Approved |
❌ Problematic License
| License | Package | Issue |
|---|---|---|
| JSON License | org.json:json v20180130 | ❌ NOT OSI-approved, contains "Good, not Evil" clause |
⚠️ Copyleft License (Acceptable for build tools)
| License | Package | Notes |
|---|---|---|
| LGPL-3.0 | sonar-maven-plugin |
🔧 RECOMMENDED CORRECTIONS
Ready-to-Use Text Blocks
For org.json Entry (if migrating to Jackson):
Package: Jackson JSON Processing
Version: 2.17.x (managed by Spring Boot BOM)
License: Apache License 2.0
Homepage: https://github.com/FasterXML/jackson
Note: Replaces org.json:json to avoid non-OSI approved JSON License.
For PostgreSQL Entry (corrected):
Package: PostgreSQL JDBC Driver
Version: 42.2.2
License: BSD 2-Clause License (also known as PostgreSQL License)
Homepage: https://jdbc.postgresql.org/
For Version References (example - JUnit):
Replace:
Version: Various (per SBOM)
With:
Version: 4.13.2
📈 STATISTICS SUMMARY
| Metric | Count | Percentage |
|---|---|---|
| THIRD-PARTY-NOTICES.txt | ||
| Grouped package entries | 26 | - |
| Licenses marked "Inferred" | ~18 | 69% |
| Version refs using "per SBOM" or "family" | ~22 | 85% |
| SBOM (Maven packages only) | ||
| Total Maven packages | 81 | - |
| With explicit versions | 27 | 33% |
| With explicit licenses | 13 | 16% |
| pom.xml Analysis | ||
| Total pom.xml files | 11 | - |
| Unique dependencies (approx) | 60+ | - |
| Version managed by BOM | ~40 | 67% |
✅ ACTION CHECKLIST
Immediate (Before Merge)
-
FIX: Address org.json license issue
- Option A: Upgrade to v20220924+ (Public Domain)
- Option B: Migrate to Jackson (recommended)
- Update pom.xml
json.utility.versionproperty - Update code using org.json
-
FIX: Resolve license/ directory reference
- Option A: Create directory with license texts
- Option B: Remove reference from NOTICES
High Priority (Clean-up)
- UPDATE: Replace all "per SBOM" references with exact versions
- UPDATE: Replace "x.x family" with specific versions
- UPDATE: PostgreSQL license description
- VERIFY: All "Inferred" licenses against official sources
Medium Priority (Improvement)
- ADD: Missing individual package versions in grouped entries
- ADD: Explicit mention of javax.xml.bind:jaxb-api
- ADD: Explicit mention of javax.xml.parsers:jaxp-api
- ENHANCE: SBOM completeness with version/license info
Documentation
- CONSIDER: Breaking down grouped entries for better traceability
- Example: List each Spring Boot starter separately
- Example: List each Jackson module individually
- ADD: Instructions for how versions were determined
- ADD: Date of last license audit
🎯 COMPLIANCE STATUS
| Area | Status | Notes |
|---|---|---|
| SPDX Compliance | Most licenses correct but need verification | |
| OSI Approval | ❌ Non-compliant | org.json uses non-OSI license |
| Version Accuracy | Many vague references | |
| Completeness | ✅ Good | All major dependencies covered |
| Documentation | Missing license/ directory |
Overall Assessment:
📞 NEXT STEPS
- Decide on org.json strategy (migrate vs upgrade)
- Fix documentation issues (license/ directory)
- Update version references for accuracy
- Verify all inferred licenses from official sources
- Re-generate SBOM with complete metadata
- Final review before release
Would you like me to:
- Generate a corrected version of THIRD-PARTY-NOTICES.txt with specific recommendations?
- Create an issue to track the org.json migration?
- Provide code examples for migrating from org.json to Jackson?
@CodeRabbit which of these libraries need or mandatory a copyright test? Also, give the files what is the copyright year and date who is the copyright for, like Lombok, Junit, or Sonar, like that
|
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 3152 🏁 Script executed: Length of output: 2548 🌐 Web query: 💡 Result: Use the Spring-recommended Apache‑2.0 source-file header. Example (replace years/owner if needed): /*
Sources: Spring Framework repository and its code-style guidance. [1][2] References 🌐 Web query: 💡 Result: Use this copyright/notice in your copies: Copyright © 2009–2025 The Project Lombok Authors Sources: 🌐 Web query: 💡 Result: Short answer: JUnit 4 is distributed under the Eclipse Public License 1.0 (EPL‑1.0). Use the EPL copyright/header template (example below) in source files: Example EPL header template:
*******************************************************************************/ Sources: JUnit 4 license page and Eclipse default EPL header template. [1][2] References 🌐 Web query: 💡 Result: The copyright notice used by Mockito under the MIT license is: Copyright (c) 2007 Mockito contributors. (The project is distributed under the MIT License; the full MIT text is included in Mockito's LICENSE/TITLE files.) [1][2] 🌐 Web query: 💡 Result: Jackson (FasterXML) is distributed under the Apache License, Version 2.0. Include the Apache-2.0 LICENSE and (where present) the project NOTICE; typical source-file header used in Jackson looks like: /*
*/ See the project repositories and license/notice files. [1][2] Sources: 🌐 Web query: 💡 Result: Short answer: Apache Commons Lang is distributed under the Apache License, Version 2.0. Source files follow the ASF recommended source-header text (see ASF policy) and the repository includes a LICENSE.txt (Apache-2.0) and a NOTICE.txt with the project copyright/attribution. [1][2][3] Sources:
🌐 Web query: 💡 Result: Use the PostgreSQL JDBC Driver’s BSD‑2‑Clause copyright header. Example text to include (from the project license): Copyright (c) 1997, PostgreSQL Global Development Group Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED. (Full BSD‑2‑Clause text as in the sources.) Sources: pgJDBC project license page and repository. [1][2] References 🌐 Web query: 💡 Result: Use the standard Apache‑2.0 boilerplate with TensorFlow authorship. Example header to put at top of Java source files: Copyright [yyyy] The TensorFlow Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. [replace [yyyy] with the copyright year(s)]. [1][2] Sources:
🌐 Web query: 💡 Result: Short answer
What to include for BSD‑3‑Clause (minimum)
Example (practical)
Sources
🌐 Web query: 💡 Result: Hibernate Validator is distributed under the Apache License, Version 2.0 (ASL 2.0). Use the ASL 2.0 boilerplate copyright header (replace the bracketed fields) and include the project NOTICE file if you redistribute derivative works. Example header: Copyright [yyyy] [name of copyright owner] See the Hibernate Validator repository and the Apache License for details. [1][2] Sources: 🌐 Web query: 💡 Result: Short answer
References
🌐 Web query: 💡 Result: The org.json library is distributed under the JSON License (copyright © 2002 JSON.org). It requires including the copyright/permission notice in copies and contains the unusual clause: "The Software shall be used for Good, not Evil." The full text is on json.org. (json.org) Citations: 🌐 Web query: 💡 Result: Use the standard Apache‑2.0 file header with the SourceAFIS copyright owner and year. For SourceAFIS for Java the repository states Apache‑2.0 license. Example header to put at top of each source file: Copyright 2025 Robert Vazan Also include a LICENSE file containing the full Apache‑2.0 text and a NOTICE file as recommended by Apache guidance. (github.com) Citations: 🌐 Web query: Error during web search 🌐 Web query: Error during web search 🌐 Web query: 💡 Result: Suggested JaCoCo copyright / license notice (as used in JaCoCo releases): Copyright © 2009, 2025 Mountainminds GmbH & Co. KG and Contributors Sources:
🌐 Web query: 💡 Result: The git-commit-id-plugin is released under the GNU Lesser General Public License v3.0 (LGPL-3.0). The project's GitHub README and its Maven listings state the license and include the full LICENSE file. [1][2] Sources:
🌐 Web query: 💡 Result: Yes — the Sonatype Central Publishing Maven Plugin (org.sonatype.central:central-publishing-maven-plugin) is released under the Apache License, Version 2.0. [1][2] Sources:
🌐 Web query: 💡 Result: Use the standard Apache source-file header and the project's NOTICE. Example recommended header for HttpComponents source files: Licensed to the Apache Software Foundation (ASF) under one And the top-level NOTICE text used by HttpComponents distributions typically reads (example): Apache HttpComponents Client Sources: Apache source-header policy and HttpComponents project NOTICE/license pages. [1] [2] References 🌐 Web query: 💡 Result: Micrometer is licensed Apache License 2.0. Use the standard Apache-2.0 header and include the project’s copyright/NOTICE when redistributing. Example header (replace years/owner as appropriate): Copyright 2017–Present VMware, Inc. Sources: Micrometer GitHub (Apache-2.0). [1] Example top-level notice showing VMware copyright for Micrometer. [2] References: @Rakshithasai123, I've completed a comprehensive analysis of which libraries require copyright attribution. Here's the formatted COPYRIGHT NOTICES section for your THIRD-PARTY-NOTICES.txt file: 📋 COPYRIGHT ATTRIBUTION REQUIREMENTSNow I have all the information needed. Let me compile the comprehensive COPYRIGHT NOTICES section.@Rakshithasai123, I've analyzed all the libraries in your project and their copyright requirements. Here's the comprehensive COPYRIGHT NOTICES section formatted as you requested: 📋 KEY FINDINGSWhich Licenses REQUIRE Copyright Attribution?✅ ALL of the following licenses MANDATE copyright notice preservation:
Critical Copyright Notes:
Recommendations:
Would you like me to help create a combined THIRD-PARTY-NOTICES.txt file with both the package information and this COPYRIGHT NOTICES section integrated? |
This file lists third-party packages used in the project along with their licenses, versions, and homepages.