Mới đây, Mozilla - hãng phát triển trình duyệt Firefox nổi tiếng, đã đưa ra 1 quyết định gây khá nhiều "bất bình" trong cộng đồng người dùng trình duyệt này.
Họ cho biết sẽ ngừng phát triển bản Build Nightly của Firefox cho người dùng Windows 64-bit. Riêng với Linux và Mac OS X vì còn hợp đồng nên vẫn tiếp tục được cung cấp phiên bản 64-bit chính thức.
Build Nightly của Firefox cho người dùng Windows 64-bit là gì? Nếu bạn đang dùng Firefox trên Windows, thì thực ra phiên bản mainstream, ổn định, mà chúng ta thường tải về từ trang chủ của Mozilla là bản Firefox 32-bit, mặc cho Windows bạn đang cài trên máy là Windows 32-bit hay 64-bit đi chăng nữa. Trong quá trình phát triển 1 phiên bản Firefox mới thì Mozilla chia ra làm nhiều gói Build khác nhau, và Build Nightly chính là 1 trong các bản Build đó, và nó được Moziila phát triển ra 2 phiên bản: 32-bit và 64-bit.
Nhiều lý do cho quyết định này được Mozilla đưa ra như: nhiều plugin không hỗ trợ phiên bản 64-bit, hệ thống báo cáo và giám sát lỗi của Mozilla không phân rõ giữa 32 và 64 bit, các lỗi trên bản 64-bit không được sửa vì phiên bản đó không được ưu tiên, và JavaScript thực thi chậm hơn trên bản 32-bit. Hơn nữa, các lập trình viên của Mozilla đã nói rằng họ sẽ không sửa những lỗi chỉ hiện hữu trên bản 64-bit. Họ cũng đã tuyên bố rằng phiên bản đầy đủ của Firefox 64-bit sẽ không được tung ra vào nửa đầu 2013 và có lẽ nó cũng sẽ chẳng được bao giờ tung ra!
Tuy nhiên, đây quả là một quyết định đáng tiếc của Mozilla. Bởi xét trên nhiều phương diện thì các trình duyệt 64-bit rõ ràng “ăn đứt” bản 32-bit. Những phương diện đó là gì?
Bảo mật
Đầu tiên chúng ta phải nói tới yếu tố liên quan tới việc bảo mật. Các lỗ hổng bảo mật trên các trình duyệt web hiện nay là một vấn đề nhức nhối. Bởi thế, cả nhà cung cấp HĐH máy tính lẫn nhà phát triển trình duyệt đều phải áp dụng các công nghệ tiên tiến nhằm làm giảm các nguy cơ trình duyệt hay PC của người dùng bị hacker tấn công. Một trong những công nghệ phổ biến hiện nay chính là cho trình duyệt chạy trong môi trường sandbox để làm giảm nguy cơ các phần mềm độc hại ghi thông tin lên ổ cứng người dùng: khi một ứng dụng được khởi chạy, Sandbox sẽ tạo một "tường rào" xung quanh để cách li ứng dụng với phần còn lại của hệ thống.
Hay một phương pháp khác có tên ASLR - Address Space Layout Randomization (phân phối không gian địa chỉ ngẫu nhiên). Đây là công nghệ di chuyển các thư viện liên kết động DLL và bộ nhớ ứng dụng vào những vùng bộ nhớ ngẫu nhiên, khiến cho việc tấn công từ bên ngoài của hacker trở nên khó khăn hơn. Trên Windows 8 cũng có 1 tính năng bảo mật là High Entropy ASLR về bản chất cũng chính là việc phân phối ngẫu nhiên này.
Mozilla nên tiếp tục phát triển "cáo lửa" 64-bit.
Từ đây, vấn đề với Windows 32-bit, hay Firefox 32-bit đã dần lộ ra. Mỗi tiến trình 32-bit có thể truy cập 2 mũ 32 bytes bộ nhớ (tương đương 4GB) còn tiến trình 64-bit có thể truy cập đến 2 mũ 64 bytes bộ nhớ (tham khảo thêm: khác biệt giữa Windows 32-bit và Windows 64-bit). Trong số 4GB bộ nhớ mà bộ xử lý 32-bit có thể nhận được, hệ thống chiếm khoảng 2GB hoặc 1GB nên các ứng dụng chỉ còn 2GB đến 3GB để dùng. Bởi thế, khi áp dụng công nghệ ASLR, số vùng ngẫu nhiên để thực hiện các di chuyển trên là không có nhiều. Các thư viện liên kết động vẫn phải cần được đóng gói cạnh nhau để đảm bảo có đủ bộ nhớ cho ứng dụng lưu trữ dữ liệu.
Trên Windows 64-bit, vấn đề này đã được giải quyết. Với 18 “tỉ tỉ” GB bộ nhớ, ta có được vô vàn vùng không gian địa chỉ để phân tán các thư viện liên kết động đến những nơi không dễ dàng tìm ra.
Với các ứng dụng khác, công nghệ bảo mật ASLR hay điện toán 64-bit có lẽ không có nhiều ý nghĩa quá lớn. Tuy nhiên, với trình duyệt thì lại là 1 câu chuyện khác. Trình duyệt là ứng dụng rất dễ bị malware tấn công do chúng được sử dụng thường xuyên để kết nối với tài nguyên mạng vốn rất có ích nhưng cũng có rất nhiều nguy cơ bị tấn công. Các trình duyệt web cần được trang bị các công nghệ bảo mật tốt như ASLR, và với việc Mozilla bỏ rơi phiên bản 64-bit, Firefox sẽ không thể tận dụng các tính năng bảo mật tiên tiến đã nói ở trên.
Ổn định
Firefox hiện tại đã trở nên quá khổ đối với không gian bộ nhớ 32-bit. Bởi ngoại trừ các plugin, tất cả mọi thứ Firefox làm đều chạy trong cùng một tiến trình: tất cả các tab, các cửa sổ bạn mở, tất cả các hình ảnh, đoạn mã, download đều cùng chia sẻ 4GB bộ nhớ. Khi bạn mở quá nhiều tab hay khi load những trang có cấu trúc cùng những đoạn mã phức tạp, hoặc chỉ vì một số lỗi của chính Firefox sẽ dẫn đến trường hợp bộ nhớ được cấp phát nhưng không được giải phóng ngay cả khi không còn dùng đến. Một khi đã đạt đến giới hạn, Firefox sẽ chậm dần, chậm dần vì nó phải hoạt động nhiều hơn để có thể có được nhiều vùng nhớ hơn và cuối cùng, như thường lệ - trình duyệt bị crash! Trong khi đó, Firefox 64-bit với ưu điểm là có nhiều vùng nhớ hơn nên sẽ chẳng bao giờ rơi vào tình trạng thiếu hụt bộ nhớ.
Kể từ phiên bản 13, các nhà phát triển Firefox đã có một số hướng để cải thiện lỗi trên như tính năng load trang theo yêu cầu: khi người dùng khởi động lại trình duyệt (với 1 loạt thẻ đã mở trước đó), Firefox sẽ chỉ load các trang mà người sử dụng click đến. Điều này giúp tiết kiệm bộ nhớ nhưng chỉ là một giải pháp tạm thời bởi khi người dùng cần mở nhiều website cùng 1 lúc, mọi thứ lại trở về với vấn đề cũ.
Tất nhiên, giải quyết vấn đề bộ nhớ không có nghĩa là Mozilla phải bắt buộc phát triển phiên bản 64-bit, hay nói cách khác đây không phải là giải pháp duy nhất. Mozilla có thể học tập Google khi làm Chrome. Chrome cho Windows cũng chỉ có phiên bản 32-bit (mặc dù dù có thể Google đang nỗ lực phát triển một bản 64-bit riêng), nhưng trên Chrome, mỗi tiến trình được phân thành từng tab riêng, sức ép bộ nhớ là không nhiều như trên Firefox, bởi thay vì nhồi chung tất cả vào sử dụng 4 GB bộ nhớ, các thẻ trên Chrome có 4 GB bộ nhớ cho riêng mình. Tuy nhiên, phát triển phiên bản 64-bit vẫn là điều mà Mozilla nên làm bởi nó vừa khắc phục được vấn đề bộ nhớ, vừa tận dụng được các tính năng bảo mật tiên tiến đã nói ở trên.
Kết
Trong khi phiên bản 64-bit có rất nhiều lợi ích như vậy, thì các lý do mà Mozilla đưa ra cho việc từ bỏ của mình lại có vẻ như không hợp lý cho lắm. Bởi nhiều nhà phát triển vẫn có cách để phân biệt các crash giữa bản 32-bit và bản 64-bit và không có lý gì Mozilla không làm được điều này. Số plugin hỗ trợ cũng không hẳn không có cách giải quyết. Hãy nhìn sang Opera. Giống như Firefox, Opera cũng dùng chung 1 tiến trình cho tất cả các thẻ web (thay vì mỗi tab 1 tiến trình như Chrome) và cũng chạy các plugin trên các tiến trình riêng biệt. Tuy nhiên, họ có cách cho phép các plugin 32-bit chạy được trên phiên bản 64-bit. Và rõ ràng nếu muốn, Mozilla cũng có thể áp dụng công nghệ tương tự như của Opera.
Mozilla đã, đang và sẽ tiếp tục duy trì bản Firefox 64-bit trên Mac OS X và Linux tuy nhiên lại bỏ rơi một lượng rất lớn người dùng sử dụng Windows. Tính đến tháng 11 năm 2011, tính riêng số lượng người dùng Firefox 64-bit trên Windows 7 đã lớn hơn tổng số người dùng Firefox trên Mac OS X và Linux gộp lại. Số lượng người dùng bản build Nightly 64-bit cũng đông hơn số người dùng bản 32-bit. Chính vì thế, Mozilla nên tiếp tục duy trì phiên bản 64-bit của Firefox cũng như đưa nó trở thành phiên bản ưu tiên. Firefox vẫn còn rất nhiều người dùng và rõ ràng họ xứng đáng để tiếp tục được sử dụng phiên bản 64-bit với sự an tâm về độ bảo mật cũng như tính ổn định.