Internet toàn cầu vận hành dựa trên hàng triệu dòng mã nguồn mở, nhưng đôi khi cả hệ thống khổng lồ ấy lại phụ thuộc vào một cá nhân duy nhất. Bi kịch core-js chính là minh chứng đau lòng nhất cho hiện tượng này. Denis Pushkarev, người sáng lập thư viện polyfill nổi tiếng nhất thế giới, đang đối mặt với cuộc khủng hoảng cá nhân nghiêm trọng. Anh ta bị giam giữ tại Nga, mắc kẹt với các khoản nợ pháp lý khổng lồ và không thể tiếp tục di chuyển tự do.

Vấn đề không chỉ nằm ở số phận cá nhân của Pushkarev mà còn ở sự an toàn của hạ tầng web toàn cầu. Khi một thư viện quan trọng như core-js nằm trong tầm kiểm soát của một quốc gia có rủi ro địa chính trị cao, cộng đồng công nghệ cần phải tỉnh táo. Bài viết này sẽ đi sâu vào phân tích bi kịch core-js, lý do tại sao tác giả nên buông bỏ dự án đã hoàn thành sứ mệnh, và những bài học thiết thực dành cho lập trình viên Việt Nam.

Bi kịch core-js: Câu chuyện của một người duy trì

Denis Pushkarev là công dân Nga, người đã dành hơn một thập kỷ để duy trì dự án này. Năm 2020, anh quyết định chuyển về sống tại quê hương để giảm chi phí sinh hoạt. Quyết định này nghe có vẻ hợp lý về mặt tài chính cá nhân, nhưng lại mang lại hậu quả khôn lường khi bối cảnh địa chính trị thay đổi nhanh chóng sau đó.

Sau khi quay về Nga, chiến tranh nổ ra và các lệnh trừng phạt kinh tế từ phương Tây được áp đặt. Điều này khiến việc nhận hỗ trợ tài chính từ nước ngoài trở nên cực kỳ khó khăn, thậm chí là bất khả thi đối với nhiều cá nhân. Tệ hơn nữa, Pushkarev gặp phải một tai nạn giao thông nghiêm trọng ngay tại Nga, dẫn đến cái chết của một phụ nữ.

Anh khẳng định nạn nhân say rượu và mình không có lỗi trong vụ va chạm. Tuy nhiên, theo quy định pháp luật Nga, nguyên tắc “có tội trước khi chứng minh vô tội” thường được áp dụng trong các vụ án giao thông. Kết quả là Pushkarev bị coi là có trách nhiệm pháp lý.

Anh phải đối mặt với một khoản bồi thường dân sự khổng lồ và bị kết án mười tháng tù giam trong một nhà máy lao động khắc nghiệt. Hiện tại, Pushkarev không thể rời khỏi lãnh thổ Nga cho đến khi anh trả hết khoản nợ lớn này. Anh có vợ và con nhỏ, nhưng thu nhập từ core-js gần như bằng không dù gói thư viện đã được tải xuống chín tỷ lần.

Các lệnh trừng phạt kinh tế càng làm phức tạp hóa vấn đề khi anh cố gắng tìm kiếm nguồn lực bên ngoài. Tình huống này biến một dự án nguồn mở trở thành gánh nặng cho chính tác giả, đẩy anh vào thế bí về tài chính và tự do cá nhân. Đây là một phần cốt lõi của bi kịch core-js mà ít ai chú ý đến.

Core-js là gì và vai trò lịch sử của nó

Core-js là một thư viện polyfill chuyên biệt cho ngôn ngữ lập trình JavaScript. Polyfill hoạt động như một lớp đệm kỹ thuật, giúp các trình duyệt web đời cũ hỗ trợ các tính năng hiện đại của chuẩn ECMAScript. Ví dụ điển hình là phương thức Array.prototype.includes(). Nếu bạn viết code sử dụng hàm này trên Internet Explorer 11 (IE11), trình duyệt sẽ báo lỗi vì bản thân nó không nhận diện được cú pháp mới.

Core-js sẽ tự động chèn đoạn mã bổ sung để tạo ra hàm đó nếu chưa tồn tại. Điều này giúp lập trình viên viết một mã nguồn duy nhất mà không cần lo lắng về việc trình duyệt của người dùng có tương thích hay không. Khi core-js ra mắt vào năm 2012, bối cảnh trình duyệt web cực kỳ hỗn loạn. Microsoft IE vẫn chiếm thị phần áp đảo, trong khi các đối thủ khác cập nhật chậm chạp.

Các nhà phát triển cần một giải pháp trung gian để đảm bảo ứng dụng chạy mượt mà trên mọi nền tảng. Core-js đã trở thành tiêu chuẩn ngầm định, được nhúng sâu vào chuỗi phụ thuộc của hàng triệu dự án phần mềm trên thế giới. Theo tuyên bố của Denis Pushkarev, khoảng 80% trong số 1.000 trang web lớn nhất thế giới hiện đang sử dụng core-js.

Sự phổ biến này có nghĩa là gói thư viện gián tiếp hỗ trợ hàng tỷ đô la doanh thu mỗi năm cho nền kinh tế số toàn cầu. Tuy nhiên, sự thành công vang dội đó lại không đi kèm với nguồn tài trợ tương xứng cho tác giả gốc. Đây chính là điểm khởi đầu cho câu chuyện bi kịch core-js đầy nghịch lý.

Rủi ro bảo mật tiềm ẩn cho chuỗi cung ứng

Một khía cạnh đáng lo ngại khác liên quan đến bi kịch core-js là vị trí địa lý và tình trạng pháp lý của người duy trì. Pushkarev đang sống trong tầm với của cơ quan an ninh Nga. Trong bối cảnh căng thẳng giữa các cường quốc công nghệ, điều này tạo ra một rủi ro bảo mật nghiêm trọng cho toàn bộ hệ sinh thái web.

Nếu anh ta bị ép buộc hoặc thay thế bởi một thực thể thù địch, core-js có thể trở thành công cụ phát tán mã độc tinh vi. Vì core-js nằm sâu trong chuỗi phụ thuộc của nhiều trang web lớn, một cuộc tấn công thông qua thư viện này sẽ ảnh hưởng đến hàng triệu người dùng cuối cùng mà họ không hề hay biết.

Đối với các doanh nghiệp Việt Nam sử dụng core-js, đây là một lời nhắc nhở về sự cần thiết của việc kiểm tra chuỗi cung ứng phần mềm. Việc phụ thuộc vào một người duy nhất trong một quốc gia có rủi ro địa chính trị cao là điều không bền vững. Các tổ chức cần đánh giá lại mức độ rủi ro khi tích hợp các thư viện hạ tầng vào hệ thống của mình.

Bảo mật không chỉ là mã nguồn sạch mà còn là sự tin cậy vào người viết mã. Khi người viết mã bị tước đoạt quyền tự chủ, sự tin tưởng đó cũng lung lay theo. Rủi ro này không chỉ mang tính lý thuyết mà có thể trở thành hiện thực nếu tình hình chính trị thay đổi.

Tại sao core-js không còn cần thiết như trước?

Mặc dù core-js vẫn được sử dụng rộng rãi, nhu cầu thực tế đã giảm đáng kể so với thời kỳ đỉnh cao. Lý do chính là các trình duyệt hiện đại đã hỗ trợ hầu hết các tính năng JavaScript mới. Chrome, Firefox, Safari và Edge đều cập nhật thường xuyên và mạnh mẽ hơn bao giờ hết.

Người dùng ngày nay không còn phải lo lắng về IE6 hay các trình duyệt lỗi thời khác. Vào năm 2015, hầu như mọi trang web đều cần core-js để hoạt động ổn định. Đến năm 2020, chỉ đa số cần. Và đến năm 2026, chỉ một số trang web nhất định – như các hệ thống doanh nghiệp cũ hoặc các ứng dụng yêu cầu tương thích với những trình duyệt rất cũ – mới thực sự phụ thuộc vào core-js.

Nhiều trang web lớn vẫn ship core-js trong bundle, nhưng thực tế họ chỉ dùng một phần nhỏ. Các công cụ build hiện đại chỉ inject đúng các polyfill cần thiết. Vì vậy, việc 80% top 1.000 trang web có core-js trong chuỗi phụ thuộc không đồng nghĩa với việc họ thực sự cần nó. Phần lớn chỉ là dư thừa từ quá khứ.

Đây là dấu hiệu cho thấy sứ mệnh của core-js đã hoàn thành. Nó đã giúp thế giới chuyển đổi từ các trình duyệt cũ sang chuẩn mới. Sự tồn tại của nó ngày nay là di sản hơn là nhu cầu cấp thiết. Bi kịch ở chỗ người duy trì vẫn ôm lấy di sản đó trong khi nhu cầu thực tế đã phai nhạt.

Lời kêu gọi tài trợ và những vấn đề đạo đức

Pushkarev thường xuyên kêu gọi tài trợ từ cộng đồng và các tập đoàn công nghệ. Anh ta lập luận rằng các tập đoàn lớn kiếm được hàng tỷ đô nhờ core-js, nhưng anh ta gần như không nhận được gì. Anh ta cho rằng nếu không có tài trợ, core-js có thể bị bỏ rơi, gây ra hậu quả cho toàn bộ Internet.

Tuy nhiên, lập luận này có những điểm yếu về mặt logic và đạo đức trong thế giới mã nguồn mở:

  • Không ai ép Pushkarev chọn giấy phép MIT. Anh ta tự nguyện phát hành core-js dưới giấy phép cho phép sử dụng miễn phí.
  • Không ai ép anh ta tạo ra core-js. Đó là sự lựa chọn cá nhân xuất phát từ đam mê hoặc nhu cầu cá nhân.
  • Không ai ép anh ta tiếp tục duy trì. Anh ta hoàn toàn có thể dừng lại bất cứ lúc nào nếu cảm thấy không đủ sức.

Trong thế giới mã nguồn mở, không ai có quyền được đền bù cho công việc tình nguyện. Pushkarev đã từ chối nhiều cơ hội việc làm vì dành thời gian cho core-js. Ngay cả gia đình anh ta cũng khuyên anh ta nên làm công việc tạo ra thu nhập. Nhưng anh ta vẫn bám lấy core-js vì đó là đứa con tinh thần và vì anh ta thích sự nổi tiếng khi duy trì một hạ tầng Internet quan trọng.

Việc mong đợi tiền bạc từ việc đóng góp mã nguồn miễn phí là một tư duy sai lầm. Nếu dự án quá nặng nề, cách tốt nhất là chuyển giao hoặc dừng lại, chứ không phải than vãn về thiếu thốn. Sự cam kết trọn đời không phải là nghĩa vụ bắt buộc đối với người làm开源.

bi kịch core-js – hình ảnh 2
bi kịch core-js – Ảnh từ LowEndBox.

Bài học cho cộng đồng lập trình Việt Nam

Câu chuyện của core-js mang lại nhiều bài học quý giá cho các lập trình viên và doanh nghiệp Việt Nam trong kỷ nguyên số:

Bài học Mô tả chi tiết
Không phụ thuộc vào một người Các dự án quan trọng cần có nhiều người duy trì hoặc kế hoạch dự phòng rõ ràng để tránh rủi ro đơn điểm.
Kiểm tra chuỗi phụ thuộc Hiểu rõ các thư viện bạn dùng đến từ đâu, ai bảo trì và tình trạng pháp lý của họ.
Tài trợ cho nguồn mở Nếu bạn sử dụng một gói miễn phí, hãy cân nhắc đóng góp tài chính hoặc công sức để duy trì.
Biết khi nào nên dừng Dự án nguồn mở không phải là cam kết trọn đời. Buông bỏ đúng lúc là cách tốt cho cả tác giả và người dùng.

Đối với các lập trình viên Việt Nam, việc sử dụng core-js có thể là một thói quen mặc định. Hãy cân nhắc xem liệu bạn có thực sự cần polyfill cho các trình duyệt cũ không. Nếu đối tượng người dùng của bạn chủ yếu dùng Chrome, thì core-js chỉ là gánh nặng cho hiệu năng và bảo mật.

Các doanh nghiệp cần xây dựng văn hóa tự chủ công nghệ. Đừng để một thư viện nhỏ bé quyết định vận mệnh hệ thống của mình. Đánh giá rủi ro địa chính trị và nguồn gốc mã nguồn là bước đi bắt buộc trong kỷ nguyên số.

Nghịch lý của core-js: càng thành công càng vô hình

Một trong những điểm thú vị nhất về core-js là sự thành công của nó đã khiến nó trở nên vô hình. Khi một thư viện trở thành phụ thuộc gián tiếp ở nhiều tầng sâu, người dùng cuối không hề biết đến sự tồn tại của nó. Điều này khiến việc xây dựng cộng đồng tài trợ trở nên cực kỳ khó khăn.

Hàng trăm triệu người dùng Internet hưởng lợi từ core-js mà không biết tên nó. Pushkarev không thể kêu gọi sự ủng hộ từ những người không biết mình đang dùng sản phẩm của anh ta. Đây là một vấn đề cố hữu của các thư viện hạ tầng.

Thư viện thành công nhất thường là thư viện ít được biết đến nhất. Sự vô hình này tạo ra một vòng lặp nơi người dùng không thấy giá trị trực tiếp nên không muốn trả tiền, trong khi tác giả lại cần tiền để sống. Nghịch lý này làm trầm trọng thêm bi kịch core-js.

Thời điểm để buông tay

Pushkarev đã duy trì core-js trong 14 năm. Anh ta đã cống hiến rất nhiều cho cộng đồng. Nhưng đến một lúc nào đó, cần phải nhìn nhận thực tế: core-js đã hoàn thành sứ mệnh của mình. Các trình duyệt hiện đại hỗ trợ JavaScript tốt hơn bao giờ hết. Nhu cầu về polyfill đã giảm mạnh.

Thay vì tiếp tục ôm ấp một dự án đang trở nên dư thừa, Pushkarev nên buông tay, tập trung vào gia đình và các cơ hội tài chính khác. Anh ta không nợ Internet điều gì. Và Internet cũng không nợ anh ta điều gì. Việc giữ chặt dự án chỉ kéo dài nỗi đau cá nhân.

Nếu các tập đoàn lớn thực sự cần core-js, họ sẽ tự tìm cách duy trì nó. Họ có thể thuê nhóm riêng hoặc mua lại dự án. Nếu không, đó là dấu hiệu cho thấy thế giới đã sẵn sàng sống không có nó. Buông bỏ là cách để cứu lấy chính mình.

Câu hỏi thường gặp (FAQ)

Tôi có nên tiếp tục sử dụng core-js trong dự án mới không?

Không, trừ khi bạn cần hỗ trợ các trình duyệt rất cũ như IE11. Với các dự án hiện đại, bạn có thể dùng các tính năng JavaScript mới mà không cần polyfill. Hãy kiểm tra mục tiêu trình duyệt của bạn trước khi quyết định.

Làm thế nào để loại bỏ core-js khỏi dự án hiện tại?

Bạn có thể cấu hình build tool (Webpack, Babel, etc.) để không inject polyfill không cần thiết. Sử dụng core-js-compat để xác định chính xác các polyfill cần thiết dựa trên danh sách trình duyệt bạn hỗ trợ.

Denis Pushkarev có thể gặp nguy hiểm gì?

Anh ta đang ở Nga với một bản án và khoản nợ lớn. Ngoài ra, anh ta có thể bị ép buộc bởi cơ quan an ninh. Đây là rủi ro bảo mật cho các dự án phụ thuộc vào core-js nếu xảy ra xung đột địa chính trị.

Cộng đồng nguồn mở có thể học được gì từ câu chuyện này?

Cần có cơ chế tài trợ bền vững cho các thư viện hạ tầng. Người dùng nên đóng góp tài chính hoặc công sức. Và các tác giả nên biết khi nào cần dừng lại để tránh kiệt sức và bi kịch.

Kết luận

Bi kịch của core-js là một câu chuyện buồn nhưng mang tính giáo dục cao. Denis Pushkarev đã tạo ra một thư viện vĩ đại, nhưng sự vĩ đại đó lại trở thành gánh nặng cho chính anh ta. Core-js đã thay đổi thế giới web, nhưng giờ đây nó đã trở thành một di tích của quá khứ.

Đối với lập trình viên Việt Nam, hãy nhìn vào câu chuyện này để hiểu rõ hơn về trách nhiệm khi sử dụng mã nguồn mở, và cũng để biết trân trọng những người duy trì các thư viện mà chúng ta dùng hàng ngày. Nhưng trên hết, hãy nhớ rằng không ai có nghĩa vụ phải duy trì một dự án mãi mãi. Pushkarev xứng đáng được buông tay để tìm lại bình yên.

Nguồn: LowEndBox.