Open-Source Software & Licenses
Last updated: 15 July 2026
ECE Lab is built on a large amount of open-source software — code that someone else wrote, published under a license that lets anyone reuse it, and that we then built on top of instead of writing from scratch. This page lists the material third-party components we use, explains what license each one carries and what that license actually asks of us, and — for the one component that requires it — explains how to get the corresponding source code.
GPL-licensed components: the Linux CLI practice terminal
The "Linux Command-Line" practice track (/practice/embedded/ubuntu) runs a real Linux system — kernel, BusyBox, bash, and supporting tools — inside a v86 (x86 CPU emulator) instance in your browser. This is not a simulation or a lookalike terminal; it is real, compiled GPL-licensed software that your browser downloads and actually executes locally, on your own machine, the same way a physical Linux computer would.
The components below are licensed under the GNU General Public License (GPL). In plain terms, the GPL is a copyleft license: it lets us use, run, and even modify this software for free, but in exchange it requires that anyone who distributes the compiled program — which is what we do every time your browser downloads this Linux image — also make the corresponding human-readable source code available to the people who received it. That is a legal obligation on us, not an optional courtesy, which is why this page and the offer below exist.
ls, cp,grep, and dozens more), bundled together to keep the image small.su command used by the exercises that ask you to switch to the root user. Most of util-linux is GPL-2.0-or-later; a handful of its sub-components are separately licensed under LGPL or BSD terms.Where the source code is: the complete build tree used to produce this image is what you would need to reproduce it yourself, or to see exactly what we changed from the stock upstream projects. That includes the Buildroot defconfig (the file that says which packages go into the image), the kernel .config (which kernel features are enabled), the full root-filesystem overlay (every fixture file, practice script, and configuration file we added or modified on top of the stock filesystem), and the post-fakeroot.sh build script (which sets file ownership and permissions during the build). That tree is published at:
Public source repository: coming soon. We have not yet published the build tree to a public repository. Until it is live, the written offer below is the way to request the complete corresponding source code for the GPL-licensed components of this image — you do not need to wait for the repository to become public to exercise your rights under the GPL.
Written offer: this is the fallback the GPL itself recognizes for exactly this situation — if, for any reason, the repository above is unavailable to you, we will provide the complete corresponding source code for the GPL-licensed components of the Linux CLI practice image to any third party who requests it, on a durable medium customarily used for software interchange (for example, a download link or a physical drive), for no more than our reasonable cost of fulfilling that request (for example, the cost of the physical medium and postage, if you specifically ask for one — we do not charge for the source code itself). This offer is valid for at least three years from the date you obtained access to this image. It is not limited to our own registered users — it is open to anyone who received a copy of the compiled software, because that is what the GPL requires. To request source under this offer, email labsofece@gmail.com with the subject line "GPL source request," and we will follow up with instructions for receiving the complete source tree.
What we changed, and what we didn't: neither the Linux kernel, BusyBox, bash, nor any other GPL-licensed component listed above has had its own source code modified — we did not fork or patch the programs themselves. Our modifications are limited to build configuration (which features and packages are compiled in), the root filesystem's contents (the practice fixture files, the student/labmate user accounts, and sample data used by the exercises), and boot-time provisioning scripts (small shell scripts that set up a fresh practice environment each time a terminal boots). All of that is included in the published tree described above, so anyone can reproduce exactly what runs in your browser.
Other major open-source components
The rest of the site — the web app you are reading right now, the Verilog/circuit-simulation practice problems, and the terminal rendering — is also built on open-source software, under permissive licenses (MIT, BSD, ISC) that, unlike the GPL above, do not require us to publish our own source code in exchange for using them. We list the material ones here anyway, for transparency.
This list covers the material, user-facing components — dozens of additional smaller MIT/Apache-2.0/BSD/ISC-licensed packages are used as well and are omitted here for length, since none of them require any disclosure beyond what a normal software project already provides. If you would like the complete, machine-generated list, email us and we will send it, or you can generate it yourself against the live production dependency tree by running npx license-checker --summaryagainst this project's source.
Weak-copyleft components (no action required, disclosed for completeness)
A small number of transitive dependencies — meaning packages that a package we use depends on, not something we chose to add directly — are licensed under terms sometimes called "weak copyleft," a lighter version of the GPL's source-sharing requirement that only applies if you modify and redistribute the library itself, not to applications (like this site) that merely call it. Specifically: @img/sharp-libvipsis licensed under LGPL-3.0 and is used server-side by Next.js's image optimization feature — it is dynamically linked at runtime and never redistributed to your browser as a standalone file, which is the specific condition under which LGPL does not require us to publish anything further. @joint/coreis licensed under MPL-2.0 and is a transitive dependency of our circuit simulation libraries, used unmodified from its published form. Neither of these imposes a source-disclosure obligation on this project's own code under normal use; we list them here purely so this page is a complete and honest account of what the site depends on, not because either one requires action from us.
Questions
If you have a question about any license on this page, are unsure whether something you want to do with our code or the practice terminal is allowed, or want to exercise the GPL source-code offer above, email labsofece@gmail.com and we will get back to you.