Thị trường trình duyệt web từ lâu đã bị thống trị bởi một số ít các nhà phát triển lớn, khiến bất kỳ tân binh nào cũng đáng chú ý. Vaev, một công cụ HTML/CSS tự mô tả là siêu nhanh, nhẹ và bảo mật, gần đây đã xuất hiện và làm dấy lên cuộc thảo luận sôi nổi trong cộng đồng lập trình viên về tương lai của công nghệ trình duyệt, các cân nhắc về bảo mật và tính khả thi của các phương pháp tiếp cận thay thế cho việc hiển thị web.
Dự án Vaev và mục đích của nó
Vaev đang được phát triển bởi một nhóm gồm bốn cộng tác viên và hiện hỗ trợ một tập con của các tiêu chuẩn web bao gồm hầu hết các loại hiển thị (ngoại trừ grid), hành vi cascade CSS tiêu chuẩn, phân trang sử dụng quy tắc @page, xuất ra PDF, và các đơn vị CSS khác nhau bao gồm phần trăm, var() và calc(). Mặc dù khả năng kết nối mạng hiện tại chỉ giới hạn ở giao thức HTTP và file, dự án này thể hiện một nỗ lực đầy tham vọng nhằm tạo ra một công cụ trình duyệt mới từ đầu.
Một trong những nhà phát triển chính của dự án tiết lộ rằng Vaev có một ứng dụng thực tế cụ thể ngoài việc là một bài tập học tập. Nó đang được phát triển để làm nền tảng cho paper-muncher, một công cụ hiển thị PDF nhằm thay thế wkhtmltopdf tại Odoo, một bộ phần mềm kinh doanh mã nguồn mở phổ biến. Trường hợp sử dụng tập trung này giúp giải thích sự nhấn mạnh của dự án vào khả năng in sang PDF và các tính năng phân trang.
Hỗ trợ tính năng hiện tại của Vaev:
- Hầu hết các loại hiển thị (ngoại trừ lưới)
- Hành vi cascade CSS tiêu chuẩn
- Phân trang sử dụng quy tắc @page
- Xuất ra định dạng PDF
- Tất cả các đơn vị CSS, bao gồm phần trăm, var() và calc()
- Tải tài liệu HTML và XHTML
- Kết nối mạng cơ bản (chỉ hỗ trợ http:// và file://)
Những người đóng góp cho dự án:
- Lou!
- LuneMercier
- Paulo Medeiros
- Sleepy Monax
Trường hợp sử dụng chính:
- Là cốt lõi của công cụ kết xuất PDF "paper-muncher"
- Dự định thay thế wkhtmltopdf tại Odoo
Tranh cãi về lựa chọn ngôn ngữ
Có lẽ cuộc thảo luận nóng bỏng nhất xung quanh Vaev liên quan đến việc triển khai nó bằng C++. Nhiều người bình luận đã đặt câu hỏi về lựa chọn này, lập luận rằng các trình duyệt về cơ bản là những lỗ hổng RCE theo thiết kế và C++ trong lịch sử đã là nguồn gốc của nhiều vấn đề bảo mật trong mã nguồn trình duyệt.
Tôi quan tâm tại sao C++ được chọn cho dự án này? Trình duyệt nổi tiếng là khó bảo mật, chúng thực sự được thiết kế để là các lỗ hổng RCE! Việc bảo mật các tệp nhị phân C++ là khó khăn và trong những năm gần đây đã bị nhiều tổ chức và công ty chỉ ra là nguyên nhân gốc rễ của nhiều loại lỗ hổng bảo mật.
Những người bảo vệ lựa chọn này chỉ ra rằng các nhà phát triển có thể có nhiều kinh nghiệm với C++, và việc viết một công cụ trình duyệt đòi hỏi sự thành thạo ngôn ngữ sâu sắc. Một số cũng lưu ý rằng mã nguồn thể hiện các phương pháp C++ hiện đại chất lượng cao, với smart pointers và mô hình RAII có thể giảm thiểu nhiều mối lo ngại bảo mật truyền thống của C++.
Nhóm Vaev đã phản hồi các lo ngại về bảo mật bằng cách lưu ý rằng họ đang khám phá các tính năng an toàn được thực thi bởi trình biên dịch trong Clang, bao gồm thuộc tính kiểm tra vòng đời và hạn chế sử dụng con trỏ bên ngoài các khối được chỉ định - những phương pháp cung cấp một số lợi ích an toàn được tìm thấy trong các ngôn ngữ như Rust.
Thảo luận về Smolweb
Sự xuất hiện của Vaev đã làm sống lại một cuộc trò chuyện thường xuyên về việc chuẩn hóa một tập con tối thiểu của các công nghệ web. Nhiều nhà phát triển bày tỏ sự quan tâm đến việc định nghĩa một tiêu chuẩn smolweb - một tập con giới hạn, nhất quán của các tiêu chuẩn web mà các trình duyệt thay thế có thể triển khai mà không cần phải đáp ứng toàn bộ khả năng tương thích web.
Các đề xuất cho tiêu chuẩn giả định này từ việc áp dụng các đặc tả cũ hơn như HTML 4.01 và CSS 2.1 đến tập trung vào các tính năng thiết yếu hiện đại như CSS Grid trong khi loại bỏ sự phức tạp không cần thiết. Một số đề xuất sử dụng khả năng tương thích HTML email làm cơ sở, trong khi những người khác đề nghị bắt đầu với các yêu cầu tối thiểu cần thiết để hiển thị Markdown.
Cuộc thảo luận này nhấn mạnh mong muốn ngày càng tăng đối với các công nghệ web đơn giản hơn, tập trung hơn có thể cho phép sự đa dạng trình duyệt lớn hơn mà không đòi hỏi nguồn lực kỹ thuật khổng lồ hiện đang cần thiết để cạnh tranh với các trình duyệt thống trị.
Thách thức và triển vọng tương lai
Xây dựng một công cụ trình duyệt mới là một nhiệm vụ cực kỳ phức tạp, với nhiều người bình luận lưu ý rằng các trình duyệt đã thực sự trở thành các hệ điều hành. Khối lượng mã khổng lồ cần thiết cho ngay cả các chức năng cơ bản (với Vaev đã chứa nhiều tệp có hơn 500 dòng) cho thấy lý do tại sao rất ít công cụ trình duyệt mới xuất hiện.
Mặc dù tương lai gần của Vaev dường như tập trung vào việc hiển thị tài liệu và tạo PDF hơn là duyệt web tổng quát, các nhà phát triển không loại trừ khả năng cuối cùng sẽ hỗ trợ JavaScript và các tính năng web toàn diện hơn. Kiến trúc của dự án được thiết kế để đa nền tảng ngay từ đầu, không giống như một số dự án trình duyệt thay thế khác bắt đầu như các triển khai dành riêng cho hệ điều hành cụ thể.
Khi các công nghệ web tiếp tục phát triển phức tạp hơn, các dự án như Vaev cung cấp việc khám phá có giá trị về các phương pháp tiếp cận thay thế và các trường hợp sử dụng chuyên biệt. Cho dù tập trung vào hiển thị tài liệu, tiêu chuẩn web tối thiểu, hay cải tiến bảo mật, những thử nghiệm này đóng góp vào cuộc trò chuyện rộng lớn hơn về hướng phát triển tương lai của công nghệ web và sự đa dạng của trình duyệt.
Tham khảo: skift-org/vaev