Repository navigation
Clarify Aspire's MIT software license on the website and in docs - #2076
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟢 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
Frontend HTML artifact readyThe latest frontend build uploaded the This comment updates automatically when a new frontend build artifact is uploaded. |
David Pine (IEvangelist)
left a comment
There was a problem hiding this comment.
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
- 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. - Homepage shared footer: Legal contains the visible link Aspire software: MIT License. Evidence:
home-desktop.yaml,home-desktop-dark-focus.png. - Documentation shared footer: the same label appears in the What is Aspire? page footer. Evidence:
what-desktop.yaml,what-footer-320-dark-focus.png. - 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. - Destination and new-tab attributes: the footer and introductory links point to the exact GitHub
LICENSE.TXTURL above, withtarget="_blank"andrel="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. - Homepage keyboard activation: after seeding focus near the footer link, actual
Shift+Tab,Tabreturned keyboard focus to it;Enteropened the license in a second browser tab while retaining the local homepage. - Introductory keyboard activation: the same keyboard sequence focused MIT License, and
Enteropened the expected GitHub license tab while retaining the documentation page. Evidence:what-inline-keyboard-activation.txt. - Pointer activation: clicking the documentation footer's Aspire software: MIT License link also opened the expected external tab. Evidence:
what-footer-mouse-activation.txt. - 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. - 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. - 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 choiceshttps://aka.ms/yourcaliforniaprivacychoices; Privacy & Cookieshttps://go.microsoft.com/fwlink/?LinkId=521839; Terms of Usehttps://go.microsoft.com/fwlink/?LinkID=206977; Trademarkshttps://go.microsoft.com/fwlink/?linkid=2196228; Support/support/; Contacthttps://support.microsoft.com/en-US/contactus/. This verifies presence and destinations, not external service behavior or baseline preservation. - 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. - 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.pngvisually confirms the narrow sentence wrapping. - 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. - 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.txtevidence stores focus/style/rectangle results. Focus was seeded programmatically, then reached using actualShift+Tab/Tab; this was not a full traversal from the document start. - 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
- 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.
- 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.
Alistair Matthews (alistairmatthews)
left a comment
There was a problem hiding this comment.
Ran unit tests, manually examined changes and check links, asked Claude to check the changes. No problems found. Ready to merge.
Summary
Fixes #2075.
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.