Ryan Dahl: Designfehler von Node.js und sein neues Projekt
Ryan Dahl, Erfinder von Node.js, sprach in einem Vortrag über zehn Designfehler der Laufzeitumgebung. Er stellte ebenfalls einen möglichen Nachfolger vor: Deno.
- Björn Bohn
Im Rahmen der JSConf EU 2018 hat Ryan Dahl, Erfinder der JavaScript-Laufzeitumgebung Node.js, ĂĽber zehn Designfehler bei der Entwicklung gesprochen. AuĂźerdem nutzte Dahl, der schon seit 2012 nicht mehr groĂź im Node.js-Projekt involviert ist, die Gelegenheit, sein neues Projekt vorzustellen, das diese Probleme beheben soll: Deno, eine auf Googles JavaScript-Implementierung V8 gebaute TypeScript-Laufzeitumgebung.
Build-System größter Fehler von Node.js
In seinem Vortrag listet Dahl zehn Dinge auf, die bei der Entwicklung von Node.js schiefgegangen seien. Neben dem Entfernen von Promises im Februar 2012 bis hin zu fehlenden Sicherheitsfunktionen bezeichnet Dahl die Verwendung von GYP (Generate your project) als Build-System als größten Fehler der Laufzeitumgebung. Node.js wechselte zu GYP, da V8 (via Chrome) es damals ebenfalls nutzte. Allerdings wechselte Chrome später zu GN, wodurch Node.js der einzige GYP-Nutzer blieb. Das Build-System macht Node.js laut Dahl unnötig komplex, und der Einsatz sei für die Nutzer schrecklich.
Dahl entschuldigt sich auch für den Einsatz von node_modules. Das Verzeichnis sei in den meisten Fällen zu groß, und es weiche sehr stark von der Browser-Semantik ab. Darüber hinaus verkompliziere es den Model-Resolution-Algorhithmus einfach viel zu sehr. Auch das Hinzufügen von Index.js sei ein Fehler gewesen: "Ich dachte es wäre ganz nett. Ich habe mittlerweile gelernt, dass man Dinge nicht hinzufügen sollte, nur weil sie ganz nett sind. Man bereut es immer", so Dahl.
Neues Projekt als Alternative: Deno
Warum Dahl, der das Node.js-Projekt bereits im Jahr 2012 an Isaac Z. Schlueter von NPM ĂĽbergab, sechs Jahre nach seinem Weggang ĂĽber die Fehler der Laufzeitumgebung sprach, sollte klar sein: Nach einer 15-minĂĽtigen Auflistung darĂĽber, was alles schlecht in Node.js laufe, stellte Dahl sein neues Projekt Deno vor.
Dabei handelt es sich um eine Laufzeitumgebung für TypeScript auf V8, die vor allem Sicherheitsaspekte in den Vordergrund rücken soll. Das Modulsystem soll deutlich einfacher werden – eine Kompatibilität mit Node.js-Modulen wird nicht angestrebt. Es handelt sich allerdings noch um eine sehr frühe Version und sollte auf keinen Fall eingesetzt werden. Im Auge behalten sollte man es allerdings schon: Auch wenn Dahl von vielen Fehlern spricht, kann man jedoch Node.js die Erfolgsgeschichte nicht nehmen. (bbo)