Skip to content

License

Pablo Martínez López edited this page Nov 11, 2026 · 3 revisions

License

English · Español

Tapete's source code is free software under the GNU General Public License v3.0 or later (SPDX GPL-3.0-or-later). The full text is the LICENSE file at the root of the repository, the official GPL v3 from gnu.org without changes.

What it means

  • Anyone can use, study, share and modify the code.
  • Whoever distributes a modified version (an installer, an APK, a fork) must publish its source under the same licence. Using a modified copy privately obliges nothing.
  • «Or later» lets the code be used under any later GPL the FSF publishes. This is the form the GNU project recommends; switching to GPL-3.0-only would mean changing the identifier in every place listed below.

Where it is declared

The identifier is the same in every manifest, so packaging tools and dependency scanners read one answer:

File Field
LICENSE Full text
package.json license
src-tauri/Cargo.toml, src-tauri/crates/mesa/Cargo.toml, src-tauri/crates/proxy-core/Cargo.toml, src-tauri/plugins/android-extra/Cargo.toml license
src-tauri/tauri.conf.json bundle.license
README.md, README.es.md «License» / «Licencia» section, before the credits

bundle.license only fills the package metadata (for example the licence field of the .deb and .rpm). Inferred: it adds no licence-acceptance screen to any installer, since none is configured (licenseFile is not set).

What it does not cover

  • Magic: The Gathering: card names, rules text, card images, set symbols and the official frames belong to Wizards of the Coast. The app downloads them (Scryfall, Card Conjurer) and does not distribute them.
  • Third-party resources keep their own licences: the bundled fonts, Noto Color Emoji, the Iconify icon sets (game-icons:*, including the one the logo is based on, requires attribution), the Balatro pack's font, and the data sources. The Balatro pack's templates and sample cards are by u/Poke_Hybrids; no licence is stated for them and express permission to redistribute them within Tapete is pending confirmation (see Frame Packs). They are listed in the «Credits» section of the README.md.
  • Downloadable content (the «Original» frames, packs such as Balatro, free fonts, tweakcn themes) is fetched on demand with a pinned commit and a SHA-256 per file and is never part of the installers (see Frame Packs), so the app's licence does not relicense it.
  • The friends server and the frame-packs repository are separate projects with their own licences: the server is AGPL-3.0-or-later (the GPL for software used over a network: whoever runs a modified copy for others must offer them its source), and in the packs repository only the build scripts are GPL-3.0-or-later, while each pack keeps its authors' terms (its CREDITS.md).

Dependencies must be compatible

Every Rust crate and npm package that ends up in the app must have a licence compatible with GPL v3. The usual permissive ones are: MIT, Apache-2.0, BSD-2/3-Clause, ISC, Zlib, 0BSD, Unlicense, CC0-1.0, BSL-1.0, Unicode-3.0 and MPL-2.0. Apache-2.0 is compatible with GPL v3 but not with GPL v2, which is one more reason the project is v3.

Not acceptable for code that ships: GPL-2.0-only, SSPL, BUSL and similar source-available licences, proprietary licences, and CC licences with NC or ND clauses. A crate with a dual licence (MIT OR Apache-2.0) counts under whichever option is compatible.

Tools used only for building (Biome, TypeScript, caniuse-lite under CC-BY-4.0…) do not end up in the app, so they do not need to be compatible.

How to check

Neither cargo-deny nor cargo-license is required; the declared licences come from the tools already used:

# Rust: every package in Cargo.lock with its declared licence
cd src-tauri
cargo metadata --format-version 1 --locked \
  | python3 -c 'import json,sys,collections; c=collections.Counter(p.get("license") or "(none: see license_file)" for p in json.load(sys.stdin)["packages"]); [print(n, l) for l, n in c.most_common()]'

# npm: only what ships (--prod), grouped by licence
pnpm licenses list --prod

A package with no license field (only license_file) has to be read by hand. Inferred: it is worth repeating this after adding a dependency, together with cargo audit (see Testing and CI); there is no CI gate for licences.

See also

Documentation · Documentación

Language: English · Español

Use and build · Uso y desarrollo

Architecture · Arquitectura

Data · Datos

Getting cards · Conseguir cartas

Layout, images, PDF · Maquetación, imagen y PDF

Card designer · Diseñador de cartas

Game table · Mesa de juego

Mobile · Móvil

Frontend · Frontend

Reference · Referencia

Clone this wiki locally