shadps4-emu License Information: GPL-2.0-or-later and REUSE Compliance Guide
The shadPS4 emulator is licensed under GPL-2.0-or-later for its core codebase, with comprehensive REUSE compliance ensuring every file contains SPDX metadata and all third-party components properly declare their MIT, BSD, OFL-1.1, or BSL-1.0 terms.
Understanding shadps4-emu license information is essential for developers, contributors, and redistributors working with this PlayStation 4 emulator. The project employs a dual-layer licensing strategy: the original emulator code falls under the GNU General Public License v2.0 or later, while bundled third-party libraries retain their original permissive licenses. All licensing data is machine-readable through SPDX headers and the REUSE.toml configuration file.
Core Licensing Model of shadps4-emu
The shadps4-emu license information follows a strict separation between original code and external dependencies, ensuring compliance while maximizing code reuse.
GPL-2.0-or-later for Core Emulator Code
All original source code in the src/ directory is licensed under GPL-2.0-or-later. This includes critical components such as src/video_core/renderer_vulkan/vk_swapchain.cpp, which contains the standard SPDX header:
// SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
The top-level LICENSE file contains the full text of GPL-2.0-or-later, establishing the legal foundation for the emulator's open-source distribution. Any modification or redistribution of the core emulator requires source code disclosure under the same license terms.
Third-Party License Compatibility
shadps4-emu integrates numerous external libraries and assets, each retaining their original licenses compatible with GPL-2.0-or-later:
| Component | License | Location |
|---|---|---|
| RenderDoc integration | MIT | externals/renderdoc/** |
| ImGui framework | MIT | externals/imgui/ |
| Boost libraries | BSL-1.0 | externals/boost/ |
| Noto Sans JP font | OFL-1.1 | src/imgui/renderer/fonts/NotoSansJP-Regular.ttf |
| Proggy Vector font | MIT | src/imgui/renderer/fonts/ |
| Documentation assets | CC0-1.0 / CC-BY-4.0 | Documentation directories |
The LICENSES/ directory at the repository root contains verbatim copies of all these licenses, satisfying the REUSE requirement to provide full license texts for every SPDX identifier used in the project.
How shadps4-emu Declares License Information
The project implements the REUSE Specification to ensure machine-readable licensing across all files.
The REUSE.toml Configuration File
The REUSE.toml file acts as the central licensing manifest, mapping file paths to their respective SPDX identifiers. It uses precedence rules for directories containing multiple files, such as externals/** and src/imgui/renderer/fonts/**, ensuring each third-party component retains its correct license annotation without requiring individual file headers.
This configuration allows automated tools to compute the complete license set for the entire repository by reading a single manifest file rather than parsing thousands of individual headers.
SPDX Headers in Source Files
Every file in the repository contains explicit SPDX metadata. C++ source files include header comments:
// SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
Documentation files such as README.md embed SPDX information in HTML comments:
<!-- SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project -->
<!-- SPDX-License-Identifier: GPL-2.0-or-later -->
This granular declaration ensures that individual files carry their licensing terms even when distributed outside the repository context, preventing accidental license separation.
The LICENSES Directory Structure
The LICENSES/ directory contains the complete legal texts for every license referenced in the project:
GPL-2.0-or-later.txtfor the core emulatorMIT.txtfor permissive third-party librariesOFL-1.1.txtfor fontsBSL-1.0.txtfor Boost componentsCC0-1.0.txtandCC-BY-4.0.txtfor documentation
This structure satisfies the REUSE requirement to provide verbatim license copies while enabling automated tools to validate that every SPDX identifier has a corresponding full text file.
Verifying shadps4-emu License Compliance
You can validate the licensing status of any shadps4-emu repository clone using the official REUSE command-line tools.
First, install the REUSE tool:
pip install reuse
Run the linter to verify that every file has a valid SPDX header and that all referenced licenses exist in the LICENSES/ directory:
reuse lint
A compliant repository produces no errors. To generate a comprehensive license report for auditing purposes:
reuse dump --format json > license-report.json
This command outputs a JSON file listing every SPDX identifier in the project, including GPL-2.0-or-later for core components and the various MIT, BSL-1.0, and OFL-1.1 identifiers for third-party assets.
Key Files for License Reference
When examining shadps4-emu license information, these specific paths define the legal framework:
| File Path | Purpose |
|---|---|
LICENSE |
Full text of GPL-2.0-or-later governing the emulator core. |
REUSE.toml |
Central manifest mapping file paths to SPDX license identifiers. |
LICENSES/ |
Directory containing verbatim copies of all third-party licenses. |
src/video_core/renderer_vulkan/vk_swapchain.cpp |
Representative core file with GPL-2.0-or-later SPDX header. |
src/imgui/renderer/fonts/NotoSansJP-Regular.ttf |
Example font file under OFL-1.1 license. |
externals/renderdoc/** |
Example third-party MIT-licensed component. |
Summary
- shadps4-emu uses GPL-2.0-or-later for its core emulator code, requiring source code disclosure for redistributions.
- REUSE compliance ensures every file contains SPDX metadata, with
REUSE.tomlproviding a centralized licensing map. - Third-party components retain their original licenses (MIT, BSL-1.0, OFL-1.1, CC0-1.0) and are documented in the
LICENSES/directory. - Automated verification is available through the
reuse lintandreuse dumpcommands to ensure ongoing compliance.
Frequently Asked Questions
What license is the shadPS4 emulator core released under?
The core emulator code is licensed under GPL-2.0-or-later (GNU General Public License version 2.0 or any later version). This is declared in the top-level LICENSE file and in SPDX headers within each source file, such as src/video_core/renderer_vulkan/vk_swapchain.cpp. Any redistribution of the emulator must include the corresponding source code under the same license terms.
Can I use shadps4-emu code in a commercial project?
Yes, the GPL-2.0-or-later license permits commercial use, but with important conditions. If you distribute the emulator or derivative works, you must provide the complete source code under GPL-2.0-or-later. Additionally, you must preserve the licenses of third-party components such as the MIT-licensed externals/renderdoc/ or OFL-1.1 fonts in src/imgui/renderer/fonts/.
How does shadps4-emu track licenses for third-party libraries?
The project uses the REUSE Specification to manage third-party licenses. The REUSE.toml file maps directories like externals/** and src/imgui/renderer/fonts/** to their respective SPDX identifiers (MIT, BSL-1.0, OFL-1.1). The LICENSES/ directory contains the full text of each license, allowing automated tools like reuse lint to verify that every file has proper licensing metadata.
What is the purpose of SPDX headers in shadps4-emu source files?
SPDX headers make license information machine-readable and persistent. Each file contains comments like SPDX-License-Identifier: GPL-2.0-or-later and SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project. This ensures that if a single file is extracted from the repository, it still carries its licensing terms. The headers also enable automated compliance checking through REUSE tools and support software composition analysis (SCA) systems.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →