LGPL for device drivers
Kernel Licensing
William  

Use LGPL for Device Drivers

LGPL for device drivers gives engineers a clear path to mix open libraries with closed program code while keeping practical release options.

The Free Software Foundation created a weak copyleft model that lets a linked library stay open without forcing an entire program into the GPL. This matters when you need to ship software that combines proprietary code and shared libraries.

We cover what the license allows, when dynamic linking is the safer route, and which steps you must take if you choose static linking—like sharing the corresponding source and rebuild information. Expect plain-language checks and real-world examples to help users make compliant choices.

Table of Contents

Key Takeaways

  • The license is weak copyleft: it protects libraries while allowing linked proprietary program code.
  • Dynamic linking usually avoids full GPL obligations; static linking needs extra source and rebuild materials.
  • Versions v2.1 and v3 differ in name and patent clauses—know which terms apply.
  • Document modifications and provide clear information to users to stay compliant.
  • Kernel and symbol rules (MODULE_LICENSE, SPDX) affect access—plan integration early.

Why engineers explore LGPL for device drivers today

We see engineering teams choose a linking-friendly license to combine open libraries with proprietary program parts while keeping release flexibility. This approach lets teams ship commercial software without converting all code to a strong copyleft model.

Dynamic linking is the usual path. It lowers upgrade risk and lets you update a library independently of the surrounding program. Static linking happens too—when it does, teams package rebuild information and object files so users can relink with modified source.

Leaders value clear terms: the license requires sharing library source and modifications but lets other program code remain under different licenses. That clarity helps security and compliance teams audit requirements quickly.

AspectDynamic linkingStatic linking
Compliance effortLower — provide library source and noticesHigher — provide rebuild info and object files
Update modelIndependent library updatesTied to program rebuilds
Practical benefitSimpler audits and upgradesStrong control, more paperwork
  • v2.1 and v3 remain common; v3 adds installation information and a patent grant that eases IP risk.
  • Teams choose this path to balance innovation with obligations to the general public.

Understanding the GNU Lesser General Public License (LGPL)

A practical weak-copyleft license draws a clear boundary around shared libraries while letting other program parts remain closed.

The license began as the GNU Library General Public License in 1991 and was renamed in v2.1 to clarify scope and use. That change made it easier for teams to combine open libraries with proprietary program code without triggering full GPL obligations.

Weak copyleft vs strong copyleft and permissive licenses

Weak copyleft protects the library and its source. You must share modifications to the library and keep notices intact. But your separate program can stay under its own license when linked properly.

Strong copyleft—like the gpl—extends obligations to the entire combined program. Permissive licenses (MIT, BSD) impose fewer terms and do not require reciprocal source sharing for library edits.

AspectWeak copyleftStrong copyleft
ScopeLibrary boundary; modifications must be sharedCombined program becomes subject to the license
Effect on proprietary codeProprietary program can remain closed when linked properlyProprietary code must comply or be open-sourced
Typical useShared libraries and reusable componentsComplete works where reciprocal sharing is required

How the license evolved

The Free Software Foundation updated the text in v2.1 (1999) and again in v3 (2007). v3 aligns with gplv3, adds installation information, and includes a patent grant that reduces IP risk.

  • v2.1 clarified library use with mixed program structures.
  • v3 brings clearer terms that affect consumer installations and patents.
  • Both versions require including the full license text and original copyright notices when distributing modified library source.

LGPL for device drivers

Where drivers interact with libraries and user space

A typical driver stack separates a kernel module, a user-space helper program, and shared library components. This clear division helps you place a weak-copyleft library where it makes the most sense.

When a user-space program talks to kernel code via syscalls or UAPI headers, the library layer can carry the copyleft obligations without pulling the entire software stack into a stronger license. That keeps proprietary program logic outside the sharing requirement.

On Windows and other platforms, vendors often ship user-mode libraries that expose APIs. Choosing a shared library there preserves flexibility for closed parts of the work while letting you contribute fixes upstream.

  • Map the stack: kernel module — user-space program — library.
  • Keep ABI, versioning, and packaging stable so users can swap an updated library without rebuilding unrelated code.
  • Document the license text and include clear attribution and source links for library changes.
Integration pointEffectWhat to provide
Dynamic linkingLibrary obligations limitedLibrary source and notices
Static linkingBroader rebuild requirementsObject files and relinking info
Syscall boundaryKernel remains under gplKeep headers and UAPI clean

Design the architecture so your distribution satisfies the license while keeping operational burden low. With a sound structure, you maintain performance and give users the freedoms the general public expects.

Dynamic linking vs static linking: different requirements that matter

How a program links a library changes what you must deliver to users. Shared libraries create a clear boundary. That boundary usually meets the license intent and cuts compliance work.

The safe harbor for dynamically linked libraries

Dynamic linking is the default strategy. It lets users swap a library at runtime. That ability satisfies the safe harbor concept and reduces obligations on your program.

Compliance implications when statically linked into a program

Static linking is an exception. If you include a library into a single binary, you must provide not only the library source but also the materials to relink the program.

This typically means object files, linker scripts, or complete corresponding source that lets users rebuild with a modified library.

Languages and build systems without static linking equivalents

Many modern languages and toolchains do not produce static artifacts. In those ecosystems, dynamic approaches align naturally with the license and user freedom.

  • Document build steps, flags, and versions to make relinking reproducible.
  • Ship license text, clear modification notices, and easy access to source.
  • Prefer ABI stability and semantic versioning so replacement is reliable for users.
Linking modelTypical obligationWhat to include
Dynamic linkingLowerLibrary source, notices, and access instructions
Static linkingHigherObject files, relinking info, and complete corresponding source
No static artifactsInherent alignmentDocument build system and provide source links

LGPL v2.1 and v3: versions, terms, and practical differences

Two common releases—v2.1 and v3—look similar on paper but change what you must provide to users and contributors.

v2.1 remains popular because it blends weak copyleft with pragmatic relicensing to older gpl versions. It lets teams relicense library derivatives to compatible v2.1+/gplv2+ terms.

v3 aligns with gplv3 and adds explicit installation information requirements for consumer equipment. That means if your program runs on a closed appliance, you must supply clear steps so users can install modified library software onto the unit.

Patent rights and contributor protection

v3 also includes a patent rights grant. Contributors give users and downstream projects a license to related patent claims. This reduces the chance of patent assertions that block users or other contributors from using or improving the code.

Relicensing and derivative works

Rules differ: v2.1 permits certain upgrades to v2.1+/gplv2+ paths, while v3 allows relicensing to v3/gplv3+ but not back to older v2-only terms. That affects how you combine library code with other open stacks.

  • Document which version applies in NOTICE files and headers.
  • Plan installation materials early if you ship consumer products.
  • Review contributor agreements to confirm the patent posture before adopting v3.
Aspectv2.1v3
Installation informationNot requiredRequired for consumer products
Patent grantImplicit, limitedExplicit contributor patent license
Relicensingv2.1+/gplv2+ allowedv3/gplv3+ allowed; v2-only not allowed

Choose the version that matches your distribution model, then align compliance steps—source access, installation instructions, and contributor terms—to that text. Clear labels and simple documentation keep users informed and reduce retrofit work later.

What counts as a derivative work or modification to an LGPL library

Deciding when code becomes a derivative hinges on how tightly it integrates with a shared library. Edit the library’s source, add files that compile into the library, or backport patches—those actions are modifications and trigger source obligations when you distribute the software.

Thin wrappers or adapters that get compiled into the same library unit are usually treated as part of the library. Keep those under the same license to satisfy the terms and avoid surprise obligations.

By contrast, a program that merely links to the library—especially via dynamic linking—remains your program. That use does not extend the gpl-style obligations to the entire program, so your code can keep its chosen licenses.

  • Copying significant portions of library code into application sources creates a derivative and must be released under the library license.
  • Practical test: if removing the library breaks the program but the program stays replaceable and separately licensed, you are likely within safe boundaries.
  • Static linking raises tougher questions—provide relinkable objects and clear rebuild steps when distributing.
ActionResultWhat to provide
Edit library sourceModification / derivativeCorresponding source and notices
Thin wrapper in libraryDerivativeLicense-aligned headers and attribution
Dynamic linkingProgram stays separateLibrary source and access instructions

Mark changes in commits and headers. When in doubt, separate repositories, clear APIs, and dynamic linking reduce ambiguity and help users exercise their rights without forcing wider relicensing.

Source code, corresponding source code, and access requirements

When you distribute software that links to a shared library, clear access to source must be part of your release plan.

Include the full license text and a copy of original copyright notices in a LICENSE or NOTICE file that ships with your program. Doing this up front keeps compliance simple and visible.

If you modify the library and distribute it, provide the source code for your changes and the unmodified portions as a complete, buildable package. That complete corresponding source lets users inspect and rebuild the work you shipped.

Rebuild materials and access

For static linkage, include object files or equivalent relink materials so users can recompile the program with their modified library. Add build scripts, dependency versions, and config files to make rebuilds reproducible.

  • Host a stable URL to the corresponding source and include that link in docs and installer prompts.
  • Keep a changelog and tag releases so users match code to shipped binaries.
  • When bundling multiple licenses, include each license text and mark which components they cover.
RequirementWhat to provideWhy it matters
License text & noticesLICENSE/NOTICE file with copy of original textShows legal terms and attribution
Corresponding sourceComplete source package or stable URLEnables inspection and rebuild
Relink materialsObject files, scripts, configsRequired for static-linked program rebuilds

Validate releases with a checklist: license text, notices, corresponding source, and relink materials when needed. Train support staff to respond to source requests and point users to the right access channel. These steps protect users and simplify audits.

Navigating the Linux kernel reality: GPL-2.0, exceptions, and drivers

Linux uses GPL-2.0-only for in-tree code. That rule means files must carry compatible license identifiers. At the same time, the kernel documents a narrow exception for syscall interfaces.

A meticulously detailed illustration of the GPL software license, set against the backdrop of a modern software development workspace. In the foreground, a sleek laptop displays a terminal window with the GPL text prominently displayed, while in the middle ground, a complex network diagram showcases the interconnectivity of open-source components. The background features a minimalist desk setup, complete with a high-resolution monitor, a carefully organized workstation, and subtle hints of hardware components, all bathed in a warm, diffused lighting that lends an atmosphere of thoughtful contemplation to the scene.

Syscall boundary and the Linux-syscall-note exception

The Linux-syscall-note clarifies that UAPI headers do not extend GPL obligations to user-space programs. UAPI headers commonly embed “GPL-2.0 WITH Linux-syscall-note” as an SPDX tag. This lets non-GPL software include those headers without making the whole program subject to kernel terms.

When kernel code can use LGPL identifiers

Individual kernel files may declare specific SPDX tags like LGPL-2.1 or LGPL-2.1+. Use precise identifiers where components are intended to be weaker-copyleft. That practice helps compliance tools and users read license intent at a glance.

  • Keep kernel modules separate from user-space libraries to avoid mixed obligations.
  • Document SPDX tags in each file and ship matching license texts with distributions.
  • Remember: GPL-only exported symbols require compatible MODULE_LICENSE strings for access.
AreaTypical tagEffect on user code
UAPI headersGPL-2.0 WITH Linux-syscall-notePermits inclusion in non-GPL user programs
Kernel core filesGPL-2.0-onlyRequires GPL-compatible code in-tree
Reusable user librariesLGPL-2.1 / LGPL-2.1+Allows linking from proprietary programs if separated

Design the stack so syscalls form the stable interface. Place weaker-copyleft libraries in user space and keep kernel modules under compatible tags. That approach protects your program and gives users clear source and license information.

SPDX license identifiers: precise labeling for driver and library code

Use clear, machine-readable labels at the top of each source file to make license terms unambiguous. This practice helps tools, auditors, and downstream users identify the applicable license quickly.

Placement and syntax: AND, OR, and WITH expressions

Place an SPDX-License-Identifier on the first commentable line of every file. Tools expect it there and CI can reject missing tags.

Use WITH for exceptions like “GPL-2.0 WITH Linux-syscall-note” on UAPI headers. Use OR when recipients may choose a license, e.g., “GPL-2.0 OR MIT.” Use AND only when both license texts apply simultaneously.

Dual licensing scenarios relevant to driver stacks

Dual licensing is common for shared code. Examples include “GPL-2.0 OR BSD-2-Clause” for dtsi or common modules that must remain flexible across projects.

  • Match SPDX identifiers to the license text stored in LICENSES/.
  • Label LGPL libraries consistently (e.g., “LGPL-2.1” or “LGPL-2.1+”).
  • Document patterns in your contributor guide and enforce with CI checks.
Use caseTypical SPDXWhat to ship
UAPI headersGPL-2.0 WITH Linux-syscall-noteHeader + license text
Shared codeGPL-2.0 OR MITBoth license texts in repo
Library sourcesLGPL-2.1 / LGPL-2.1+Corresponding source and notices

MODULE_LICENSE in loadable kernel modules: signals and limits

MODULE_LICENSE() informs the kernel loader and admin tools whether a module is treated as free software or proprietary. This signal affects runtime behavior, tooling, and access to exported symbols.

Common valid strings include “GPL”, “GPL v2”, “Dual MIT/GPL”, “Dual BSD/GPL”, “Dual MPL/GPL”, and “Proprietary”. Choose the tag that reflects your source and how you expect users to interact with the code.

MODULE_LICENSE valueEffect at loadSymbol access
GPL / GPL v2Marked GPL-compatibleCan access EXPORT_SYMBOL_GPL()
Dual MIT/GPLPermissive + GPL optionDepends on declared compatibility
ProprietaryKernel tainted on loadCannot use EXPORT_SYMBOL_GPL()

Remember: MODULE_LICENSE does not replace SPDX headers. SPDX identifiers in each source file define the actual legal license terms. MODULE_LICENSE only signals the kernel’s runtime policy.

  • Add MODULE_LICENSE() to every kernel module so the loader and tools get clear information.
  • Proprietary modules taint the kernel and are blocked from GPL-only symbols—plan around that limit in your program.
  • Document links between kernel-space code and any user-space shared library to simplify audits and support.
  • Keep license texts that match SPDX tags in your repo and distribution to avoid confusion for users and reviewers.

Train engineers to update SPDX headers and MODULE_LICENSE together during refactors. That discipline prevents runtime surprises and keeps your software and source aligned with expected terms.

Distribution scenarios: proprietary products using LGPL’d libraries

Selling a closed-source product that links to a shared library is allowed—you do not need to relicense your whole program to monetize it. The weak-copyleft public license lets commercial teams ship proprietary work while protecting the library’s source and changes.

When you distribute, include the full license text and a copy of original notices. Provide the source for any modifications you made to the library so users can inspect and rebuild that component.

Commercial use without sublicensing the library code

You may sell software that links to the library without sublicensing the library itself. Keep your proprietary code separate and document the boundary between components.

Combining proprietary program code with shared libraries

Prefer dynamic linking so users can replace the library without needing your program’s source. If you choose static linking, ship relinkable objects or equivalent rebuild materials so users can relink with modified code.

  • Disclose the library version and where to access its source.
  • Include license files and source links in packages and app-store metadata.
  • Keep a per-release compliance checklist to meet distribution requirements.
ScenarioMust provideWhy it matters
Dynamic linkingLicense text, source linkUsers can replace the library without your source
Static linkingRelinkable objects, build infoEnables users to rebuild the program with changed library
Marketplace distributionLicense files in package, accessible source linksMakes compliance visible to users and reviewers

Support customers by explaining how library updates are delivered and how they can apply changes. This approach respects the public license while preserving your ability to commercialize your program.

Case-in-point: libusbK GNU LGPL in Windows driver distribution

The libusbK package offers a clear example of shipping shared library code inside a signed Windows installer.

The Android package (version 3.0.5.17, 2013-06-17) ships as an installer that requires administrative rights and UAC acceptance. It is digitally signed by libusbK GNU LGPL, is 229.40 KB, and carries a 4.6/5 rating from 73,579 votes. Release notes recommend a restart after installation. Tools like DriverMax can automate installation and updates.

Key packaging and compliance actions are straightforward and practical. Include the full license text inside the installer and link to the exact source and any modified code. If any library parts are statically linked into the program, supply relinkable objects or rebuild instructions so users can reproduce the binary.

AspectWhat to includeWhy it matters
InstallerLicense text, source links, restart noteShows compliance and reduces support calls
SignaturePublisher digital signatureBuilds trust and eases enterprise rollouts
OS supportWindows 2000 → 11 (64-bit)Maintains compatibility across fleets
  • Document how users can update the library independently and where to find installation information.
  • Archive exact source versions alongside shipped binaries to aid audits and support.

Compliance workflow and checklists for using LGPL in drivers

Start a compliance workflow by choosing clear boundaries between your closed program and any shared libraries. A short, repeatable checklist saves time and keeps audits straightforward. Use automation where possible and make source access visible to users.

Dynamic linking as default strategy

Dynamic linking is the simplest path. It keeps a clean line between proprietary program code and the shared library. That separation lowers compliance work and lets users replace library binaries without needing your program source.

Documenting modifications and making updates available

When you modify library code, publish the corresponding source code and a changelog. Tag releases and host the complete corresponding source at a stable URL. Include relinkable objects and rebuild steps if you ever statically combine the library with the program.

Handling installation information for consumer devices

Under v3, provide clear installation information so users can reinstall modified software safely. Ship keys, scripts, or procedures as needed and mirror them to ensure long-term access for users and auditors.

ItemTypical actionWhy it matters
License & noticesInclude LICENSE and copyright copiesShows legal terms
Source accessHost complete corresponding sourceEnables inspection
Rebuild materialsProvide object files & scriptsRequired for static relinks

LGPL vs MPL, EPL, and CDDL: weak copyleft options compared

When choosing a public license, teams often weigh file-level reciprocity against link-based safe harbors. The choice affects how your program and libraries must be shared when you ship software.

File-based copyleft vs linking-oriented safe harbors

MPL, EPL, and CDDL apply obligations at the file level. Modify a file and that file’s source must stay open under the same terms.

By contrast, the LGPL-style approach protects a library boundary and lets proprietary program parts remain separate when linked dynamically.

  • File-based models suit projects that expect per-file patches and aggregation.
  • Link-focused models favor broad library reuse without relicensing entire programs.
  • Dual licensing can ease mixing these models in a single stack.

Patent grants across weak copyleft families

MPL, EPL, CDDL and LGPL v3 include explicit patent language that lowers IP risk for users and companies. That grant matters in commercial and device markets.

Note: EPL also has contributor defense clauses that change corporate risk calculations compared to linking-focused licenses.

AspectMPL / EPL / CDDLLGPL v3
ScopeFile-based reciprocityLinking boundary; dynamic safe harbor
Patent grantExplicit in eachExplicit in v3
Contributor obligationsEPL may include defense dutiesNo contributor defense clause
Best fitPer-file modification workflowsLibrary reuse and commercial linking

Community, governance, and the Free Software Foundation’s guidance

Practical guidance from the Free Software Foundation helps teams translate legal text into repeatable compliance steps.

The Free Software Foundation maintains authoritative texts and explanations within the GNU Project. Their materials recommend using current license versions and explain obligations such as source access and installation information.

Following FSF guidance aligns your program’s compliance with community expectations. That makes audits easier and helps users understand their rights when they receive software that links to shared libraries.

Engage with upstream projects early. Coordinate changes to code and document terms so contributors can submit patches with fewer delays.

  • Include full license texts and precise SPDX identifiers in repos.
  • Publish corresponding source and clear relink instructions when needed.
  • Use FSF educational materials to interpret patent and installation clauses.
FSF actionBenefit to your workWhat users get
Authoritative license textConsistent complianceClear legal terms
Guidance & educational docsFaster auditsPractical information
Community normsSmoother contributionsReliable source access

Risks, enforcement signals, and how to avoid compliance pitfalls

Small signals matter: ambiguous headers, wrong module tags, or missing relink materials can trigger enforcement actions that start with a simple request for source access. Fixing these early keeps audits short and disputes rare.

Static linking traps and rebuild requirements

Static linking without shipping relinkable objects blocks users from exercising their rights. You must provide object files, build scripts, or equivalent instructions so someone can rebuild the program with modified code.

Keep a reproducible build log that records exact source commits, toolchain versions, and linker flags. That information speeds responses to user requests and lowers enforcement risk.

Ambiguous licensing headers without SPDX tags

Missing or boilerplate headers confuse automated scanners and reviewers. Add precise SPDX identifiers to each file and include full license text and original copyright copies in your release.

MODULE_LICENSE must match actual license terms. If it does not, kernel modules can lose access to GPL-only symbols or taint the running kernel—both are avoidable with accurate tags.

  • Do not ship static binaries without relink materials and rebuild steps.
  • Include LICENSE and a copy of original notices in packages.
  • Use clear SPDX tags and validate them with CI checks.
  • Map dependencies to avoid incompatible licenses that break symbol access.
  • Train teams to respond quickly to source access requests.
RiskSignalRequired actionWhy it matters
Static linkingNo relink objectsProvide object files and build stepsEnables users to rebuild the program
Ambiguous headersMissing SPDXAdd SPDX identifiers and full license textTools and auditors can validate licenses
Module mismatchWrong MODULE_LICENSESync module tag with source licensePreserves symbol access and avoids taint

Looking ahead: the role of LGPL as permissive licenses gain ground

The trend toward permissive licensing raises practical questions about how weak copyleft fits modern distribution models.

Weak copyleft keeps library work open while letting separate program code stay under other terms. That balance helps teams ship commercial products and still give users access to source and modification rights.

v3 brought installation info and an explicit patent grant that protects contributors and downstream users. Document patent scope and confirm the grant suits your risk profile.

Make dynamic linking the default. When static linking occurs, publish relinkable objects, build steps, and clear installation notes so users can rebuild and verify changes.

FAQ

What is the core idea behind using the GNU Lesser General Public License for device drivers?

The license lets you link proprietary programs with covered libraries while preserving users’ rights to the library’s source. It creates a weak copyleft — you must provide source and allow reverse engineering to replace or update the library, but you can keep your main program code proprietary when you meet the conditions.

Why are engineers exploring this license for kernel and user-space driver work today?

Engineers choose it for practical balance — it protects library contributors and still enables commercial distribution. It helps teams ship drivers that rely on shared libraries, reduces legal friction for third-party integration, and eases reuse across platforms and architectures.

How does weak copyleft differ from strong copyleft and permissive licenses?

Weak copyleft applies to the library itself and requires source sharing for modifications to that library. Strong copyleft (like the GPL) can extend to combined works. Permissive licenses (MIT, BSD) impose few obligations beyond attribution. This license sits between those models — it protects the library while allowing linking flexibility.

What does it mean that the license evolved from “Library” to “Lesser”?

The name change reflects intent: originally focused on libraries, the later wording clarifies that the license is intentionally less strict than full copyleft. It signals a compromise — protect library code without forcing all linked code to adopt the same license.

Where do drivers typically interact with libraries and user space?

Drivers cross boundaries at user-kernel interfaces, device APIs, and shared libraries. User-space drivers or helper daemons commonly link to runtime libraries. Loadable kernel modules interact with kernel symbols and exported interfaces. Those interaction points determine what licensing obligations apply.

Why does dynamic linking create a “safe harbor” compared to static linking?

Dynamic linking keeps the library as a separate work at runtime. That separation supports the view that only the library is covered by the weak copyleft obligations, so you can ship proprietary code separately if you provide the library source and necessary build information. Static linking typically merges code, increasing the risk the combined work is treated as a derivative.

What are the compliance implications of static linking into a program?

Static linking often requires you to provide complete corresponding source for the combined binary or offer a method to relink with modified library versions. You may need to provide object files or build scripts so recipients can build a combined executable with new library versions.

How do languages and build systems that lack static linking equivalents affect obligations?

Some languages or package systems don’t support traditional static linking. In those cases, you must analyze how modules are combined at build and runtime. The focus is whether recipients can replace or modify the library and relink. If they can’t, you should provide build artifacts or clear instructions to preserve user freedom.

What practical differences exist between v2.1 and v3 of this license?

Version 3 adds clearer patent language, improved compatibility with other licenses, and explicit obligations around “installation information” for consumer devices. v3 tightens requirements on anti-circumvention and patent retaliation clauses, making compliance more robust in modern distribution scenarios.

What are “installation information” obligations for consumer devices under v3?

When distributing a device that uses the library and restricts user modification, you must provide the information needed to install and run modified versions — such as signing keys or firmware update procedures — so users can exercise the license rights on the shipped hardware.

How does the patent rights grant protect users and contributors?

The license includes a patent license to recipients, preventing contributors from asserting patent claims over the licensed work. That reduces the risk that downstream users or contributors will face patent litigation for using or modifying the library.

Can derivative works be relicensed under GPL or must they remain under the original license?

The license permits combining and offering the library under later versions or compatible terms in some cases. You can offer modifications under the same license or, where allowed, under GPL terms if you want the stronger copyleft. Always include the original copyright notice and license text when redistributing.

How do you determine what counts as a derivative work or a modification to the library?

A derivative modifies or extends the library’s source or its core functionality. Linking alone, when the library remains a distinct work, typically does not create a derivative. Changes to library source files, adding new functions into the library, or producing a combined binary by static linking are likely modifications requiring source disclosure.

What must I provide when the license requires corresponding source or access?

You must include the complete corresponding source for the covered library — the exact source used to build the distributed binaries — plus build and configuration scripts. You also need to include the full license text and original copyright notices with the distribution.

What are acceptable ways to provide the full license text and copyright notice?

Include the license file in the source release, embed headers in source files, and ship a copy with binaries or installers. For network distribution, provide a clear download link. For devices, include the information in packaging or an accessible on-device location.

What is included in “complete corresponding source and rebuild materials”?

This includes all source code for the library, build scripts, makefiles, and any scripts or instructions needed to recreate the binary environment. If you supply a binary kernel module, you should provide object files or a relinking mechanism so users can build a replacement module.

How does the Linux kernel’s GPL-2.0 stance affect driver licensing choices?

The kernel is licensed under GPL-2.0, which influences module interactions. The kernel community treats certain symbols and interfaces as enforcing GPL compatibility. Using non-GPL-compatible licenses in kernel modules can block access to some symbols and raise distribution risks.

What is the syscall boundary and how does the Linux-syscall-note exception matter?

The syscall boundary separates user space and kernel space. The linux-syscall-note clarifies that user-space programs using syscalls aren’t derivative works of the kernel. That helps when user-space drivers or tools interact with the kernel via standard interfaces without inheriting kernel license obligations.

When can kernel code use identifiers tied to the library license (like LGPL-2.1 or later)?

Kernel subsystems or drivers that include code under those license versions can use the corresponding identifiers if their code genuinely matches the licensed components and complies with their terms. Proper SPDX tags and module headers help the kernel and users understand the licensing status.

How should SPDX license identifiers be placed for driver and library code?

Add SPDX identifiers in source-file headers and build metadata. Use precise expressions (AND, OR, WITH) to reflect combined licensing. This makes automated compliance checks reliable and clarifies rights for downstream recipients.

What are common dual licensing scenarios relevant to driver stacks?

Dual licensing lets you offer the same code under a copyleft license and a commercial license. This can facilitate distribution in proprietary products while keeping an open-source option. Make sure contributors agree to dual licensing and that SPDX expressions accurately reflect the choices.

What does MODULE_LICENSE do in loadable kernel modules?

MODULE_LICENSE declares how the module is licensed. Valid strings like “GPL” or “Dual MIT/GPL” inform the kernel which symbols the module may access. Incorrect or missing tags can limit symbol access or raise legal ambiguity.

What distribution scenarios must vendors consider when using the license in proprietary products?

Vendors must provide source for the licensed library, include license texts, and supply any necessary rebuild or installation information. They can sell products commercially but cannot impose additional restrictions that negate the license’s terms.

Can commercial users incorporate the library without sublicensing it?

Yes. Commercial entities can use and distribute the library in products without sublicensing it, provided they comply with the obligations — sharing source for the library and providing required installation or rebuild information.

How can proprietary program code be combined with the licensed library?

Combine by dynamic linking or via clear interface boundaries so the library remains separable. Document the build and runtime layout and provide the library source. Avoid static linking unless you also supply relinking materials or object files that allow user modification.

Are there Windows-specific considerations, like with libusbK distributions?

Yes. Windows driver stacks introduce installer packaging, digital signing, and OS compatibility concerns. You must ensure the installer includes license text and source access instructions, and consider how driver signing affects users’ ability to install modified library components.

What does a practical compliance workflow look like for using this license in drivers?

Start with a license audit, identify library boundaries, prefer dynamic linking, document modifications, attach SPDX tags and MODULE_LICENSE where relevant, and prepare complete corresponding source and installation information. Maintain a checklist for releases and consumer device obligations.

Why is dynamic linking recommended as a default strategy?

Dynamic linking preserves separation between your proprietary code and the licensed library. It reduces the chance that your binary becomes a derivative, simplifies compliance, and often avoids the need to disclose your proprietary sources.

How should teams document modifications and make updates available?

Record changes in version control, include diffs or full source packages with releases, and publish download locations. For device distributions, make sure update channels or downloadable packages include the modified library source and rebuild instructions.

How do installation information requirements impact hardware vendors?

Vendors must supply the steps, keys, or tools required to install and run modified versions of the library on shipped hardware. Failing to provide this can violate the license for consumer devices and restrict user freedom.

How does this license compare to other weak copyleft options like MPL, EPL, and CDDL?

Those licenses vary in scope — some are file-based, some focus on network use, and patent terms differ. The license discussed here centers on linking behavior and provides a linking-oriented safe harbor, while others may require per-file disclosure or have different patent protections.

What are the typical patent grant differences across weak copyleft families?

Some licenses include explicit patent grants and retaliation clauses; others are silent or weaker on patents. Examine each license’s patent language to understand protections for contributors and users and choose a license that aligns with your risk model.

What guidance does the Free Software Foundation offer for projects and communities?

The FSF publishes FAQs, license texts, and best-practice recommendations. They explain how license terms apply to libraries, linking, and device distribution, and provide resources to help projects remain compliant and protect user freedoms.

What common risks and enforcement signals should teams watch for?

Watch for static linking without relinking options, missing SPDX tags or inconsistent headers, failure to provide source or installation information, and unclear module license declarations. These are common triggers for enforcement actions or community disputes.

How do static linking traps create rebuild requirements?

If you statically link the library into a product, recipients may be unable to replace the library without rebuild artifacts. To comply, you must provide object files or scripts so users can relink with modified versions — otherwise you risk violating the license.

Why are ambiguous licensing headers without SPDX tags problematic?

Ambiguous headers hinder automated tooling and increase legal uncertainty. SPDX tags provide machine-readable clarity about license identity and version, reducing risk and simplifying audits for downstream users.

How might the role of this license change as permissive licenses gain ground?

The license continues to have a niche where protecting libraries matters. As permissive licenses grow, this license will be chosen when maintainers want to enforce source availability for library changes while allowing broad commercial adoption.

Where can I find practical templates and checklists to implement compliant workflows?

Look to official license texts, FSF guidance, SPDX documentation, and community compliance checklists from established projects. Use those templates to create internal release checklists, module headers, and source-distribution processes.

Related: LGPL vs GPL: Key Linking Differences Explained

Related: Apache vs GPL: Pick the Right Open Source License