Skip to content

Relicense VS Code extension and Visual Editor from AGPL-3.0 to MIT - #1032

Open
cderv wants to merge 11 commits into
mainfrom
worktree-mit-relicensing
Open

Relicense VS Code extension and Visual Editor from AGPL-3.0 to MIT#1032
cderv wants to merge 11 commits into
mainfrom
worktree-mit-relicensing

Conversation

@cderv

@cderv cderv commented Jul 1, 2026

Copy link
Copy Markdown
Member

Important

Draft — do not merge until every contributor listed in #1026 has replied "I agree". Several contributors on that checklist haven't replied yet.

#430 flagged that AGPL-3.0 blocks adoption of the VS Code extension at companies that treat AGPL as a hard no. #1026 decided to relicense the extension and Visual Editor as MIT, matching the license already used by the rest of Quarto. Relicensing requires consent from every non-Posit copyright holder, tracked as a checklist on #1026.

The 19 packages/apps in scope are the VS Code extension, the LSP, the Visual Editor, and the shared packages they depend on. apps/writer and apps/writer-server are excluded (experimental, not yet shipped to production) and remain AGPL-3.0.

License changes

  • Sets license: MIT and swaps in MIT LICENSE/README text for the packages in scope.
  • Preserves the Apache-2.0/BSD-3-Clause legal comments that Vite and esbuild strip from production bundles by default (Apache-2.0 §4(c) and BSD-3-Clause require retaining copyright notices in distributions).
  • Adds ThirdPartyNotices.txt (Microsoft convention, matches VS Code itself and GitLens) covering the LGPL-3.0, Apache-2.0, and BSD-3-Clause dependencies bundled into the extension — Apache-2.0 §4(a) and BSD-3-Clause require license text in distributions.
  • biblatex-csl-converter (LGPL-3.0, bundled in the Visual Editor webview) is the only non-permissive dependency. Compliance is via ThirdPartyNotices.txt shipping both the GPL-3.0 and LGPL-3.0 full texts per §4(b), no code changes needed. Dropping the LGPL dependency entirely would need either replacing it with an MIT alternative (@citation-js) or asking the maintainer about relicensing — neither pursued here.

Header cleanup

  • Strips the AGPL "commercial license alternative" clause from source file headers across the relicensed packages, leaving the copyright line only — matching the header style already used by packages that were already MIT. Covers both the initial .ts/.tsx sweep and a follow-up pass for CSS/SCSS files a roborev review caught as missed.
  • While those same headers were being touched, also brings stale copyright year ranges up to 2026 and renames the remaining RStudio, PBC attributions to Posit Software, PBC.

Relates to #1026, #430

@posit-snyk-bot

posit-snyk-bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

cderv added 8 commits July 8, 2026 10:54
…bundled dependencies

Auditing the third-party npm packages bundled across the three shipped
extension bundles (esbuild extension host, Vite Visual Editor webview, Vite
markdown-it renderer) turned up one non-permissive dependency,
biblatex-csl-converter (LGPL-3.0), plus several Apache-2.0 and BSD-3-Clause
packages whose licenses require reproducing copyright/license text in the
distributed product rather than just in node_modules.

LGPL-3.0 does not require dependents to be LGPL, so this doesn't block the
MIT relicensing itself, but LGPL-3.0 SS4 requires that users be able to modify
and rebuild the library against our code. biblatex-csl-converter is statically
bundled into the Vite webview (UMD, no Node.js module resolution available in
that context), so SS4(d0) applies: satisfied because Quarto is open source and
users can modify and rebuild from source, and SS4(b) requires shipping the
license text, which this file provides (GPL-3.0 text is included because
LGPL-3.0 incorporates it by reference).

Apache-2.0 (diff-match-patch, fuse.js, mathjax-full, prosemirror-utils,
thenby) SS4(a)/(c) and BSD-3-Clause (highlight.js, flat, react-transition-group,
typo-js) both require retaining copyright and license notices in
redistributed copies, which this notices file also covers.
Per #1026, the VS Code extension and Visual Editor
packages relicensed to MIT no longer carry the AGPL commercial-license
clause. Strips the "Unless you have received this program directly
from Posit Software/RStudio pursuant..." block from all 665 source
files across the relicensed packages, leaving the Copyright line only
(matching the header style already used by MIT-licensed packages
elsewhere in the monorepo). apps/writer and apps/writer-server remain
AGPL-3.0 and are untouched.
Bumps stale copyright year ranges to include 2026 in the same 665
source files touched by the AGPL-clause removal, and updates the 16
remaining "RStudio, PBC" attributions (pre-rename company name) to
"Posit Software, PBC" to match current headers elsewhere. apps/writer
and apps/writer-server remain untouched.
roborev review of 3ffa0b4 caught 40 CSS/SCSS files across
apps/vscode-editor, packages/editor, packages/editor-ui, and
packages/editor-codemirror that still carried the AGPL
commercial-license clause -- the initial header-strip pass only
targeted .ts/.tsx files. Applies the same three fixes as the prior
commits (strip AGPL clause, bump copyright year to 2026, rename
RStudio -> Posit Software) to these files.
roborev review of ffbfed3 caught that apps/panmirror/vite.config.ts
was missed -- it also runs a production `vite build` shipping
dist/panmirror.js, and bundles the same workspace `editor` package
(and its third-party deps) as apps/vscode-editor and
apps/vscode-markdownit, which already got this fix.
@cderv
cderv force-pushed the worktree-mit-relicensing branch from 6874b87 to d57a09b Compare July 8, 2026 08:54
@juliasilge

Copy link
Copy Markdown
Collaborator

@cderv, I think we are ready to finish up this PR and merge it! 🎉

Can you merge from main and update any new files, to complete this re-licensing? You can add me and @cscheid to review.

@cderv
cderv marked this pull request as ready for review August 31, 2026 08:02
cderv added 3 commits August 31, 2026 10:10
Merging main pulled in new source/test files created after the initial relicensing sweep; they carried the pre-relicensing AGPL header template. Strips the clause to match the MIT header style, consistent with dc9b556/e68a0ec7.
@cderv

cderv commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

I have done the checks and updates.

Some scope clarification: Panmirror is intentionally included in this PR. It is the RStudio-facing distribution of the shared Visual Editor stack used by the Quarto VS Code extension, so relicensing it to MIT keeps the shipped editor integrations consistent. I would welcome confirmation from the RStudio IDE team that there is no downstream packaging impact I have missed.
The MIT change applies to Quarto/Panmirror code, not to bundled third-party dependencies. Panmirror still bundles third-party code under its existing licences, including biblatex-csl-converter (LGPL-3.0).

This follows the same distribution-compliance approach already used for the VS Code extension: each separately shipped artifact must carry its MIT licence and the applicable third-party notices. Panmirror is distributed separately as dist/panmirror.js, so it cannot rely on the LICENSE and ThirdPartyNotices.txt packaged with the VS Code extension.

This update copies LICENSE and ThirdPartyNotices.txt beside every Panmirror build output, including builds using PANMIRROR_OUTDIR.

@cderv
cderv requested review from cscheid and juliasilge August 31, 2026 12:23
@cderv

cderv commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

Also I don't think CI issue is caused by this change.

@juliasilge juliasilge left a comment

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.

Thank you so much! I reviewed which components we are re-licensing here and I agree with the scope of the change, based on my information.

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.

3 participants