Skip to content

Clarify Aspire's MIT software license on the website and in docs - #2076

Merged
David Pine (IEvangelist) merged 1 commit into
mainfrom
ievangelist-clarify-aspire-mit-licensing
Nov 6, 2026
Merged

David Pine (IEvangelist) merged 1 commit into
mainfrom
ievangelist-clarify-aspire-mit-licensing

Conversation

@IEvangelist

Copy link
Copy Markdown
Member

Summary

Fixes #2075.

  • Add an "Aspire software: MIT License" link to the shared Legal footer, pointing to the core Aspire repository's authoritative license text.
  • State that Aspire is open-source software licensed under MIT in "What is Aspire?".
  • Preserve the existing website Terms of Use, privacy, cookie management, trademarks, and support links. Add the English UI string using the existing localization workflow; existing locales use the English fallback until translated.
  • Cover the rendered footer and homepage/docs license discoverability, focusability, and horizontal fit across desktop, tablet, and mobile viewports.

Third-party links and affiliations

None. The added links point to Microsoft's upstream Aspire license: https://github.com/microsoft/aspire/blob/main/LICENSE.TXT.

Validation

Commands run from src/frontend:

  • node node_modules\vitest\vitest.mjs run --config vitest.config.ts tests\unit\custom-components.vitest.test.ts — passed, 104 tests. The new licensing regression was also confirmed to fail before the implementation.
  • npx --yes --package bun bun x playwright test licensing.spec.ts --workers=1 --reporter=list — passed, 6 tests across desktop, tablet, and mobile Chromium projects.
  • node node_modules\eslint\bin\eslint.js tests\e2e\licensing.spec.ts tests\unit\custom-components.vitest.test.ts --max-warnings 0 — passed. Astro files are not included in the repository's ESLint configuration; component rendering is covered above.
  • node node_modules\prettier\bin\prettier.cjs src\components\FooterLegal.astro tests\e2e\licensing.spec.ts --check --plugin prettier-plugin-astro — passed.
  • git diff --check — passed.

Also checked the French homepage's English license-label fallback and trial-click/focus usability at 320px with playwright-cli, including dark-theme focus. Verified the upstream license text through GitHub. No production build was run locally, per repository policy; CI remains responsible for the production build.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings November 6, 2026 07:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues remain for the change clarifying Aspire’s MIT licensing.

No open issues 🎉

What changed in this PR

Clarifies Aspire’s MIT software license separately from the website’s Terms of Use, addressing the licensing confusion described in #2075.

Changes:

  • Adds an authoritative MIT license link to the shared Legal footer while preserving existing legal links.
  • States Aspire’s MIT licensing in “What is Aspire?” and adds the English footer label.
  • Adds unit and browser regression coverage for license discoverability, focusability, and horizontal fit.
File Description
src/​frontend/​tests/​unit/​custom-components.vitest.test.ts Checks the MIT license link and preservation of existing legal links.
src/​frontend/​tests/​e2e/​licensing.spec.ts Checks license links, focusability, and viewport fit on homepage and docs.
src/​frontend/​src/​content/​i18n/​en.json Adds the English software-license label.
src/​frontend/​src/​content/​docs/​get-started/​what-is-aspire.mdx Explicitly identifies Aspire as MIT-licensed open-source software.
src/​frontend/​src/​components/​FooterLegal.astro Adds the upstream MIT license link to the Legal footer.

Review effort: Balanced

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Frontend HTML artifact ready

The latest frontend build uploaded the frontend-dist artifact for PR #2076. Use the VS Code button below to open this PR with GitHub Artifacts Explorer and browse the built HTML locally.

VS Code: Open PR #2076 artifacts

This comment updates automatically when a new frontend build artifact is uploaded.

@IEvangelist David Pine (IEvangelist) left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Combined documentation accuracy and user-experience review

Inspected head: f621040fc588129f43926644d7c86f9972becc01; target main at c50fa85fc90fd974d2f7b86e43caa673a54bbf8c. Verdict: COMMENT. Both phases completed for the bounded licensing change. All seven source claims verified, but a local, unattributed cookie-preference interaction warning prevents approval independently of the self-approval restriction. No regression is attributed to this PR; no mandatory PR change is requested.

Phase A: 7 extracted claims; 7 verified, 0 nuanced, 0 unverifiable, 0 contradicted, 0 narrative. All five changed-file diffs were read. Independent Phase B: 16 passed check groups, 0 critical issues, 1 warnings. Routes exercised: /, /get-started/what-is-aspire/, /fr/.

Owning-source pins: microsoft/aspire main at cfda6e1cddc0f34383ef879f3bfcc34e8a4d8132, matching this PR's target branch; authoritative LICENSE.TXT blob a616ed188dfce68ee308f674350ad242d8588c2b. The site's own footer/translation wiring was read at the exact inspected microsoft/aspire.dev PR head and compared with pinned target main. No unmatched branch or unrelated product-source fallback was used. Trusted reviewer/tester/browser policies: default-branch SHA c50fa85fc90fd974d2f7b86e43caa673a54bbf8c. Native exact-URL skill invocation was unavailable; the pinned trusted repository-file workflow was followed.

Identity restriction: This PR is authored by David Pine (@IEvangelist), which is also the automation's authenticated identity. GitHub prohibits self-approval. A clean complete result can therefore be recorded only as COMMENT, never as APPROVE; no account was switched.

Phase A — Claim verification

All seven verified claims with pinned evidence - **L1 — verified**, `src/frontend/src/content/docs/get-started/what-is-aspire.mdx:16`: The Aspire software is open source.

Claim: It is open-source software

Evidence: At matching main cfda6e1cddc0f34383ef879f3bfcc34e8a4d8132, LICENSE.TXT:1 identifies the MIT License and :7-12 grants permission to use, copy, modify, merge, publish, distribute, sublicense and sell copies. Public repository source was retrieved at the same pin. No statement about all third-party dependencies or website content licenses is added.

  • L2 — verified, src/frontend/src/content/docs/get-started/what-is-aspire.mdx:16: Aspire software uses the MIT License.

    Claim: licensed under the MIT License

    Evidence: The pinned authoritative LICENSE.TXT begins 'The MIT License (MIT)' and contains the corresponding permission, notice and warranty terms. GitHub license metadata independently reports SPDX MIT and blob a616ed188dfce68ee308f674350ad242d8588c2b.

  • L3 — verified, src/frontend/src/content/docs/get-started/what-is-aspire.mdx:16: The new introductory documentation link targets the core Aspire software license.

    Claim: https://github.com/microsoft/aspire/blob/main/LICENSE.TXT

    Evidence: The exact linked main branch resolves to cfda6e1cddc0f34383ef879f3bfcc34e8a4d8132 during this review; LICENSE.TXT exists at that pin and is MIT. Source was queried at the pinned SHA rather than inferred from the PR's assertion.

  • L4 — verified, src/frontend/src/components/FooterLegal.astro:14: The shared Legal footer links to the same authoritative Aspire software license.

    Claim: href="https://github.com/microsoft/aspire/blob/main/LICENSE.TXT"

    Evidence: Pinned upstream license matches the href; exact PR-head FooterLegal.astro:14-18 emits it with target=_blank and rel=noopener noreferrer. Shared starlight/Footer.astro:44-45 includes FooterLegal for homepage and documentation layouts.

  • L5 — verified, src/frontend/src/content/i18n/en.json:442: The added English UI label identifies the software license and is wired to the footer.

    Claim: "aspireLicense": "Aspire software: MIT License"

    Evidence: At exact head f621040, the added footer.aspireLicense key has the stated value, and FooterLegal.astro:18 calls t('footer.aspireLicense'). It labels software, not the website terms.

  • L6 — verified, src/frontend/src/components/FooterLegal.astro:18: The new key uses the existing English fallback path for locales without a translation.

    Claim: {t('footer.aspireLicense')}

    Evidence: Exact-head config sets defaultLocale='root', with root.lang='en'. Only en.json defines aspireLicense. Existing installed @astrojs/starlight/utils/translations.ts:54-58 passes loaded dictionaries/config into createTranslationSystem; createTranslationSystem.ts:20-21,44-48 sets fallbackLng to the configured default language. This is supplementary dependency mechanism evidence; actual independent rendered fallback is assessed by Phase B, not inferred as a browser pass.

  • L7 — verified, src/frontend/src/components/FooterLegal.astro:12: The software-license link is additive, without replacing existing website legal/privacy/cookie/support controls.

    Claim: New first

  • for the software-license link

    Evidence: The exact diff adds only the new first list item. Existing Your Privacy Choices, Privacy & Cookies, Manage Cookies, Terms of Use, Trademarks and Support nodes/hrefs/handlers remain unchanged. Actual discoverability and interaction are independently tested in Phase B.

Audit links: authoritative pinned MIT license, exact footer addition, introductory license sentence, English label, configured default locale, and English root language.

No contradicted or unverifiable source claim was found, so no claim-based inline finding is required. The unchanged product examples and assertions in the new/modified tests were not credited as executed validation. The new statement concerns Aspire software's own upstream license, not a blanket claim about website terms or every third-party dependency.

Execution scope and provenance

The exact PR head was served with root bun run dev in this automation's isolated checkout, with GitHub credentials removed from the subprocess. No full site build, package installation, test suite, product/AppHost runtime, cloud provisioning, remote workflow, global CLI configuration or certificate-store operation was run. The changed content adds no runnable product command or code sample, so product runtime execution is not being replaced by browser testing.

The dev site's footer SHA is produced by the unchanged startup helper from git merge-base origin/main HEAD, not directly from HEAD. The parent records the actual checkout head separately; a displayed merge-base footer is not treated as PR-head attestation. Browser-only findings remain independent of this source-side provenance explanation.

Phase B — Complete independent source-blind doc-tester report

PR 2076 — Independent Phase B documentation test

Date: 2026-11-06. Completion: complete for the bounded rendered-documentation scope, with one environment/unattributed cookie-management warning.

Independence and method

Read both complete trusted policy files supplied by the coordinator, fetched from main c50fa85fc90fd974d2f7b86e43caa673a54bbf8c. Applied the explicit root-dev-server override. Used only the existing playwright-cli, named in-memory session pr2076-doc-test, browser msedge, for website observation and interaction. No Phase A findings, repository source, test files, raw network responses, product source, or prior reviews were read. No repository edits, installs, builds, tests, sample execution, server management, or GitHub posts occurred.

The parent supplied head f621040fc588129f43926644d7c86f9972becc01 and http://localhost:4321/. The first browser opening succeeded; no readiness retry or repair was needed. This is not independent source-provenance verification. The rendered footer displayed SHA 555f41b; the parent must reconcile that separately.

Evidence directory: pr-2076-browser beside this report. Browser artifacts, including automatically generated snapshots, are outside the repository. Browser DOM evaluations were limited to rendered content, link attributes, layout, computed styles, and focus/scroll interactions.

Summary

Category Count
Critical issues 0
Warnings 1
Passed checks 16
Recommendations 2
Knowledge gaps requiring prior product knowledge 0

These are grouped checks, not a count of individual assertions or screenshots.

Exact routes

  • http://localhost:4321/
  • http://localhost:4321/get-started/what-is-aspire/
  • http://localhost:4321/fr/ — initially reached by opening the visible footer Select language control and clicking Français, not by guessing a locale route. Subsequently revisited for measurements.
  • External read-only destination opened by the changed links: https://github.com/microsoft/aspire/blob/main/LICENSE.TXT. No other external repository content was deliberately inspected.

Passed checks

  1. Local readiness and affected routes: the homepage and both additional scoped routes rendered their page titles and expected content. Evidence: home-desktop.yaml, what-desktop.yaml, fr-home.yaml.
  2. Homepage shared footer: Legal contains the visible link Aspire software: MIT License. Evidence: home-desktop.yaml, home-desktop-dark-focus.png.
  3. Documentation shared footer: the same label appears in the What is Aspire? page footer. Evidence: what-desktop.yaml, what-footer-320-dark-focus.png.
  4. Licensing sentence: the introductory paragraph reads: “Aspire is a code-first orchestration and observability layer for distributed applications. It is open-source software licensed under the MIT License.” The license words are a link. Evidence: what-desktop.yaml, what-intro-fit-1280.txt, what-inline-desktop-light-focus.png.
  5. Destination and new-tab attributes: the footer and introductory links point to the exact GitHub LICENSE.TXT URL above, with target="_blank" and rel="noopener noreferrer" observed in the English DOM. The French fallback footer also has that destination and new-tab target. Evidence: home-link.txt, what-intro-fit-1280.txt, fr-fit-1280.txt.
  6. Homepage keyboard activation: after seeding focus near the footer link, actual Shift+Tab, Tab returned keyboard focus to it; Enter opened the license in a second browser tab while retaining the local homepage.
  7. Introductory keyboard activation: the same keyboard sequence focused MIT License, and Enter opened the expected GitHub license tab while retaining the documentation page. Evidence: what-inline-keyboard-activation.txt.
  8. Pointer activation: clicking the documentation footer's Aspire software: MIT License link also opened the expected external tab. Evidence: what-footer-mouse-activation.txt.
  9. External license observation: the user-visible GitHub page showed an MIT License heading and license text beginning The MIT License (MIT), including permission and warranty paragraphs. This is an observation of the page, not legal advice or an inference about all Aspire materials. Evidence: external-license.yaml.
  10. Localized fallback/discoverability: Français navigation led to /fr/, with French title and Mentions légales section; the added software-license label remains English and retains the expected destination. Evidence: locale-menu.yaml, fr-home.yaml, fr-fit-*.txt.
  11. Software-versus-site distinction and other controls: software MIT has its own explicitly software-labeled entry, separate from Terms of Use. The scoped page snapshots retain privacy-choice, privacy/cookies, terms, trademark, support, and contact links (localized labels on /fr/). English destinations observed: privacy choices https://aka.ms/yourcaliforniaprivacychoices; Privacy & Cookies https://go.microsoft.com/fwlink/?LinkId=521839; Terms of Use https://go.microsoft.com/fwlink/?LinkID=206977; Trademarks https://go.microsoft.com/fwlink/?linkid=2196228; Support /support/; Contact https://support.microsoft.com/en-US/contactus/. This verifies presence and destinations, not external service behavior or baseline preservation.
  12. Shared-footer responsive label fit: actual browser rectangle/range measurements at all twelve route/viewport combinations below place the added label and its text lines within their Legal column and viewport. Wrapping at documentation width 390 is two lines, not clipped text. Primary evidence: home-fit-*.txt, fr-fit-*.txt, what-footer-fit-*.txt. Screenshots are supplementary scroll-position captures, not the measurement source.
  13. Introductory responsive fit: at widths 1280, 768, 390, and 320, the paragraph's line rectangles and license link fit within the content width. At 320 the paragraph spans x=16–304, and the license occupies approximately x=16–107.45. Evidence: what-intro-fit-*.txt; what-inline-320-light-focus.png visually confirms the narrow sentence wrapping.
  14. Homepage desktop light/dark keyboard focus: at 1280×900, the footer link has visible contrasting black/white 2px solid outlines with 3px offset, respectively, and :focus-visible=true. Both screenshots were actually inspected. Evidence: home-light-focus.txt, home-dark-focus.txt, home-desktop-light-focus.png, home-desktop-dark-focus.png.
  15. Documentation keyboard focus: at 1280×900, the inline link visibly receives black/white focus indicators in light/dark. At 320×900, both inline and footer links visibly receive contrasting indicators in both themes without clipping. Inline computed outlines: black/white auto 1px, offset 1px; footer: black/white solid 2px, offset 3px; all measured focused states report :focus-visible=true. Actual screenshots inspected: what-inline-desktop-{light,dark}-focus.png, what-{inline,footer}-320-{light,dark}-focus.png. Corresponding .txt evidence stores focus/style/rectangle results. Focus was seeded programmatically, then reached using actual Shift+Tab/Tab; this was not a full traversal from the document start.
  16. Cookie-control discoverability: the mobile Menu exposes a Manage Cookies button, which could be clicked. The footer's separate Manage Cookies button was hidden in this session. Evidence: mobile-menu-open.yaml, cookie-visibility.txt. Successful cookie preference interaction is not claimed; see warning.

Responsive measurement matrix

All viewport heights were 900 CSS pixels. Values below are the added footer anchor's horizontal left–right bounds in CSS pixels, rounded to two decimals. The browser evidence files retain exact values and text-range rectangles.

Route 1280 wide 768 wide 390 wide 320 wide
/ 917.44–1096.89 407.03–586.48 24–217.27 24–217.27
/fr/ 917.44–1096.89 407.03–586.48 24–217.27 24–217.27
/get-started/what-is-aspire/ 1062.03–1241.48 407.03–586.48 211–374; two text lines 16–209.27

The homepage/French document scroll widths matched the viewport in these measurements. The documentation route matched at 1280, 768, and 390. At 320 its overall document scroll width was 373, although the changed paragraph and license/footer labels themselves fit. A bounded DOM observation found other page elements extending horizontally, including table content. Without baseline comparison, this is not attributed to the PR and is not classified as a changed-label fit failure. Evidence: what-intro-fit-320.txt, what-footer-fit-320.txt, narrow-overflow-observation.txt.

Warning 1 — Cookie preference behavior not validated

Location: /get-started/what-is-aspire/, 320×900, mobile Menu → Manage Cookies.

Observed steps/results: open Menu, observe Manage Cookies, click it. The menu closes, but no visible cookie-preferences interface or dialog appeared in the resulting snapshot/DOM observation. The separate footer Manage Cookies control was display:none; the menu control before opening was visibility-hidden, explaining why a nonzero rectangle alone did not establish visibility.

Evidence: mobile-menu-open.yaml, cookie-management-click.yaml, cookie-click-result.txt, cookie-visibility.txt. The earlier cookie-controls.txt uses rectangle-only visibility and must not be interpreted as proof that the hidden controls were visible.

Impact: presence/discoverability was observed, but end-to-end preference management could not be established in this local session. No consent preferences were changed. No source investigation, environment repair, or baseline comparison was attempted. This is not evidence that the PR introduced a regression.

Recommendations

  1. Independently confirm cookie preference opening in an environment where the consent integration is available, comparing baseline before assigning PR responsibility. Do not treat this local observation alone as a required PR fix.
  2. If a separate responsive follow-up is desired, baseline-check the documentation route's 320px overall horizontal overflow. The affected license text itself passed scoped fit measurements; no unrelated remediation is proposed here.

Knowledge gaps and coverage limits

  • Knowledge gaps: 0. No prior Aspire/CLI/product knowledge was needed to locate or understand the added software-licensing wording. Legal interpretation is outside scope.
  • Product/CLI samples: N/A. The supplied changed surface introduces no runnable product sample. No unchanged tutorial samples or related automated tests were read/executed; their omission is not a failure.
  • Only the three local routes, the visible locale-navigation interaction, and the directly linked GitHub license were exercised. No exhaustive locale, unrelated-page, site-wide internal-link, or external legal/support service crawl was performed.
  • Only Edge's desktop browser with resized CSS viewports was used; no physical touch device, screen reader, alternate browser, zoom audit, or full accessibility conformance audit.
  • Four-width fit coverage is not a full theme×viewport Cartesian visual audit. Explicit keyboard focus screenshots cover homepage desktop light/dark, documentation inline desktop light/dark, and documentation inline/footer narrow light/dark.
  • DOM rectangle/range measurements substantiate fit. Some generic footer screenshots captured later scroll positions that do not show the license; do not use those images alone to claim its visibility. Focus screenshots cited above visibly show their asserted indicators.
  • No baseline, production build, source provenance, translation implementation, changed tests, or legal correctness was independently established. The rendered SHA observation is left to Phase A/coordinator reconciliation.

Cleanup

Only the named browser was closed with playwright-cli -s=pr2076-doc-test close; pr-2076-browser\browser-closure.txt records Browser 'pr2076-doc-test' closed. No close-all/kill-all command was used. The parent server was neither started nor stopped. Report and evidence retained.

@IEvangelist
David Pine (IEvangelist) enabled auto-merge (squash) November 6, 2026 15:05

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ran unit tests, manually examined changes and check links, asked Claude to check the changes. No problems found. Ready to merge.

@IEvangelist
David Pine (IEvangelist) merged commit 98570cf into main Nov 6, 2026
20 checks passed
@IEvangelist
David Pine (IEvangelist) deleted the ievangelist-clarify-aspire-mit-licensing branch November 6, 2026 15:27
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.

Clarify Aspire's MIT License on the website and in the documentation

3 participants