halkyon/LICENSE.md
Tizian 「ティツィアーン」 b4290f71c8
refactor!: packages, paths and app IDs under Halkyon Days' names (ADR 0045, step 3)
Learn's folder is apps/halkyon, Todo's apps/myrmex; every package of
ours takes the prefix halkyone_ (halkyone_halkyon_*, halkyone_myrmex_*,
halkyone_train_*, halkyone_meditate_*, halkyone_app, halkyone_base_* and
the other shared ones; halkyon_oidc_* keeps its name, D11). Halkyon and
Myrmex take the app IDs one.halky.halkyon and one.halky.myrmex (D10);
Train and Meditate keep theirs, while every app's Android namespace,
Kotlin package and method channels move to one.halky. The snaps are
halkyon and myrmex (D17), each built in a clone with its recipe in
place of snap/, as Train's and Todo's were.

Serverpod finds a database's migrations by its module's name, which
changed with the packages':
- each server's new, empty migration ("rename") records itself under
  the new names and deletes the rows under the old ones;
- deploy/redeploy.sh copies each database's record to the new name
  before the migrations (carry_module), so the renamed servers find
  their databases migrated; a copy, never a move, so a deploy failing
  before the migration commits leaves the old rows in place;
- Train and Meditate keep their devices' databases: halkyone_app's
  carryMigrationRecord copies their record before the sync engine
  opens them (openPersonDatabase);
- the client migrations' generated moduleName getters, one line each,
  say the new names: Serverpod's client asserts in debug builds that
  every migration names the module, and create-migration never writes
  a migration's files again.

Train's WorkManager work is enqueued under new names, the former ones
cancelled: the work kept names the workers' former classes.

The release tool: an app's tags of its earlier names count as its
history (legacyTagPrefixes), the shared packages' former paths count
for its version, and every snap is built in a clone (atRoot gone).

The databases, Docker images and Compose project keep their names
until step 5.

BREAKING CHANGE: Halkyon (Learn) and Myrmex (Todo) are new apps to
Android and the Snap Store: installs of app.halkyon.learn and
app.halkyon.todo don't update to them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-12 23:57:02 +01:00

34 lines
3.5 KiB
Markdown

# Licences
The repository's packages carry different licences, each package's full text in its
`LICENSE` file:
| Package | Licence | SPDX |
|---|---|---|
| `apps/halkyon/halkyone_halkyon_flutter`, Learn's app | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `apps/halkyon/halkyone_halkyon_client`, generated from Learn's models | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `apps/halkyon/halkyone_halkyon_server` | Server Side Public License, version 1 | `SSPL-1.0` |
| `apps/halkyon/halkyone_halkyon_curator`, turning dictionary downloads into dictionary files | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `packages/halkyone_base_server`, the Serverpod module every Halkyon server includes | Server Side Public License, version 1 | `SSPL-1.0` |
| `packages/halkyone_base_client`, generated from the module's models, with SRP's client half | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `packages/halkyone_app`, `packages/halkyone_editor`, `packages/halkyone_ui` | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `packages/halkyone_keys`, an account's keys on the device | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `packages/halkyone_core`, `packages/halkyone_interop`; BIP-39's English word list in halkyone_core under the MIT License (`BIP39-LICENSE`) | GNU Affero General Public License, version 3 or any later version, as halkyon_shared, where they began, licensed them | `AGPL-3.0-or-later` |
| `apps/myrmex/halkyone_myrmex_flutter`, Todo's app | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `apps/myrmex/halkyone_myrmex_client`, generated from Todo's models | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `apps/myrmex/halkyone_myrmex_server` | Server Side Public License, version 1 (decided 2026-10-19, as Learn's) | `SSPL-1.0` |
| `apps/train/halkyone_train_flutter`, Train's app, with an added permission for linking Polar's BLE SDK (`LICENSE-polar-exception.md`) | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later WITH LicenseRef-Polar-BLE-SDK-exception` |
| `apps/train/halkyone_train_client`, generated from Train's models | GNU Affero General Public License, version 3 or any later version | `AGPL-3.0-or-later` |
| `apps/train/halkyone_train_server` | Server Side Public License, version 1 (as Learn's and Todo's) | `SSPL-1.0` |
The servers and the module build on Serverpod's core, which is under the SSPL, and so are
under it too. The apps and the shared Flutter packages link only permissively licensed
packages (the apps' icons are Lucide's, under the ISC licence, whose notice each app registers), and the client packages are generated from our own model definitions, so all of
them are under the AGPL. One exception: Train's Android build links Polar's BLE SDK for
the Polar Loop, under Polar's own, non-free licence (Train's ADR 0030, D36), which the
app's added permission allows; its notices are in the app's licence list, and an F-Droid
listing of Train is to declare `NonFreeDep`. The curator depends on neither a server nor Serverpod: Learn's
server reads the files it writes, never its code.
Everything else in this repository (tooling, documentation, deployment files) is under
`AGPL-3.0-or-later` unless a file says otherwise.