Skip to content

Add MIT licence and package metadata - #55

Open
EdwardChamberlain wants to merge 3 commits into
mainfrom
feat/issue-50-mit-license
Open

EdwardChamberlain wants to merge 3 commits into
mainfrom
feat/issue-50-mit-license

Conversation

@EdwardChamberlain

@EdwardChamberlain EdwardChamberlain commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Closes #50

Changes

  • Add the MIT licence and package metadata for Bambutton.
  • Include the full pyserial 3.5 BSD licence, FreeSimpleGUI's full metadata licence text, and the MicroPython/ESP-IDF firmware licence and copyright disclosures in shipped resources.
  • Collect only active runtime dependency licences, preserve their directory structure, and include long licence texts stored in package metadata.
  • Publish the matching esptool source distribution alongside each tagged desktop release.
  • Extend installed-package checks and add coverage for dependency metadata, licence fallbacks, firmware notices, source archive publication, and the full package resource set.

Validation

CI run 38359137701 passed the quality gate and Windows/macOS desktop smoke jobs. Local git diff --check and Python syntax checks also passed.

Copy link
Copy Markdown
Owner Author

Review of a87bd488350a4e9518fbf4f1a8aac3e110a0860d: changes required before merge. The project's MIT licence and PEP 639/project-URL metadata are correct, but the third-party distribution work is incomplete.

  1. [P2] Collect licence texts that are not standalone wheel files — scripts/build_gui.py:108–125 only selects paths named LICENSE/NOTICE/etc. I inspected the exact freesimplegui-5.2.0.post1 wheel: its full LGPL text is in the METADATA License field (8,953 characters), while the only matching physical file is NOTICE, which refers to a missing license.txt. The actual Windows CI command bundles only that NOTICE and does not copy the METADATA. The exact pyserial 3.5 wheel has no licence-named file either, so its BSD copyright/terms are also absent from the collector output. Add an explicit, verified fallback for these real runtime packages and check that their full texts/notices are present in the frozen application. A synthetic wheel with a LICENSE file does not cover these cases. References: FreeSimpleGUI NOTICE, pyserial 3.5 licence, Windows CI build.

  2. [P2] Ship the firmware's actual copyright/licence notices — firmware/THIRD_PARTY_NOTICES.md:3–10 contains upstream links and a general instruction to inspect dependencies, but no MicroPython copyright/permission text. The wheel and sdist contain the MicroPython firmware binary; their included LICENSE is Bambutton's own MIT notice naming Edward Chamberlain. They need the applicable MicroPython and firmware-component texts/notices shipped with the binary, rather than only links. At minimum include the exact MicroPython v1.28.0 notice, then retain the notices for the components in the ESP32-C3 build. The upstream MIT licence expressly requires its copyright and permission notice in redistributed copies: v1.28.0 licence.

  3. [P2] Make corresponding-source delivery explicit for bundled esptool — the release workflow distributes esptool as bytecode inside the frozen app and publishes Bambutton's own source archive, which only declares esptool as a dependency. There is no corresponding esptool source asset or accompanying source offer; the notice table only points to the upstream repository. Add a source-delivery route for the exact bundled version alongside the binary release (and document it), as required for executable distribution by esptool's GPLv2 section 3. This does not require changing the MIT licence on Bambutton's own source.

Non-blocking collector tidy-up: evaluate dependency environment/extras markers and preserve relative notice paths. The actual CI command walks development-only extras into pip/pytest/coverage, copies Python modules from directories named licenses, and maps many distinct vendored pip LICENSE files onto the same destination basename. This adds unrelated material and can overwrite notices.

Verification: all 12 focused licence/resource/entrypoint tests passed locally with a FreeSimpleGUI import shim; current CI is green, including real wheel/sdist and desktop builds. I additionally inspected the exact FreeSimpleGUI/pyserial wheels and the actual Windows build command. The passing checks currently verify Bambutton's own licence metadata, not these missing dependency/firmware materials.

Copy link
Copy Markdown
Owner Author

Implemented the review fixes in the new head 32f1493151653918d01f9cc75798ccf3452761bb.

  • The desktop build now includes FreeSimpleGUI's full licence text from its distribution metadata and the pinned pyserial 3.5 BSD licence text.
  • Dependency traversal evaluates environment markers, filters module files, and preserves nested paths to avoid notice collisions.
  • Wheel, source archive, and desktop builds include the MicroPython v1.28.0 licence and ESP-IDF v5.5.1 licence/copyright disclosure files beside the firmware.
  • The tagged release workflow downloads and publishes the source distribution matching the pinned esptool version.

Packaging and regression checks were updated. Local diff and syntax checks passed; CI is pending on this head. The previous test results were from the prior revision.

EdwardChamberlain commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner Author

The package fixture failure from CI run 38358762138 is fixed in head 156acc85e196944f0f47e357d55a816812725412. CI run 38359137701 passed the quality gate and both Windows/macOS desktop smoke jobs. The desktop release workflow will attach the matching pinned esptool source archive to each tag-based release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Add the project licence and package licence/support metadata

1 participant