5 điều Ryan Dahl chia sẻ rằng anh cảm thấy "hối hận" vì đã làm với Node.js

5 điều Ryan Dahl chia sẻ rằng anh cảm thấy "hối hận" vì đã làm với Node.js

Tin ngắn hàng ngày dành cho bạn
  • Tiếp tục cập nhật vụ kiện giữa nhóm Deno và Oracle về cái tên JavaScript: Có vẻ như Deno đang yếu thế vì toà án đã bác bỏ đơn khiếu nại của nhóm Deno. Tuy nhiên trong tháng 8, họ (Oracle) phải có trách nhiệm giải trình từng lý do, thừa nhận hoặc phủ nhận những cáo buộc mà nhóm Deno trình ra trong vụ kiện.

    JavaScript™ Trademark Update

    » Xem thêm
  • Tầm này năm ngoái chắc đang miệt mài chạy. Năm nay bận bù đầu không còn hứng thú nữa. Cơ mà ngồi nhiều thì cái bụng lại to ra, ục ịch, tăng cân. Thôi thì cố gắng đi bộ mỗi ngày cho cơ bắp với đầu óc nó thư giãn một tí 😮‍💨

    Mục tiêu hơn 8k bước 👌

    » Xem thêm
  • Chỉ một thay đổi nhỏ trên trang chủ của Node.js mà khiến cộng đồng dậy sóng. Cụ thể khi truy cập vào trang chủ nodejs.org bạn sẽ thấy một nút "Get security support for Node.js 18 and below" ngay phía dưới nút "Download". Điều đáng nói ở đây là nó dẫn đến một trang web bên ngoài Node.js, nội dung nói về một dịch vụ cung cấp giải pháp bảo mật cho các phiên bản Node.js cũ hơn, vốn không còn được nhận các bản cập nhật bảo mật. Nó còn nổi bật hơn cả nút Tải xuống.

    Cộng đồng đã lên án hành vi này và nói rằng hành vi này hơi "lố", nên hỏi ý kiến của họ trước khi quyết định. Còn về phía Node, họ nói rằng điều này là phù hợp bởi vì đó là đối tác tài trợ rất lớn của họ. Đến thời điểm hiện tại thì liên kết vẫn còn tồn tại. Chờ xem diễn biến tiếp theo như thế nào nhé.

    Node.js Homepage Adds Paid Support Link, Prompting Contributor Pushback

    » Xem thêm

Vấn đề

Node.js được giới thiệu lần đầu tiên bởi Ryan Dahl vào năm 2009. Và 9 năm sau đó cũng là Ryan Dahl nhưng lần này anh mang đến một nền tảng khác với tên gọi là Deno. Giống như Node, Deno cung cấp một môi trường chạy Javascript trên máy chủ cực kì mạnh mẽ. Trong một video từ năm 2018, Ryan Dahl đã có một bài thuyết trình về "10 điều tôi tiếc nuối về Node.js" ngay trước khi anh công bố Deno.

Vậy tại sao Deno lại ra đời nếu như Node.js đã đủ tốt? Bài viết ngày hôm nay tôi xin phép được trích ra 5 điều mà Ryan Dahl hối hận khi đã làm/không làm với Node.js.

NPM và package.json

NPM & package.json

Trải qua nhiều thăng trầm thì Node.js và npm là bộ đôi luôn đi cùng nhau, npm được mệnh danh là kho lưu trữ những phụ thuộc "depency" cho node. Npm là một kho lưu trữ tập trung và bị kiểm soát.

Chính vì tập trung nên npm nhiều lần trở thành mục tiêu cho các cuộc tấn công nhằm vào các gói để gắn mã độc. Như vụ Popular NPM Package Hijacked to Publish Crypto-mining Malware hay các vụ tấn công nhằm xoá dữ liệu người dùng như Dev Sabotages Popular NPM Package to Protest Russian Invasion.

Npm đã phát minh ra package.json, đó là một tập nhằm ghi lại những thông tin như các package được sử dụng, thông tin giấy phép, repository, description... và hàng tá những thông tin mà có vẻ không phải tất cả đều cần thiết.

node_modules

node_modules black hole

Đã bao giờ bạn nghe đến việc so sánh node_modules với hố đen vũ trụ? Hay nếu bạn có tầm cỡ 10 dự án Node.js trong máy đồng nghĩa với bạn sẵn sàng có thêm 10 hố đen.

node_modules là thư mục được sinh ra để lưu lại tất cả những package cần dùng trong dự án, nó không sử dụng một thứ gọi là NODE_PATH để lưu trữ tập trung mà sẽ lưu vào mỗi dự án. Chính cha đẻ của Node.js cũng thừa nhận node_modules là một sai lầm không thể nào sửa chữa được và xin lỗi về điều đó.

Promise

Javascript Promise

Node.js đã không gắn bó với Promise ngay từ đầu, bằng chứng là có rất nhiều API trong node vẫn sử dụng callback để xử lý bất đồng bộ. Ngày nay Promise phát huy rất nhiều tác dụng cộng với async/await và điều đó làm cho cha đẻ của Node.js hối hận nhưng khó có thể sửa chữa lại được.

Security

Node.js security

Nếu bạn chạy một ứng dụng Node.js nó sẽ có toàn quyền truy cập vào các file/folder, mạng và các biến môi trường. Rõ ràng điều này có thể gây mất an toàn nếu như vô tình chạy một dự án đã bị dính mã độc, hoặc những kẻ tấn công có thể lợi dụng việc này để khai thác các máy chủ Node.js.

The Build System (GYP)

GYP

Cha đẻ của Node.js đã chia sẻ rằng GYP là một công cụ rất khó để xây dựng nhưng vì ban đầu V8 của Chrome sử dụng GYP, sau đó Chrome đã loại bỏ GYP để lại Node.js là người dùng GYP duy nhất.

Để tạo được những công việc xử lý ngoài Event Loop chúng ta phải trực tiếp thao tác với V8 bằng các dựng các Addon C++, nhiều người đã phàn nàn về điều đó và đề nghị chuyển sang một giải pháp giúp chuyển đổi dễ hơn (Foreign Function Interface (FFI)) thế nhưng thật đáng tiếc rằng anh đã bỏ qua chúng.

Anh cũng chia sẻ thêm anh không thích libuv bởi vì nó dùng autotools!?

Tổng kết

Có những sai lầm có thể sửa chữa nhưng có những sai lầm thì không, bài viết là 5 sai lầm mà cha đẻ của Node.js chia sẻ cho chúng ta biết anh hối hận những gì. Nhưng dù sao thì Node.js cũng đã trưởng thành và có chỗ đứng nhất định trong cộng đồng và doanh nghiệp trên thế giới.

Tài liệu tham khảo:

Cao cấp
Hello

Tôi & khao khát "chơi chữ"

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (3)

Nội dung bình luận...
Avatar
Thành Đỗ2 năm trước

Có một sự thật là Ryan đã khắc phục tất cả vấn đề trên với Deno. Mà de-no <=> no-de 😁

Trả lời
Avatar
Long Domi2 năm trước

Cái node gyp kia luôn là ác mộng, lúc build lỗi ấy

Trả lời
Avatar
Vũ Mạnh Đức2 năm trước

Node_modules so sánh với black hole hài hước

Trả lời