14 KiB
Dependencies and licensing
Framework-owned code uses GPL-3.0-or-later with the attribution-preservation
term in LICENSE-ATTRIBUTION. Third-party code retains its original license.
No proprietary Sony modules are redistributed.
| Dependency | Purpose and license |
|---|---|
| Embedded React | C engine, QuickJS bridge, reconciler, software compositor. Apache-2.0; revision cf5dfe4fae966fe21a265acc3dd3b054d245f981. |
| ps5-homebrew-ui | EGL, controller, system, InputTracker, audio mixer and output, heap, CRT, shims, native tools. GPL-3.0-or-later; revision 4bd942579dd981b3df9c740438489ca6a614ddc0. |
| ProsperoStore elevation client | Optional cooperative filesystem-access client and pinned helper build. GPL-3.0-or-later; revision 22dca63607cf5f1f95006eda6ffb802607bed699. |
| PacBrew archive ports | Same hash-pinned v0.40.2 distribution: libarchive 3.7.4 (BSD), liblzma 5.4.6 (primarily public domain), bzip2 (bzip2 license), plus zlib/zstd/OpenSSL. Exact notice sources and hashes are in licenses/archives-SOURCES.json. |
| PacBrew networking ports | Optional SHA-256-pinned v0.40.2 archive: curl 8.18.0 (curl license), OpenSSL 3.5.2 (Apache-2.0), zlib, zstd and libpsl; individual notices and source links follow the pinned ProsperoStore third_party/PACBREW_LICENSES.json. Native-title compat.c and netdb.c reuse that pinned reference under GPL-3.0-or-later. |
| Lapy helper | Optional exact-title one-shot helper: mpereiraesaa/PS5-Lapy-JB-Daemon 54a095c0f19161825e845daa760a03b446e654fa, MIT; protocol LGPL-2.1-or-later, ps5log GPL-3.0-or-later. The helper uses the app SDK v0.42 with patches/lapy-sdk-042-attributes.patch; source revision and ps5log hash are pinned in the lock file. |
| ps5-opengl | SDK 1.0.0; GPL and per-component/Mesa licenses. The release includes sources and notices. |
| React / QuickJS-ng | React 18.3.1, reconciler 0.29.2, QuickJS-ng 0.15.0; MIT. npm lockfile and QuickJS commit are pinned. |
| Tailwind CSS palette and scales | v3.4.17 default colors and theme values copied into tools/tailwind/; MIT. Build-time data only; the tailwindcss package is not installed or used. |
| stb_image | v2.30 single-file JPEG/PNG decoder for remote images; public domain or MIT (choice). Fetched from a pinned commit URL and verified by SHA-256 (stbImage in the lock file); builds copy its license to notices/stb_image-LICENSE. |
| HarfBuzz | 14.6.0 (Old MIT license), SHA-256-pinned release archive (harfbuzz in the lock file). Linked into both hosts for runtime text: OpenType shaping and outline rasterization (HB_TINY, hb-raster); also built as the host-side font subsetter tools/font_subset.cpp. Builds copy COPYING to notices/harfbuzz-COPYING. |
| SheenBidi | 3.0.0 (Apache-2.0), SHA-256-pinned release archive (sheenBidi): the Unicode bidirectional algorithm for right-to-left text, compiled as one translation unit into both hosts. Builds copy its license to notices/SheenBidi-LICENSE. |
| Noto fonts | Noto Sans SC and JP 2.004, Devanagari 2.007, Bengali 3.011 and Arabic 2.013 (SIL OFL 1.1), pinned by commit and SHA-256 (notoFonts). Packaged only for the scripts an app lists in textFonts, subset by tools/text_fonts.py; builds then copy licenses/Noto-fonts-LICENSE.txt to notices/. |
| Material Design sound resources | The starter's interface sounds, (c) Google, CC BY 4.0: six files from the pack's wav set, mixed to mono, trimmed, faded and normalized by tools/ui_sounds.mjs. Attribution and changes: licenses/material-sounds-NOTICE.txt; builds copy it to notices/material-sounds-NOTICE.txt. Keep it with any app that ships these sounds. |
| UnRAR | RarLab unrarsrc 7.2.1, SHA-256-pinned (unrarSource), patched by patches/unrar-worker.patch. UnRAR license (free to use for extracting RAR archives; not GPL-compatible). Linked only into rar-extract (native/rar_worker, MIT), a separate program the engine starts for RAR sets (the payload loader on the console, a child process on the desktop); never linked into the engine. Builds copy its license to notices/unRAR-license.txt. |
| FFmpeg | 7.1.5, SHA-256-pinned release archive (ffmpeg in the lock file), built static by tools/ffmpeg.py with the same components for both hosts: libavformat, libavcodec, libavutil, libswresample and libswscale, configured --enable-version3 without GPL parts, so LGPL-3.0-or-later. Linked only into apps with "video": true; the PS5 build uses the pinned OpenSSL for https. Builds copy LICENSE.md and COPYING.LGPLv3 to notices/. The build's corresponding source is the pinned archive plus that configure line. |
| ArtCNN C4F16 | The mpv user shader GLSL/ArtCNN_C4F16.glsl of ArtCNN at commit 8789539dfae120f2877a89bb6218026d56809612, unchanged, embedded by native/shared/upscalers/ArtCNN_C4F16.glsl.inc for <Video upscale>. MIT; builds copy licenses/ArtCNN-LICENSE to notices/. |
| Anime4K Upscale CNN x2 | The mpv user shaders glsl/Upscale/Anime4K_Upscale_CNN_x2_{S,M,L,VL,UL}.glsl of Anime4K at commit 7684e9586f8dcc738af08a1cdceb024cc184f426, unchanged, embedded by native/shared/upscalers/ for <Video upscale>. MIT; builds copy licenses/Anime4K-LICENSE to notices/. |
| PS5 video decoder interface | native/ps5/video_decoder.cpp is new GPL-3.0-or-later code against the libSceVideodec2 interface as ProsperoLight and EVO Player (both GPL-3.0) established it; no Sony code or headers. The import stub is generated from function names at build time. Builds copy licenses/video-decoder-NOTICE.txt to notices/. |
| HDMI audio passthrough | native/shared/iec61937.hpp is ported from SlopFin's src/iec61937.hpp at commit 6e22b23e7ececf1af24cb2850536411f91ebb9d6 (Copyright (C) 2026 Brett, GPL-3.0-or-later), an independent implementation of the IEC 61937 layout FFmpeg's spdif muxer writes; native/ps5/bitstream_output.cpp is new GPL-3.0-or-later code following SlopFin's findings on the sceAudioOutEx output calls and modes. No Sony code or headers. Video apps' builds copy licenses/audio-passthrough-NOTICE.txt to notices/. |
| Inter / LLVM / payload SDK | Inter: SIL OFL. LLVM: Apache-2.0 with exceptions. The public SDK contains separately licensed components. |
Sources: Embedded React, ps5-homebrew-ui, ps5-opengl 1.0.0, PS5 Payload SDK, QuickJS-ng, stb, HarfBuzz, SheenBidi, Noto CJK, Noto fonts, Material Design sound resources (mirrored at archive.org), Tailwind CSS v3.4.17, FFmpeg 7.1.5, ProsperoLight, EVO Player, SlopFin.
Exact revisions, archive hashes, and compiler-rt package identity are recorded
in dependencies.lock.json; each local build also creates a receipt.
patches/ holds modifications applied to pinned dependencies after checkout;
each patch states what it changes, and the build rejects any other local change.
embeddedReact-flex-wrap-auto-height.patch modifies Apache-2.0 engine files and
has been proposed upstream; drop it once the pinned revision contains the fix.
embeddedReact-scroll-offset.patch and embeddedReact-scroll-to.patch
(Apache-2.0 engine and bridge files) expose ScrollView offsets to JavaScript as
NativeUI.scrollTo for focus scrolling, and warn when the node pool is full.
embeddedReact-view-gradient.patch (Apache-2.0 engine and bridge files) adds
the backgroundGradient View style with dithered, damage-clipped rasterization.
embeddedReact-scroll-copy.patch (Apache-2.0 engine, software backend and test
files; not yet proposed upstream) scrolls a ScrollView by moving its painted
pixels through a new backend move_rect and repainting the exposed strip.
embeddedReact-damage-split.patch (not yet proposed upstream) keeps a scroll
strip and a card apart in the damage set, and
embeddedReact-scroll-copy-paint-free.patch (proposed with the scroll copy)
stops a container that paints nothing from forcing a scrolled viewport to
repaint; both modify Apache-2.0 engine and test files.
embeddedReact-software-avx2.patch (Apache-2.0 software backend; not yet
proposed upstream) blends eight pixels per step on AVX2 targets, bit-identical
to the scalar loops.
embeddedReact-image-unload.patch (Apache-2.0 engine files; not yet proposed
upstream) adds er_image_unload and er_image_load_argb with a caller-known
opacity, so an image cache can give registry slots back.
embeddedReact-aspect-main-size.patch (Apache-2.0 layout engine; not yet
proposed upstream) derives a flow child's main size from a definite cross size
and aspectRatio, as CSS and React Native do.
embeddedReact-translate-subtree.patch (Apache-2.0 engine and test files; not
yet proposed upstream) moves a node translated without scale or rotation
together with its descendants, which kept painting at their layout boxes.
embeddedReact-occluded-translate.patch (Apache-2.0 engine and test files; not
yet proposed upstream) keeps a translated node's paint record translated while
an opaque node above covers it, so its next move erases what it painted.
embeddedReact-text-wrap-height.patch (Apache-2.0 layout, text renderer and
test files; not yet proposed upstream) makes an auto-height Text as tall as the
lines it wraps into, capped by numberOfLines, including in flexed rows.
embeddedReact-image-radius.patch (Apache-2.0 engine and test files; not yet
proposed upstream) clips an Image to its borderRadius.
embeddedReact-bold-wrap.patch (Apache-2.0 text, layout and test files; not
yet proposed upstream) breaks bold text at the width it is drawn with.
embeddedReact-paint-free-move.patch (Apache-2.0 engine and test files; not
yet proposed upstream) stops a container that paints nothing from damaging its
whole box when it only moves or resizes.
embeddedReact-border-sweep.patch (Apache-2.0 engine, bridge and test files;
not yet proposed upstream) adds the borderSweep* View styles, a light
travelling around a rounded border, with a native-driver phase.
embeddedReact-border-gradient.patch (Apache-2.0 engine, bridge and test
files; not yet proposed upstream) adds borderGradient, a conic gradient seen
through the border ring, with a native-driver borderGradientAngle.
embeddedReact-border-radial.patch (Apache-2.0 engine and bridge files; not
yet proposed upstream) adds borderGradient type: 'radial', a moving radial
gradient seen through the border ring (the web's shine border).
platform-heap-size.patch (GPL-3.0-or-later src/runtime/app_heap.c) sizes the
process heap from the title's free flexible memory (1 GiB down to 128 MiB, the
first that leaves 96 MiB outside it and maps) instead of a fixed 128 MiB, and
adds hui_heap_capacity() to report the size obtained.
embeddedReact-european-glyphs.patch (Apache-2.0 font baker and test; not yet
proposed upstream) adds the latin-ext, cyrillic and european glyph sets.
embeddedReact-text-shaper.patch (Apache-2.0 text renderer and compositor; not
yet proposed upstream) lets a host shaper lay out and draw the text the baked
fonts cannot, and keeps node text from ending in half a UTF-8 sequence.
embeddedReact-text-direction.patch (Apache-2.0 engine, layout, bridge and
type files; not yet proposed upstream) adds the inherited direction style with
right-to-left flex layout, Text writingDirection, and start/end text
alignment.
embeddedReact-text-clip.patch (Apache-2.0 engine and bridge files; not yet
proposed upstream) adds er_utf8_clip() and clips Text, TextInput and span
strings at a character boundary rather than a byte count.
embeddedReact-host-props-cost.patch (Apache-2.0 bridge files; not yet
proposed upstream) makes a host element copy only the props it was given and
skips re-flattening a style that is already a plain object.
Patches apply in the order the lock lists them, and may add files.
tools/bundle.mjs adapts upstream Apache-2.0 tooling and preserves its notice.
This file is not covered by the framework's additional attribution term.
tools/tailwind/colors.mjs reproduces the Tailwind CSS palette unchanged under
its MIT notice in licenses/tailwindcss-LICENSE.
The Inter font and bundled third-party license texts retain their own terms.
LICENSE, LICENSE-ATTRIBUTION, NOTICE, licenses/, and generated
dist/<TITLE_ID>/notices/ preserve credits and licensing information.
Initial public release
Version 0.1.0 is a source release. It does not distribute prebuilt PS5 executables or SDK libraries. The source archive and pinned build instructions are available from the repository and GitHub release.
Before redistributing compiled applications, assemble the complete corresponding source and required notices for all linked GPL components, plus notices for LLVM and other statically linked libraries. The application's generated notices are useful build output, not a substitute for this source-distribution step.
The Lapy SDK compatibility patch should be proposed upstream once hardware qualification confirms this integration. It preserves all 32 attribute bytes required by the current SDK. No upstream contribution has been submitted.
Optional networking ports
tools/network_ports.py selectively extracts the pinned networking archive
without replacing the payload SDK. Network-enabled builds copy verified
component license texts and source metadata to notices/networking/, plus the
compatibility reference license. Build receipts record the archive and selected
static library hashes. Preserve these notices and provide corresponding source
for linked GPL components when distributing binaries; an archive of libraries
and license texts alone does not satisfy source-distribution requirements.