Skip to content

License the project under Apache 2.0#52

Draft
mhellevang wants to merge 1 commit into
mrmidi:mainfrom
mhellevang:license/apache-2.0
Draft

License the project under Apache 2.0#52
mhellevang wants to merge 1 commit into
mrmidi:mainfrom
mhellevang:license/apache-2.0

Conversation

@mhellevang

@mhellevang mhellevang commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

The repository currently has no LICENSE file, which under default copyright law means "all rights reserved" — forks and users have no legal right to use, modify, or redistribute the code. Meanwhile the source files carry contradictory SPDX headers: 145 files say LGPL-3.0-or-later, 17 files say MIT, and ~670 files have no header. All copyright lines say "ASFireWire Project", so these appear self-authored and inconsistently generated rather than imported.

This PR proposes formalizing the project under the Apache License 2.0:

  • Adds top-level LICENSE (verbatim Apache 2.0 text) and NOTICE
  • Normalizes all 162 existing SPDX headers to Apache-2.0
  • Adds APSL-2.0 attribution to the FWAddress API-compatibility port from Apple IOFireWireFamily (ASFWDriver/Async/AsyncTypes.hpp)
  • Adds a License section to the README, clarifying that the gitignored references/ stacks (Linux, Apple, libffado) are read-only behavioral references, never distributed, and that no code is copied from them

Why Apache 2.0

A tree audit (grep for ported/copied/verbatim markers and license identifiers) found nothing that forces copyleft:

  • No verbatim GPL copying — Linux/Apple mentions are behavioral citations ("cross-validated with…")
  • FWAddress reproduces an API layout from IOFireWireFamily (APSL-2.0) — interface-level, now attributed
  • CSRResponder.cpp ports semantics from Linux, not code
  • Swift app dependencies are all Apache-2.0/MIT

Apache 2.0 over MIT because of the explicit patent grant (§3), which is meaningful for driver code. LGPL-3.0 (the majority header today) is an awkward fit for a statically linked dext — the library-swap mechanism it's built around doesn't apply.

⚠️ Contributor consent required before merge

The 145 files currently marked LGPL-3.0-or-later carry an explicit license grant. Changing that grant requires consent from everyone with copyrightable contributions to those files. This PR is a draft until the contributors below have acked (a simple "I consent to relicensing my contributions under Apache-2.0" comment suffices):

(Only those with non-trivial changes in the LGPL-marked files strictly need to consent; listing everyone for completeness.)

Consent window: if no objection is raised within 14 days of this PR (2026-07-23), we treat silence from the remaining contributors as no objection and proceed. Their footprint in the relicensed files is small (git log: gly11 11 commits, Brian Hoffman 2, vs. 826 for @mrmidi). If anyone objects later, their contributions will be rewritten or their files reverted to LGPL — no one's grant is changed over their objection.

Notes

  • Going forward, contributions are inbound = outbound per Apache-2.0 §5 — no CLA needed.
  • Follow-up (optional, separate PR): add SPDX headers to the ~670 files that have none.

Add top-level LICENSE (Apache License 2.0) and NOTICE. Normalize the 162
existing SPDX headers (145 LGPL-3.0-or-later, 17 MIT — inconsistently
self-generated, all copyright 'ASFireWire Project') to Apache-2.0.

Add APSL-2.0 attribution to the FWAddress API-compatibility port from
IOFireWireFamily, and a License section in README clarifying that the
gitignored reference stacks are behavioral references only and never
distributed.

Files previously carrying an LGPL-3.0-or-later grant require consent
from their contributors to relicense; collected in the PR thread before
merge.
@klochowicz

Copy link
Copy Markdown
Contributor

I guess because my PR got merged in the meantime, I think I should also state it clearly:

I consent to relicensing my contributions under Apache-2.

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