Left-Pad (2024)
NPM’s responsibility vs. the author’s
- Many commenters argue the core failure was NPM’s unpublish design and crisis handling, not the author’s actions.
- NPM’s CEO allegedly provided a script to delete all the author’s packages; the author ran it, assuming NPM understood the impact.
- NPM later force‑restored left-pad against the author’s wishes, which some see as a break with FOSS norms and “serving corporate interests” over maintainers.
- NPM is said to “moderate” rather than “curate” packages: they remove malware and fix vulnerabilities but don’t enforce quality.
Micro‑packages and JavaScript culture
- left-pad’s 11 lines became a symbol of an ecosystem overdependent on tiny packages and deep transitive dependency chains.
- Earlier norms (“don’t reinvent the wheel”, “micro-packages + tree-shaking”) drove this style; left-pad is seen as the moment that exposed its fragility.
- Some defend reuse (“why re-write trivial code?”); others insist that writing something like string padding locally is cheaper and safer than adding a dependency.
- Download-count vanity and jokes about “there’s a package for that” further encouraged trivial libraries.
Standard libraries and ecosystem comparisons
- Several blame JavaScript’s historically weak standard library for necessitating micro-packages; padding is cited as something that should have been built-in.
- Others contrast npm with ecosystems like Java/Maven, CPAN, PyPI, etc., which:
- Disallow unpublishing,
- Use stronger namespaces,
- Often run mirrored, internal registries.
- Lodash, jQuery, Guava, Apache Commons are cited as examples of richer utility libraries that reduce dependency sprawl.
Supply-chain risk, vendoring, and mirroring
- The incident is widely framed as a supply‑chain wake‑up call: relying on external registries and tiny third‑party packages is a systemic risk.
- Some now vendor all dependencies or require offline‑capable builds; others note that many organizations still don’t mirror registries.
- The deeper concern is that dependency trees are “impossible to audit” and can be weaponized (through unpublishes or malicious updates).
Kik naming dispute and trademarks
- The triggering event—NPM transferring the “kik” package name to a company after legal threats—remains controversial.
- One side emphasizes trademark law and the need to defend marks; another views Kik’s behavior as bullying, with NPM capitulating.
- Commenters note the irony that the “kik” package is now essentially a dead, placeholder security package.
Unix philosophy and package granularity
- The author’s “Unix philosophy” justification for many tiny packages is heavily debated.
- Critics argue “do one thing well” is too vague and was misapplied to 10‑line libraries whose overhead exceeds their benefit.
- Others counter that the real Unix ideas are about clear scope, composability, and testability—not libraries with a single function.
Ethics, motivation, and Al‑Ghazali
- The author frames his decision as value‑driven rather than angry, referencing Al‑Ghazali’s writing on heart‑led decision‑making.
- Some readers find this insightful and appreciate the philosophical framing; others see it as pompous or evasive.
- There’s discussion of whether it’s “antisocial” to unpublish widely-used code vs. “antisocial” to depend on strangers’ packages and then demand they never withdraw them.
Personal impact and attitudes toward JS
- Some say the incident nudged them away from JavaScript or confirmed suspicions about the ecosystem’s fashion‑driven, fragile practices.
- Others view it positively as a necessary shock that improved awareness of dependency risk and corporate control.
- The author’s shift from FOSS passion to a focus on business/marketing divides opinion: some see it as understandable self‑protection; others as a regrettable loss for open source.