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>
34 lines
3.5 KiB
Markdown
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.
|