rpynx v0.1.0pre-release

Building from source

Licences

The project's source is MIT. The runtime binary is GPL-2.0-or-later because of the FFmpeg it links.

Source README.md, LICENSE, runtime/renpy/README.md
On this page

The source

rpynx’s own source code is under the MIT License.

Third-party code in the repository: cJSON 1.7.18 (MIT). LVGL 9.6.0 (MIT) is not stored in the repository; third_party/lvgl/fetch.sh downloads it, checksummed.

The built programs

The .nro files also contain third-party code under its own licences, which MIT does not replace.

ProgramContains
renpy-loader.nrolibnx (ISC), cJSON (MIT), LVGL (MIT) with stb_truetype (MIT or public domain), TJpgDec (ChaN’s free licence) and the Montserrat font (SIL OFL 1.1). The text font and button icons are the console’s own, read at run time; nothing of them is in the .nro
renpy-runtime.nroCPython (PSF), Ren’Py (MIT, with LGPL-derived parts), the Ren’Py SDK’s fonts (Source Han Sans Lite and Vazirmatn, SIL OFL 1.1), SDL2 (zlib), Mesa (MIT), libnx (ISC), devkitPro’s switch-ffmpeg, and others

important

devkitPro’s switch-ffmpeg is built with --enable-gpl and linked statically. So renpy-runtime.nro as a whole is covered by the GPL, version 2 or later.

  • Anyone who distributes it must provide the complete corresponding source, or a written offer for it.
  • Personal use is not affected.
  • To make it LGPL instead, build FFmpeg without --enable-gpl. LGPL relinking materials would still be needed, because it is linked statically. These are not produced yet.

Python packages in the runtime

Ren’Py imports these at start-up or for updates; the runtime ships the compiled files from the official SDK. Re-check each licence before distributing.

PackageLicence
ecdsa, six, urllib3MIT
rsa, requestsApache-2.0
pyasn1BSD-2-Clause
idna, PySocksBSD-3-Clause
chardetLGPL-2.1-or-later
certifiMPL-2.0

The importer app

The packaged importer does not bundle 7-Zip or FFmpeg. They have their own licences (7-Zip: LGPL plus the unRAR terms; FFmpeg: LGPL or GPL depending on the build), and installing them separately keeps those terms off the app.

Why not other ports’ code

The existing Switch ports of Ren’Py were read, not reused: SnepOMatic/RenPy-Switch and jvrcruzGAMES/RenpySwitch have no licence file, so their code cannot be used. The general technique (static CPython, Cython modules linked into one program, an inittab with dotted names, gl2 on Mesa GLES) is public knowledge and was re-implemented independently. MTP transfer is not planned partly for the same reason: an MTP responder such as haze is GPL, which would make the MIT loader GPL.

↑↓ move↵ openesc close