Add MIT LICENSE and OpenStreetMap attribution #48

Closed
opened 2026-08-31 17:25:15 +02:00 by robert · 1 comment
robert commented 2026-08-31 17:25:15 +02:00 (Migrated from git.butzei.de)

Goal

The repository is public with no licence, which means all rights reserved - nobody may reuse anything, including you in a later project. Separately, OSM-derived data carries attribution obligations.

Acceptance criteria

  • LICENSE at the repo root: MIT, copyright 2026 Robert Butzhammer
  • Licence stated in README.md
  • OpenStreetMap attribution in the README: data (c) OpenStreetMap contributors, ODbL
  • OSM attribution visible in the companion app, in an About screen
  • Attribution present in exported GPX metadata where routing data was OSM-derived
  • Third-party licences acknowledged: PebbleKit, and BRouter if anything beyond the AIDL interface is vendored

Files

  • LICENSE
  • README.md
  • companion/.../about/

Notes

MIT chosen over GPL despite BRouter, OsmAnd and Gadgetbridge all being GPL: PedalPebble talks to BRouter only across an AIDL boundary and links none of its code, so no copyleft obligation propagates. See docs/DECISIONS.md D15.

## Goal The repository is public with no licence, which means all rights reserved - nobody may reuse anything, including you in a later project. Separately, OSM-derived data carries attribution obligations. ## Acceptance criteria - [ ] `LICENSE` at the repo root: MIT, copyright 2026 Robert Butzhammer - [ ] Licence stated in `README.md` - [ ] OpenStreetMap attribution in the README: data (c) OpenStreetMap contributors, ODbL - [ ] OSM attribution visible in the companion app, in an About screen - [ ] Attribution present in exported GPX metadata where routing data was OSM-derived - [ ] Third-party licences acknowledged: PebbleKit, and BRouter if anything beyond the AIDL interface is vendored ## Files - `LICENSE` - `README.md` - `companion/.../about/` ## Notes MIT chosen over GPL despite BRouter, OsmAnd and Gadgetbridge all being GPL: PedalPebble talks to BRouter only across an AIDL boundary and links none of its code, so no copyleft obligation propagates. See docs/DECISIONS.md D15.
Owner

Closed by PR #107 (merged). LICENSE/README were already correct from the original bootstrap, confirmed not touched. Actually built: a new About screen (companion/about, no new Gradle module -- matches the RideSetupActivity precedent, since nothing here is reusable elsewhere) showing app name/version, an MIT licence reference, OSM/ODbL attribution reproduced verbatim from README's D15 wording, and a third-party acknowledgement list backed by a real, JVM-tested ThirdPartyAcknowledgements type in :companion:core.

Third-party licences checked against the real build, not assumed: PebbleKit Android 2 (io.rebble.pebblekit2:client, Apache-2.0, D49) is genuinely declared in companion/pebble/build.gradle.kts and is acknowledged. Correctly NOT acknowledged: PebbleKit 4.0.1 (not declared anywhere yet, that's #4's job), the pebblekit2 client-ui alias (a version-catalog entry nothing implementation()s), and BRouter (no vendored code anywhere, only a planned AIDL boundary via #27).

GPX-export attribution metadata left honestly unchecked -- #47 (GPX export) doesn't exist in this codebase yet, so there's nothing to embed attribution into.

Verified for real: ./gradlew :companion:assembleDebug succeeds, :companion:core:test passes including the new test. Applied @OptIn(ExperimentalMaterial3Api::class) from the start this time, having learned from RouteLibraryScreen/SettingsScreen's real compile failures earlier tonight.

Closed by PR #107 (merged). LICENSE/README were already correct from the original bootstrap, confirmed not touched. Actually built: a new About screen (companion/about, no new Gradle module -- matches the RideSetupActivity precedent, since nothing here is reusable elsewhere) showing app name/version, an MIT licence reference, OSM/ODbL attribution reproduced verbatim from README's D15 wording, and a third-party acknowledgement list backed by a real, JVM-tested ThirdPartyAcknowledgements type in :companion:core. Third-party licences checked against the real build, not assumed: PebbleKit Android 2 (io.rebble.pebblekit2:client, Apache-2.0, D49) is genuinely declared in companion/pebble/build.gradle.kts and is acknowledged. Correctly NOT acknowledged: PebbleKit 4.0.1 (not declared anywhere yet, that's #4's job), the pebblekit2 client-ui alias (a version-catalog entry nothing implementation()s), and BRouter (no vendored code anywhere, only a planned AIDL boundary via #27). GPX-export attribution metadata left honestly unchecked -- #47 (GPX export) doesn't exist in this codebase yet, so there's nothing to embed attribution into. Verified for real: ./gradlew :companion:assembleDebug succeeds, :companion:core:test passes including the new test. Applied @OptIn(ExperimentalMaterial3Api::class) from the start this time, having learned from RouteLibraryScreen/SettingsScreen's real compile failures earlier tonight.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
robert/PedalPebble#48
No description provided.