Salta ai contenuti

0021. Apache-2.0, with a contributor licence agreement

Questa pagina è in inglese: in italiano ci sono per ora i tutorial e il glossario; menu, ricerca e navigazione sono in italiano.

  • Status: accepted (supersedes 0002)
  • Date: 2026-10-09

Decision 0002 chose AGPL-3.0-or-later or a commercial licence, because the framework then linked JUCE (AGPLv3 or commercial) and Tracktion Engine (GPLv3 or later, or commercial). That is no longer true: the cores are pure C++20, the default adapters use permissive libraries (decision 0015), and the JUCE and Tracktion adapters live in the shuffle_juce satellite, which an application uses only if it chooses those backends.

A copyleft licence on the framework itself now restricts every application for the sake of an optional backend. It keeps the framework out of closed-source products unless a commercial licence is negotiated, it makes static linking on iOS and Android a legal question, and it puts the framework in the same position as the music frameworks that already require the AGPL or a paid licence.

The maintainer is the sole copyright holder, every repository is still private, and no outside contribution exists, so the licence can be changed now without asking anyone.

  • shuffle_engine and every satellite are licensed under the Apache License, Version 2.0: the SPDX identifier Apache-2.0 in the header of every file, LICENSES/Apache-2.0.txt, and a NOTICE file in each repository.
  • Why Apache-2.0:
    • adoption: any application, open or closed, desktop or mobile, can use the framework without a separate agreement;
    • patent grant: contributors license their patents that the code needs, and a party that sues over them loses that licence, which protects the people who build on the framework;
    • a fully permissive stack: with the default adapters (miniaudio, libremidi, the codec libraries, the plugin host) an application depends on no copyleft code, a real alternative to frameworks that need the AGPL or a commercial licence.
  • Contributor Licence Agreement. Every contribution needs a signed agreement (CLA.md, forms for individuals and for organisations) that grants the maintainer a copyright and patent licence with the right to relicense. Its text (version 1.0, 2026-10-10) follows the structure of the Apache Software Foundation’s individual and corporate CLAs; outside contributions are accepted once the repositories are public.
  • Possible open core at 2.0. The core (everything that is Apache-2.0 today and its continuation) stays Apache-2.0. From version 2.0 the maintainer may add new premium parts, in separate modules or repositories, under commercial terms. Nothing released under Apache-2.0 is withdrawn or relicensed retroactively.
  • Releases already tagged keep their licence. A version tagged before this decision stays available under the licence it was published with; the change applies from the first commit that carries the new headers. (At the date of this decision no version had been released.)
  • Optional adapters on copyleft or proprietary libraries stay as decision 0015 says: off by default, never bundled, and the application that turns one on takes on that library’s terms (JUCE, Tracktion Engine, Ableton Link, a user-supplied LGPL FFmpeg).
  • Applications choose their own licence. One that uses shuffle_juce must still satisfy JUCE’s and Tracktion Engine’s licences.
  • Copyleft and non-free dependencies need the same care as before: a library that would impose its terms on every application is an optional adapter, never a default.
  • Every repository’s tools/check_repo.py expects the new SPDX identifier; reuse lint checks the whole tree.
  • Contributions need the signed agreement; the maintainer keeps the freedom to offer commercial additions later.