Introduction
For those unfamiliar, Zigtools was founded to support the Zig community, especially newcomers, by creating editor tooling like ZLS, providing building blocks with lsp-kit for language servers written in Zig, working on tools like Zigtools Playground, and contributing to Zig editor extensions like vscode-zig.
Plagiarism
A few weeks ago, a Zig resource called ZigBook was released with the bold claim of “zero AI” and an original “project-based” structure.
Unfortunately, even a cursory glance at the nonsense chapter structure, book content, examples, general website, or post-backlash issue-disabled repo reveals that the book is pure LLM slop and the project itself is structured like some kind of sycophant psychiatrist, with closed accounts and fake responses.
We are dropping all direct links to Zigbook so they don’t get any more SEO traction.
We thought the massive community response would spell the end of the project, but ZigBook persevered, and just last week released a brand new feature, the “High-Voltage Beta” Zig Playground.
Since we have our own Zig playground (repo, website) at ZigTools, our interest was immediately piqued. The form and functionality looked largely the same and Zigbook even integrated (in a non-functional way) ZLS into their playground to provide all the fancy editor bells and whistles like code completion and goto definitions.
Knowing Zigbook’s history of deception, we immediately investigated WASM blobs. Unfortunately, WASM blobs are byte-by-byte exactly like ours. Given the two drops this cannot be a coincidence (zig.wasmA lightly modified version of the Zig compiler, and zls.wasmZLS with modified entry points for WASI) are completely custom-built for Zigtools Playground.
We have archived WASM files courtesy of the great Internet Archive for your convenience:
zls.wasm,sha256sum,3a63e5092e8f90172716977af5c88b4f49e546f730f25e9bafb47f4ac9a2ee1d,zig.wasm,sha256sum,d3fe6b8a6b1db84a914eaa1f4a80ca5dcfd3b0948a35f2b1e78432a392eace96,
We proceeded to look at the JavaScript code, which we immediately determined was copied identically, but with LLM distortions, likely preventing the code from being completely identical. Nevertheless, some sections were copied one-to-one, such as the JavaScript worker data-passing structure and logging (original ZLS Playground code, plagiarized Zigbook code).
The following code from both files is identical:
try {
const exitCode = wasi.start(instance);
postMessage({
stderr: `\n\n---\nexit with exit code \n---\n`,
});
} catch (err) {
postMessage({ stderr: `` });
}
postMessage({
done: true,
});
onmessage = (event) => {
if (event.data.run) {
run(event.data.run);
}
};
\n\n---\nexit with exit code ${exitCode}\n---\n Perhaps the most obvious is the copied string.
What’s interesting is that, despite copying many parts of our code, Zigbook has not designed the most important part of the ZLS integration code, the JavaScript ZLS API, to work with the ZLS WASM binary’s API. That JavaScript code is absolutely necessary to interact with the ZLS binary. Did Plagiarism Zigbooks avoided copying that JavaScript code either because they knew it would be too blatantly obvious, because they don’t fundamentally understand how ZigTools Playground works, or because they planned on copying more of our code.
To be clear, copying our code and WASM blobs is perfectly acceptable, provided that Playground and Zig are MIT licensed. Unfortunately, Zigbook has not followed the terms of the MIT license at all, and claims the code and blobs as its own without correctly reproducing the license.
We sent a neutral PR to Zigbook to correct the license violations, but they immediately closed it and removed the description, seemingly hiding their misdeeds.
The original description (also available in the “Edit” dropdown of the original PR comment) is reproduced below:
We (@zigtools) noticed that you were using code from Zigtools Playground, which included byte-by-byte copies of our WASM blobs and excerpts from our JavaScript source code.
This is a violation of the MIT license under which Zigtools Playground is licensed in violation of the Zig MIT license (for the zig.wasm blob).
As the MIT license says:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.We fixed this by adding the corresponding license to your repository. Since your repository does not include a direct link to the *.wasm dependencies, we have also added a license disclaimer to the playground page that mentions the license.
The above bad behavior of Zigbook and their continued violations of our license and unwillingness to fix the violations prompted us to write this blog post.
Our vision for the Zigtools playground
It’s sad that our first blog post is about plagiarism of our best subproject. We challenged ourselves by building a WASM-based client-side playground to enable offline use, code privacy, and no server costs.
This incident has inspired us to spend more time in our playground and generated some ideas:
- We would like to enable multifile support to allow running more complex Zig projects in the browser
- We’d like to collaborate with fellow Ziguanas to integrate Playground into their excellent Zig tutorials, books, and blogposts.
- A perfect example of this would be enabling people to jump online into Zigglings with Playground
- The Zig website itself would be a great target too!
- We would like to support stack traces using DWARF debug information that is not yet emitted by the self-hosted Zig compiler
conclusion
As members of the Zig community, We advise all other members of the Zig community to stay away from Zigbook,
If you’re looking to learn Zig, we strongly recommend checking out the excellent official Zig Learn page, which contains excellent resources from the previously mentioned Ziglings to Carl Seguin’s Learning Zig.
We’re also using this opportunity to mention that we’re raising funds to keep ZLS sustainable for our only full-time maintainer, Techatrix. We would love it if you would be willing to contribute just $5 per month. You can check out our OpenCollective or GitHub sponsors.
Thanks for reading! ,
<a href
косметология до и после клиника косметологии