Review: monaco-editor 0.47.0+ds-1
Package Information
| Description | browser based code editor Monaco is the code editor that ships with VS Code. The engine is packaged separately, as monaco-editor-core; this package is the wrapper that adds the language workers and the language features on top of it, and is what applications normally depend on. The editor is built for the browser: it is served as static files, or pulled apart by a bundler. This package holds the ES module tree, which is what package.json points at, in the place the Node.js module resolver looks for it. Node.js is an event-based server-side JavaScript engine. |
|---|---|
| Maintainer | Debian Javascript Maintainers <pkg-javascript-devel@lists.alioth.debian.org> |
| Changed By | Emfox Zhou <emfox@debian.org> |
| Sponsor | emfox@debian.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/js-team/monaco-editor.git (browse) |
| Closes | #1150423 |
| Tracker | https://tracker.debian.org/pkg/monaco-editor |
| Uploaded | 12 days ago |
New Package Report
.changes
| Architecture | source all |
|---|---|
| Distribution | unstable |
| Date | Mon, 26 Oct 2026 08:47:00 +0800 |
| Source | monaco-editor |
| Version | 0.47.0+ds-1 |
| Changed-By | Emfox Zhou <emfox@debian.org> |
Changelog
monaco-editor (0.47.0+ds-1) unstable; urgency=medium . * Initial release. (Closes: #1150423)
.dsc
| Package-List | libjs-monaco-editor deb javascript optional arch=all node-monaco-editor deb javascript optional arch=all |
|---|---|
| Section | javascript |
| Priority | optional |
| Component | main |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: monaco-editor Source: https://github.com/microsoft/monaco-editor Files: * Copyright: 2016 - present Microsoft Corporation License: Expat Files: src/basic-languages/swift/swift.ts Copyright: David Owens II License: Expat Files: src/basic-languages/postiats/* Copyright: Artyom Shalkhakov License: Expat Files: src/basic-languages/wgsl/* Copyright: Google LLC License: Expat Files: debian/* Copyright: 2026 Emfox Zhou <emfox@debian.org> License: Expat License: Expat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
DFSG Assistant LLM REVIEW 0 blocker, 2 important, 2 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 12 days ago.
Report
DFSG NEW review for monaco-editor version 0.47.0+ds-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: No - Packaging is of good quality: No
- Issues: 0 blocker, 2 important, 2 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: nothing found
Licensing
The licences in the tree are DFSG-free and consistent: every file I could read is Expat/MIT (Microsoft's LICENSE.txt, plus David Owens II's swift.ts, Artyom Shalkhakov's postiats files and Microsoft+Google's wgsl files), debian/copyright is DEP-5 with the Expat text inline, and there is no non-free wording, minified code, firmware or built binary anywhere in the source. The copyright file is nevertheless inaccurate in two Files stanzas: Files: src/basic-languages/wgsl/* (Copyright: Google LLC) drops Microsoft, which the files' own headers name for wgsl.ts and wgsl.test.ts, and claims Google for wgsl.contribution.ts, which is Microsoft's alone; Files: src/basic-languages/postiats/* claims the whole directory for Artyom Shalkhakov, including Microsoft's postiats.contribution.ts. Separately, the tree node-monaco-editor installs embeds the TypeScript compiler (Apache-2.0, rebuilt at build time from node-typescript) and neither the licence nor a note of it is in debian/copyright.
Packaging
The packaging is otherwise careful and modern: compat 14 with a plain dh $@, build through debian/build.sh (documented in README.source, with the shims for the two npm-only modules and DEP-3 patches with Forwarded headers), repack documented and reproducible through get-orig-source, changelog/source format/gbp.conf/Vcs-*/Testsuite consistent, Standards-Version 4.7.4 against Policy 4.7.4.1, an autopkgtest that checks the installed tree, and every Build-Depends name resolving in the archive. It fails on one point: the codicon font is taken from /usr/share/fonts/truetype/codicons/codicon.ttf in debian/build.sh and debian/node-monaco-editor.links, while fonts-codicons installs it under /usr/share/fonts-codicons/ per its own control description, so the build's cp (under set -eu) fails and the shipped symlink would dangle.
Issues
important licensing 1. Files: src/basic-languages/wgsl/* names only Google LLC, but the files are Microsoft Corporation and Google LLC, and wgsl.contribution.ts is Microsoft's alone ◂
- Files: debian/copyright (stanza
Files: src/basic-languages/wgsl/*), src/basic-languages/wgsl/wgsl.ts:2, src/basic-languages/wgsl/wgsl.test.ts:2, src/basic-languages/wgsl/wgsl.contribution.ts:2 - Basis: checked, in the package or with a reference tool
- Evidence: wgsl.ts:2 and wgsl.test.ts:2
* Copyright (c) Microsoft Corporation, Google LLC. All rights reserved.; wgsl.contribution.ts:2* Copyright (c) Microsoft Corporation. All rights reserved.; debian/copyright:Files: src/basic-languages/wgsl/*/Copyright: Google LLC. - Problem: A later Files stanza replaces the Files: * stanza for everything its pattern matches, so Microsoft Corporation, the holder of the language tokenizer, the tests and the contribution file, is no longer named for the wgsl files, while Google LLC is claimed for wgsl.contribution.ts, which Google did not write.
- Fix: Name both holders in the stanza (
Copyright: 2016 - present Microsoft Corporationand the Google LLC line), or narrow the pattern to the two files that carry the joint notice (src/basic-languages/wgsl/wgsl.ts and wgsl.test.ts) and let wgsl.contribution.ts fall under Files: *.
important packaging 2. debian/build.sh and debian/node-monaco-editor.links point at /usr/share/fonts/truetype/codicons/codicon.ttf, but fonts-codicons installs the font in /usr/share/fonts-codicons/ ◂
- Files:
debian/build.sh:48-52, debian/node-monaco-editor.links:1 - Basis: inferred from what was read, not seen directly
- Evidence: debian/build.sh:51-52
cp /usr/share/fonts/truetype/codicons/codicon.ttf \...node_modules/monaco-editor-core/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf; debian/node-monaco-editor.links:1usr/share/fonts/truetype/codicons/codicon.ttf usr/share/nodejs/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf;apt-cache show fonts-codicons(0.0.46-42-1): "This package ships the TrueType font, together with the CSS stylesheet, the SVG sprite and the TypeScript icon table that upstream publishes alongside it, installed in /usr/share/fonts-codicons/." - Problem: fonts-codicons is a Build-Depends and a Depends of node-monaco-editor, and its own control file places the font under /usr/share/fonts-codicons/, not under /usr/share/fonts/truetype/codicons/. debian/build.sh runs under
set -eu, so thecpof a file that is not there fails the build; and even if the build were to let it through, dh_link would install a symlink to a target no package provides, so the editor would ship without its font and the dangling link would show up in the binary. - Fix: Use the path fonts-codicons documents (/usr/share/fonts-codicons/codicon.ttf) in both debian/build.sh and debian/node-monaco-editor.links, or depend on whichever package does install /usr/share/fonts/truetype/codicons/codicon.ttf.
minor licensing 3. Files: src/basic-languages/postiats/* attributes postiats.contribution.ts to Artyom Shalkhakov, but Microsoft holds its copyright ◂
- Files: debian/copyright (stanza
Files: src/basic-languages/postiats/*), src/basic-languages/postiats/postiats.contribution.ts:2 - Basis: checked, in the package or with a reference tool
- Evidence: postiats.contribution.ts:2
* Copyright (c) Microsoft Corporation. All rights reserved.; postiats.ts:2 and postiats.test.ts:2* Copyright (c) Artyom Shalkhakov. All rights reserved.; debian/copyright:Files: src/basic-languages/postiats/*/Copyright: Artyom Shalkhakov. - Problem: The pattern covers the whole directory, so Microsoft's contribution file is attributed to Artyom Shalkhakov, whose copyright in fact covers only postiats.ts and postiats.test.ts.
- Fix: Name both holders (Microsoft Corporation for the contribution file, Artyom Shalkhakov for the tokenizer and its tests), or narrow the pattern to src/basic-languages/postiats/postiats.ts and src/basic-languages/postiats/postiats.test.ts.
minor licensing 4. debian/copyright does not record the Apache-2.0 TypeScript compiler that the generated tree embeds ◂
- Files:
debian/copyright (whole file), debian/README.Debian, build/importTypescript.ts, ThirdPartyNotices.txt:11-15 - Basis: checked, in the package or with a reference tool
- Evidence: debian/README.Debian: "src/language/typescript/lib/ is generated during the build from Debian's TypeScript rather than the release upstream pins (5.0.2), so the TypeScript worker is that version" and "ts.worker.js, which carries this package's TypeScript"; build/importTypescript.ts reads
node_modules/typescript/lib/typescript.js(a copy of the packaged compiler, made by debian/build.sh from $SHARE/typescript) and writes src/language/typescript/lib/typescriptServices.js, which build/build-monaco-editor.ts bundles into the installed ts.worker.js; ThirdPartyNotices.txt:11-15 records%% typescript version 4.4.4...Apache License Version 2.0; debian/copyright declares every file Expat and mentions no Apache-2.0 component. - Problem: debian/copyright is meant to describe the licensing of what the package distributes, and the tree node-monaco-editor installs contains the TypeScript compiler under Apache-2.0, rebuilt from node-typescript at build time. Nothing in debian/copyright says so (upstream's own notice file does, but for the 4.4.4 release it bundled). Apache-2.0 is DFSG-free and its text is in /usr/share/common-licenses, so only a record is missing, not a permission.
- Fix: Add a stanza or a Comment for the generated src/language/typescript/lib/ (built from node-typescript) recording License: Apache-2.0, as upstream's ThirdPartyNotices.txt does; the version the notice quotes should be corrected to the packaged one at the same time.
Verified ◂
- Inventoried the whole tree (336 files): root files, build/, docs/, scripts/, src/ (basic-languages with 91 directories, fillers/, language/), test/{unit,smoke} and debian/. .pc/ was not read.
- Grepped every source file for Copyright / (C) / © / Licensed under / SPDX-License-Identifier / Permission is hereby granted / GNU / Apache / Mozilla / public domain / All rights reserved: all headers are Microsoft's MIT notice (
* Copyright (c) Microsoft Corporation. All rights reserved.+* Licensed under the MIT License.), except src/basic-languages/swift/swift.ts (David Owens II, owensd.io), src/basic-languages/postiats/{postiats.ts,postiats.test.ts} (Artyom Shalkhakov) and src/basic-languages/wgsl/{wgsl.ts,wgsl.test.ts} (Microsoft Corporation, Google LLC) - all MIT and all covered by a debian/copyright stanza, with the two holder-scoping errors reported above. - LICENSE.txt ("The MIT License (MIT)", "Copyright (c) 2016 - present Microsoft Corporation") is the Expat text debian/copyright inlines; README.md:122 points at it. Only one LICENSE/NOTICE-style file exists in the tree, the root LICENSE.txt.
- ThirdPartyNotices.txt is upstream's MIT-licensed NOTICE file (Microsoft's
Files: *) reproducing the licence texts of components Microsoft ships in its npm bundle. The five holders the prescan found in it - Einar Lielmanis/Liam Newman (js-beautify 1.6.2, MIT), The Khronos Group (WebGL, MIT-like), Unicode, Inc (Unicode data files), W3C® (MIT, ERCIM, Keio, Beihang) (HTML 5.1), WHATWG (Apple, Google, Mozilla, Microsoft) (DOM, CC-BY-4.0) - are the holders of those components, not of this file, and none of them has code anywhere in the source package: greps for beautif/Lielmanis/drifty/Khronos/WD-html51/'Unicode, Inc'/owensd over the whole tree match that file alone. The one component named there that is in the tree, vscode-swift (David Owens II), is src/basic-languages/swift/swift.ts and has its own stanza. No stanza for them is needed. - That notice file also names 'Ionic documentation' (Drifty Co.) and a W3C Community Final Specification Agreement text; both belong to upstream's dropped samples/ and manual-test material, which the repack removes (see debian/README.source and the DROP list in debian/get-orig-source), so nothing in the tree is under those terms.
- src/basic-languages/freemarker2/freemarker2.ts says it is 'adapted from the official JavaCC grammar for FreeMarker' (a comment, with a URL); the file's own header is Microsoft's MIT notice, assigned to Microsoft with the attribution kept, which is upstream's licensing decision, not a missing stanza.
- No minified JS, .map, .jar, .class, .so, .dll, .exe, .pyc, .ttf/.otf/.woff, .pdf, .zip, .gz or .wasm in the tree (glob for all of those: no matches). package-lock.json is npm's lock data, not a built artefact. docs/{code-structure.dio.svg,out-folders.dio.svg,debugging-core.gif,debugging-languages.gif,"launch config.png"} are upstream's documentation images, carried by Files: *; the two .dio.svg are the editable diagram sources, so the media have a preferred form for modification.
- No non-free wording anywhere (searched non-commercial/noncommercial/not for commercial/research only/no derivative/field of use/CC BY-NC/Attribution-NoDerivs/Good, not Evil: no matches outside the licence texts quoted in ThirdPartyNotices.txt, none of which applies to a file in the tree).
- debian/copyright is DEP-5 (Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/), has Upstream-Name/Source, Files: , the three upstream stanzas, a debian/ stanza (Emfox Zhou, 2026, consistent with the changelog) and a stand-alone License: Expat paragraph whose text matches LICENSE.txt. No Files-Excluded field.
- debian/control and the .dsc agree; Standards-Version 4.7.4 against Policy 4.7.4.1 (policy tool) is current; Distribution unstable, version 0.47.0+ds-1, source format 3.0 (quilt), orig monaco-editor_0.47.0+ds.orig.tar.gz consistent with the +ds repack documented in README.source.
- Build-Depends all resolve in the archive: esbuild 0.28.2-1 (which Provides node-esbuild and node-esbuild-linux-x64, so $SHARE/esbuild exists), fonts-codicons 0.0.46-42-1, node-glob 13.0.6, node-jsonc-parser 3.3.1, node-typescript 6.0.3 (>= 6.0.0 satisfied), node-vscode-{css,html,json}-languageservice, node-vscode-l10n, node-vscode-languageserver-{types,textdocument}, node-vscode-uri. node-monaco-editor-core is in no list - it is the companion engine package of the same upload, not in the package lists yet, so not a fault. @types/node comes from nodejs (node-types-node virtual), which node-typescript pulls in, so the tsc --typeRoots in debian/build.sh is satisfiable.
- debian/patches: all six carry DEP-3 headers (Description, Origin: vendor, Forwarded: not-needed) and each is explained in debian/README.source; they adapt the sources to TypeScript 6, take the commit from the environment, skip the AMD tree, read TypeScript from the package, drop the prettier pass and raise the stack.
- debian/clean lists node_modules/, out/ and the six build/*.js the tsc call emits plus the five files build/importTypescript.ts and package-json.cjs generate, which is everything debian/build.sh writes into the tree (importLibs writes only lib.ts and lib.index.ts); no unnamed generated file is left behind.
- dh_auto_test does nothing here: the man page says the make target is only run 'if there's a Makefile and it contains a test or check target' and there is no Makefile, so
dh $@without an override_dh_auto_test cannot fail the build. - The installed tree duplicates the engine files that node-monaco-editor-core installs (debian/rules copies out/monaco-editor wholesale), which is upstream's own layout - the npm monaco-editor package embeds monaco-editor-core's ESM tree - and what makes the tree usable by a bundler, so not a fault.
- debian/tests/pkg-js/{SKIP,test} exist alongside Testsuite: autopkgtest-pkg-nodejs; the test checks the installed tree's entry points, metadata, one language bundle and the four workers, and greps the installed esm tree for build-path leakage.
- uscan found upstream releases with
debian/watch; a newer upstream version is available (upstream0.57.0, packaged0.47.0+ds), which is not a fault of the package.
Not confirmed ◂
- fonts-codicons' file list could not be read directly (apt-cache shows only control fields, and the package is not installed on this system): a build, or the package's .deb contents, would settle whether the font is only at /usr/share/fonts-codicons/codicon.ttf, as its Description says, or whether /usr/share/fonts/truetype/codicons/codicon.ttf also exists. The issue above rests on that description.
- The script mode of debian/tests/pkg-js/test, debian/get-orig-source and debian/build.sh, and whether the pkg-js autopkgtest runner honours the SKIP file (its README and runner are not installed on this system), could not be checked.
- The contents of the binary media (docs/.gif, docs/.png) were not read, as instructed, and package-lock.json (425 KB of npm lock data) was not read in full; both are upstream's and are covered by Files: *.
Proposed changes ◂
None.
Uploader's response to the LLM review
The uploader rejected this upload in response to the review.
Review Information
rejected — allocated to dfsg-uploader 12 days ago, started 12 days ago, completed 12 days ago.
Final Comment
The uploader rejected this upload in response to the automated (LLM) review of it, so that they can fix the problems it found and upload again.