Gentoo chính thức khai tử gói Chromium sau nhiều năm vật lộn
Các nhà bảo trì gói Chromium của Gentoo đã tuyên bố \"last rites\" (nghi thức tiễn biệt) cho gói này sau nhiều năm chật vật theo kịp tốc độ phát hành và hệ thống build phức tạp của dự án. Sự việc làm dấy lên lo ngại về gánh nặng bảo trì trình duyệt mã nguồn mở đối với các bản phân phối Linux nhỏ, vốn phụ thuộc vào tình nguyện viên.
Gentoo chính thức khai tử gói Chromium sau nhiều năm vật lộn
Các nhà bảo trì gói Chromium của Gentoo đã chính thức tuyên bố "last rites" — nghi thức tiễn biệt trong thuật ngữ của Gentoo — đối với gói trình duyệt này sau nhiều năm chật vật theo kịp tốc độ phát hành và hệ thống build phức tạp của dự án.
Động thái này phản ánh một thực tế đáng lo ngại: việc đóng gói các trình duyệt mã nguồn mở ngày càng trở thành gánh nặng quá lớn đối với các bản phân phối Linux, đặc biệt là những dự án dựa trên đóng góp tình nguyện như Gentoo.
Chromium — cơn ác mộng của các nhà đóng gói
Chromium là dự án mã nguồn mở nền tảng cho trình duyệt Chrome của Google. Đây là trình duyệt được nhiều người dùng Linux ưa chuộng, nhưng cũng nổi tiếng là cực kỳ khó đóng gói.
Lý do nằm ở nhiều yếu tố:
- Hệ thống build phức tạp, đòi hỏi nhiều công cụ chuyên biệt
- Dự án tự bundle (đóng gói kèm) rất nhiều thư viện phụ thuộc
- Tần suất phát hành dày đặc: nhánh chính mới khoảng hai tuần một lần, phiên bản mới mỗi tuần
- Ngày càng nhiều phụ thuộc vào Rust và Go, làm tăng độ phức tạp
Gentoo vốn tập trung vào việc cho phép người dùng tự build phần mềm từ mã nguồn thông qua công cụ quản lý gói Portage. Các nhà đóng gói Gentoo viết các ebuild — những tệp văn bản theo cú pháp giống Bash — chứa thông tin cần thiết để Portage build phần mềm. Người dùng sau đó tự build bằng lệnh emerge.
Với Chromium, người dùng có thể dùng USE flag -bundled-toolchain để buộc Portage dùng phiên bản Clang của hệ thống thay vì bản đi kèm của dự án. Đây là tùy chọn trên hệ x86-64, nhưng bắt buộc trên các kiến trúc khác, vì toolchain đi kèm của Chromium chỉ hỗ trợ x86-64.
"Last rites" — khi người bảo trì buông tay
Nhiều bản phân phối như Arch Linux, Debian hay Fedora dùng thuật ngữ "orphan" (mồ côi) để chỉ các gói bị người bảo trì bỏ rơi. Gentoo có cách nói kịch tính hơn: người bảo trì tuyên bố "last rites" trên danh sách email gentoo-dev-announce để thông báo gói sẽ không còn được bảo trì, đồng thời tạo cơ hội cho các nhà phát triển khác nhận trách nhiệm.
Sau khi tuyên bố last rites, ebuild của gói sẽ bị mask (che) trong kho ebuild của Gentoo để người dùng không vô tình cài đặt một gói không còn được bảo trì. Người dùng đã cài đặt và cố gắng nâng cấp sẽ nhận được cảnh báo.
Người bảo trì gói Chromium, Sam James, đã tuyên bố last rites vào ngày 24 tháng 9, sau một cuộc trao đổi căng thẳng kéo dài trong báo cáo lỗi do Roman Žilka mở.
Căng thẳng leo thang
Ngày 9 tháng 9, Žilka phàn nàn rằng phiên bản ổn định mới nhất của ebuild Chromium đã lỗi thời, chứa tới 602 lỗ hổng bảo mật đã biết ở mọi mức độ nghiêm trọng. Ông kêu gọi "ai đó có chuyên môn" phải hành động.
Ông đính kèm một ebuild cho phiên bản Chromium mới hơn, nhưng lưu ý rằng nó không hoạt động nếu người dùng build với USE flag -bundled-toolchain.
James đáp lại thẳng thắn:
"Chromium là cơn ác mộng khi bảo trì dưới dạng gói mã nguồn. Đây rõ ràng là gói ngốn người bảo trì nhiều nhất trong Gentoo."
Ông cho biết các nhà bảo trì đã nhiều lần định tuyên bố last rites cho Chromium trong những năm qua vì quá khó cập nhật, và nếu Žilka muốn hỗ trợ thì luôn được chào đón.
Thực tế, Žilka đã từng mở báo cáo lỗi tương tự vào tháng 8, phàn nàn về số lượng lỗ hổng trong ebuild Chromium. Khi đó James trả lời rằng gói này vốn luôn khó bảo trì, "và giờ họ còn thêm cả Go vào danh sách phụ thuộc nữa".
Trước đó nữa, Žilka cũng xuất hiện trong báo cáo lỗi do Matt Jolly mở để phàn nàn rằng "quy trình cập nhật cần được sửa, để những sự việc như thế này không tái diễn với các gói quan trọng bậc nhất như vậy".
Jolly đáp rằng nhóm bảo trì là các tình nguyện viên làm hết sức mình, nhưng "lỗi build, yếu tố con người và thời gian rảnh hạn hẹp của tôi là những nguyên nhân chính gây chậm trễ". Cách tốt nhất để thay đổi tình hình, ông nói, là Žilka tự nguyện giúp sức.
Thử và sai
Gentoo có nhiều kho bên thứ ba gọi là overlay, cung cấp các ebuild bổ sung. Ngày 11 tháng 9, Nick Reale cho biết đã thử ebuild cho phiên bản Chromium mới hơn từ các overlay Bentoo và Fireburn nhưng không thành công. Vài ngày sau ông báo cáo đã thành công với ebuild của Bentoo cùng một bộ USE flag cụ thể.
Ngày 18 tháng 9, François Valenduc bình luận rằng phiên bản 153.0.8010.47 của Chromium đã ra mắt và đã có mặt trên Arch Linux, openSUSE, SUSE và Ubuntu, trong khi "chúng tôi vẫn đang chờ Gentoo bất chấp mọi đề xuất đưa ra ở đây".
James trả lời rằng chưa nhà bảo trì nào có thời gian xem xét vấn đề, và các bản vá được gửi kèm "hữu ích và đáng trân trọng, nhưng không đơn giản chỉ là lấy về rồi commit". Người dùng sẽ phàn nàn nếu ebuild chưa được kiểm tra mà đã hỏng trên máy họ.
"Nó sẽ xong khi nó xong, nhưng nhiều khả năng sẽ bị last-rites nếu không ai quan tâm xử lý theo cách mà những việc này đòi hỏi."
Valenduc thừa nhận không thể đảm nhận việc bảo trì, nhưng cho rằng "lấy ebuild từ overlay bentoo không khó đến vậy... Chỉ là bực mình khi thấy Gentoo không có cập nhật nào". James đáp rằng một ebuild chạy được trên máy Valenduc không có nghĩa mọi USE flag đều hoạt động. Ông nói thêm rằng chưa ai gửi bản vá cho ebuild của Gentoo, nghĩa là nhóm bảo trì phải tự "dịch ngược" các thay đổi bằng cách so sánh ebuild — một khối lượng công việc không hề nhỏ. Valenduc thừa nhận không thể kiểm tra mọi USE flag vì mỗi lần build Chromium trên laptop mất 15 đến 16 giờ.
Ngày 24 tháng 9, Žilka bình luận: "Thật nực cười". Vài phút sau, James trả lời "Được thôi", rồi tuyên bố last rites cho gói này.
Có thể giữ lại không?
Maciej S. Szmigiero hỏi liệu có thể giữ ebuild trong kho Gentoo và chỉ tuyên bố nó được bảo trì ở mức "best effort" hay không: "Loại bỏ khả năng build/vá Chromium là mất mát khổng lồ cho môi trường desktop Gentoo". James cho rằng điều đó không khả thi, vì lời giải thích rằng Chromium do tình nguyện viên bảo trì đã không được chấp nhận.
Ai cũng có thể bảo trì ebuild trong kho khác, nhưng như vậy họ phải tự làm hoặc chấp nhận chất lượng thấp hơn. Ông chỉ ra rằng các ebuild từ overlay Bentoo được nhắc đến có vẻ được tự động hóa mạnh và đã bỏ sót một số bản vá trong phiên bản Gentoo. "Sao chép ebuild thì ổn cho đến khi nó không còn ổn nữa."
James nói thêm rằng ai đó vẫn có thể nhận gói Chromium trước khi hết thời hạn last-rites vào ngày 24 tháng 10, hoặc gói có thể được phục hồi trong tương lai — nhưng ông không muốn điều đó xảy ra nếu không có kế hoạch bảo trì bền vững.
"Chromium có lịch sử đốt cháy các nhà bảo trì trong Gentoo vì tốc độ thay đổi quá cao ở thượng nguồn."
Matt Whitlock đặt câu hỏi liệu có thể giảm yếu tố kiệt sức này bằng cách loại bỏ phần lớn USE flag của Chromium, hay ngừng tách các thư viện bên thứ ba:
"Về cơ bản, điều tôi hỏi là: liệu chúng ta có thể từ bỏ toàn bộ sự linh hoạt mà chúng ta đã quen với www-client/chromium, để đổi lấy một gói thực sự có thể bảo trì được nhưng vẫn được build từ mã nguồn bằng một toolchain không phân phối dưới dạng nhị phân mờ đục?"
Ông nói thêm rằng một phần vấn đề là các nhà phát triển thượng nguồn "không kiểm tra bản build với bất kỳ tính năng 'tùy chọn' nào bị vô hiệu hóa". Điều đó đặt trách nhiệm lên vai các nhà bảo trì hạ nguồn.
Độ phức tạp ngày càng tăng
James cho rằng một phần độ phức tạp gần đây đến từ việc bổ sung phụ thuộc Rust và Go. Nhóm đóng gói phải xử lý để build Go không cần truy cập mạng — điều bị cấm trong ebuild của Gentoo. Ông cũng nói các nhà phát triển Google dường như liên tục dùng các tính năng Rust thử nghiệm gây hỏng khi có phiên bản mới. Thêm vào đó, CI của thượng nguồn tạo tarball phát hành cũng không đáng tin cậy.
Jolly bổ sung quan sát của mình: bảo trì Chromium có thể tốn hơn sáu giờ mỗi tuần, chỉ tính thời gian biên dịch trên máy tính cấu hình cao với "lượng RAM phi lý". Trên máy Arm 64-bit, thời gian biên dịch còn lâu hơn nhiều.
"Đó là cam kết dành ít nhất một ngày làm việc thời gian rảnh mỗi tuần, bao gồm rebase bản vá, cherry-pick bản sửa, lặp lại
ebuild ... clean compile, cố gắng nhận diện và sửa lỗi mới... Có áp lực khổng lồ trong việc giữ bản build luôn cập nhật, đặc biệt trong thời đại có hàng trăm CVE trình duyệt mỗi tuần."
Ông cho rằng không có vấn đề kỹ thuật nào không thể vượt qua, nhưng cần nhiều nhà bảo trì với bộ kỹ năng rộng — bao gồm quen thuộc với C, C++, Go, JavaScript và Rust. "Còn có vô số công cụ NIH [not invented here — tự chế] của Google mà bạn sẽ phải học và không bao giờ dùng được ở đâu khác — xin cảnh báo trước."
Việc dùng toolchain của Google sẽ đơn giản hơn nhưng giới hạn ebuild chỉ chạy trên x86-64. "Chúng ta sẽ mất arm64, ppc64 và overlay RISC-V — tốt hơn là gỡ băng cá nhân ngay bây giờ vì nó không thực sự cải thiện tình hình." Ông cho biết sẵn sàng xem xét commit và tư vấn cho ai muốn bảo trì ebuild mã nguồn, nhưng cảm thấy cần ít nhất ba người. "Lịch sử cho thấy một nhà bảo trì là không đủ, và chu kỳ phát hành đã rút ngắn hai lần kể từ khi tôi bắt đầu bảo trì gói này năm 2023; hồi đó đã tệ, giờ còn tệ hơn."
Người dùng Gentoo giờ lấy Chromium ở đâu?
Hiện tại, người dùng Gentoo sẽ phải tìm ebuild Chromium ở nơi khác, chuyển sang trình duyệt khác, hoặc tìm cách cài đặt khác. Một số lựa chọn:
- Cài Flatpak từ Flathub — nhưng đây là gói chưa được xác minh, do bên thứ ba build, không phải từ dự án thượng nguồn Chromium. Gói này cũng không hỗ trợ hệ thống không phải x86-64 hoặc Arm 64-bit.
- Tự build từ mã nguồn theo hướng dẫn của thượng nguồn — về mặt kỹ thuật là khả thi, nhưng là một thử thách lớn. Trang "getting the code" của dự án hiện trả về lỗi 503 cho các liên kết hướng dẫn trên Linux, macOS và Windows.
- Tải nhị phân dựng sẵn từ dự án — nhưng chỉ có cho hệ x86-64.
Các bản phân phối khác vẫn cung cấp gói Chromium, dù cách tiếp cận của họ không mang lại sự linh hoạt như Gentoo. Gói của Fedora đang ở phiên bản 154.0.8037.92 — chậm hơn một phiên bản so với bản phát hành thượng nguồn 154.0.8037.97 ngày 1 tháng 10. Tương tự, gói trong kho bảo mật của Debian cũng cùng phiên bản, với ít nhất 11 CVE đã biết được vá trong bản 154.0.8037.97.
Góc nhìn cho người dùng Việt Nam
Câu chuyện của Gentoo là lời nhắc nhở về sự phụ thuộc mong manh vào các dự án mã nguồn mở quy mô lớn. Các bản phân phối Linux như Ubuntu, Fedora có đội ngũ đông đảo và nguồn lực tốt hơn, nhưng ngay cả họ cũng thường xuyên chậm một phiên bản so với Chromium.
Với người dùng Linux tại Việt Nam — đặc biệt là những ai yêu thích triết lý build-from-source của Gentoo hay Arch — đây là lúc cân nhắc: hoặc chuyển sang các trình duyệt "dễ thở" hơn như Firefox, hoặc chấp nhận dùng gói nhị phân / Flatpak với đánh đổi về khả năng tùy biến và độ tin cậy nguồn gốc.
Việc một dự án nổi tiếng về kiểm soát tối đa như Gentoo phải đầu hàng trước Chromium cho thấy một nghịch lý của phần mềm hiện đại: càng nhiều tính năng và tốc độ phát hành nhanh, gánh nặng đặt lên các nhà bảo trì tình nguyện càng lớn — và đôi khi vượt quá giới hạn chịu đựng.


