Bằng cách nào mà một lập trình viên có thể phá vỡ được Node, Babel và hàng nghìn dự án chỉ trong 11 dòng JavaScript?

Code từ NPM – cái mà mọi người đang sử dụng

Vào thứ ba, hàng loạt lập trình viên chỉ biết nhìn chằm chằm vào các bản build lỗi khi có ai đó đã giật đổ tháp Jenga của các thư viện Javascript.

Vài giờ trước, Azer Koçulu đã hủy xuất bản ra hơn 250 mô-đun của mình từ NPM, nó là chương trình thông dụng nhất được dùng bởi các dự án JavaScript để quản lý các thư viện. 

Koçulu đã gỡ bỏ mã nguồn của mình bởi vì như chúng tôi được biết, một trong những mô-đun được gọi là Kik đã thu hút sự chú ý của các luật sư đại diện cho ứng dụng nhắn tin cùng tên. 

Theo Koçulu, hồ sơ tố tụng về Kik đã chỉ ra rằng anh ta phải thay đổi tên của mô-đun, nhưng anh ta đã từ chối làm việc đó. Vì vậy các luật sư đã đến gặp các quản trị viên NPM khiếu nại vi phạm bản quyền. Khi NPM lấy đi Kik từ lập trình viên, anh rất tức giận và yêu cầu hủy việc xuất bản tất cả các mô-đun của anh do NPM quản lý. “Tình huống này khiến tôi nhận ra NPM là lãnh thổ riêng biệt của ai đó, nơi công ty có quyền lực hơn bao giờ hết và tôi làm ra đoạn mã bắt nguồn từ việc đưa năng lượng đến mọi người.” Koçulu chia sẻ trên blog.

Đáng tiếc, một trong các thư viện đó chính là left-pad. Đoạn mã dưới đây được đệm thêm vào phía bên trái của chuỗi bằng các số 0 hoặc khoảng trắng. Hàng nghìn dự án khác bao gồm cả Node và Babel đều phụ thuộc vào đoạn mã đó.

Việc lấy đi left-pad khỏi NPM, các ứng dụng và các bits được sử dụng rộng rãi của các cơ sở hạ tầng với mã nguồn mở không thể có được các phần phụ thuộc, do đó chúng bị loại bỏ trong quá trình phát triển và triển khai. Trên toàn thế giới, chỉ trong vòng 1 tháng trước, left-pad được tìm kiếm 2,486,696 lần, theo NPM. Đoạn mã đã trở lên rất phổ biến.

Để sửa lỗi Internet, Laurie Voss, CTO và người đồng sáng lập NPM đã phải thực hiện bước “chưa từng có” chính là khôi phục left-pad 0.0.3 chưa được xuất bản mà các ứng dụng đang yêu cầu. Thông thường, khi một phiên bản cụ thể không được xuất bản, phiên bản đó sẽ biến mất và không thể khôi phục được. Giờ đây, NPM buộc phải hồi sinh phiên bản cụ thể đó để giữ cho nội dung của mọi người được xây dựng và chạy như mong đợi.

“Việc hủy xuất bản là việc chưa từng xuất hiện, chúng tôi đang xem xét mức độ nghiêm trọng và tính chất phổ biến của sự cố lần này và  không được hoàn thành một cách hời hợt.” Voss giải thích khoảng một giờ trước.

“Hành động này khiến cho lợi ích rộng lớn của cộng đồng người dùng NPM mâu thuẫn với mong muốn của một người, nhưng chúng tôi ưu tiên chọn ra yêu cầu của số đông. Toàn bộ tình hình hiện tại đang rất tệ. Chúng tôi sẽ cẩn thận xem xét các vấn đề được nêu ra và công bố bản thu hoạch về lỗi sau đó. 

Trong khi chờ đợi, hàng nghìn dự án mã nguồn mở đã và đang được sửa chữa. Đêm nay tôi sẽ ngủ ngon.”

Một nhà bảo trì mới, người đảm nhiệm tiếp tục chăm sóc left-pad trên NPM, đã yêu cầu khôi phục phiên bản 0.0.3. Trong khi đó, trụ sở tại Oakland của Koçulu đã lưu trữ công việc của anh trên GitHub. Nếu code của bạn vẫn không được tạo sau khi đã khôi phục left-pad, hãy thử chạy xóa bộ nhớ cache npm để bắt kịp các thay đổi.

Và đó là cách phát triển ứng dụng JavaScript hoạt động trong năm 2016. ®

Bài viết được cập nhật ngày 23 tháng 3 tại 1138 PT (1838 UTC)

Người phát ngôn của Kik đã liên lạc để trao đổi về một bài đăng được xuất bản khoảng 30 phút trước trên blog của Mike Roberts, người đứng đầu bộ phận phát ngôn tại Kik, trình bày các khía cạnh của câu chuyện trên đó.

Về cơ bản, biz của ứng dụng nhắn tin cho biết họ sẽ xuất bản một số mã nguồn mở bao gồm một mô-đun NPM cũng có tên là Kik. Điều đó đã đụng chạm tới mô-đun Kik của Koçulu, đó là lý do tại sao nhà phát triển được yêu cầu đổi tên phần mềm của mình. Như chúng ta đã biết, Koçulu đã từ chối, và điều đó dẫn đến cluster-fsck hôm thứ Ba.

Đề cập đến các email mà luật sư của Kik gửi cho Koçulu, Roberts nói: “Từ ngữ mà chúng tôi sử dụng ở đây chưa thực sự phù hợp. Chúng tôi xin lỗi vì đã tạo ra bất kỳ cảm nhận nào không hay, đây chỉ là một yêu cầu lịch sự với mong muốn sử dụng tên Kik trên NPM cho một dự án mã nguồn mở mà chúng tôi đang làm việc phù hợp với tên gọi”.

Tham khảo bài đăng gốc tại đây.

Comments

Add Comment

Recent Projects

The projects we have done for the clients

By using this site you accept the terms of our Cookie Policy . I Accept