1 điểm bởi GN⁺ 2024-01-21 | 1 bình luận | Chia sẻ qua WhatsApp
  • Platform Tilt của Mozilla theo dõi các điều kiện kỹ thuật khiến Firefox bất lợi hơn so với trình duyệt bên thứ nhất trên các nền tảng phần mềm lớn, đồng thời làm lộ rõ khoảng cách cạnh tranh về bảo mật, độ ổn định, hiệu năng và tính năng
  • Các vấn đề liên quan đến Apple xuất hiện rộng nhất, từ cấm engine trình duyệt bên thứ ba, các hạn chế về đa tiến trình, JIT và API trợ năng trên iOS, đến thiết lập trình duyệt mặc định, phân phối extension và bản beta, cũng như cách xử lý web app trên màn hình chính
  • Trên Google Android, các điểm chính là không có API nhập dữ liệu trình duyệt, luồng mà ứng dụng Google mở Chrome thay vì trình duyệt mặc định, và các trường hợp Firefox Android nhận được trang kết quả tìm kiếm chất lượng thấp
  • Trên Microsoft Windows, trình duyệt bên thứ ba khó đặt làm trình duyệt mặc định theo cách lập trình, và các luồng như Search, Copilot và Widgets ưu tiên Edge
  • Nhìn chung, lựa chọn trình duyệt mặc định của người dùng, việc di chuyển dữ liệu giữa các trình duyệt, tính năng của engine, và khả năng tiếp cận phân phối, kiểm thử, extension đều vận hành theo hướng có lợi cho trình duyệt của chính nền tảng

Platform Tilt theo dõi những gì

  • Platform Tilt là một dashboard theo dõi các trường hợp kỹ thuật khiến Firefox bị bất lợi so với trình duyệt bên thứ nhất trên các nền tảng phần mềm lớn
  • Các hạng mục mục tiêu gồm bảo mật, độ ổn định, hiệu năng và tính năng, đồng thời đề xuất những thay đổi để tạo ra môi trường cạnh tranh cân bằng hơn
  • Thảo luận vấn đề theo thời gian thực diễn ra tại platform-tilt issue tracker

Các hạn chế về engine trình duyệt và tính năng iOS trên nền tảng Apple

  • App Store forbids third-party browser engines: Rule 2.5.6 trong Apple App Store Review Guidelines yêu cầu các ứng dụng duyệt web phải sử dụng framework WebKit phù hợp và WebKit JavaScript
    • Vì chính sách này, Firefox không thể được phân phối bằng Gecko trên iOS
    • Điều này cũng ảnh hưởng đến việc phân phối Firefox qua App Store trên các nền tảng Apple khác như macOS
    • Cần thay đổi chính sách App Store để cho phép engine trình duyệt bên thứ ba trong trình duyệt web
  • Support for third-party multi-process applications on iOS: Các trình duyệt web hiện đại sử dụng kiến trúc đa tiến trình, bao gồm tiến trình theo từng site và các tiến trình chuyên dụng cho những chức năng nhạy cảm như GPU
    • Safari dùng cấu trúc đa tiến trình trên iOS, nhưng cùng cơ chế đó không được cung cấp cho ứng dụng bên thứ ba không dùng engine WebKit của Safari
    • iOS cần cung cấp cơ chế để tạo các tiến trình con bị cô lập và giao tiếp hiệu quả
    • Các yêu cầu bao gồm số lượng và vòng đời của tiến trình con theo hành vi duyệt web của người dùng, thiết lập quyền hạn bị giới hạn, messaging và shared memory, vùng shared memory read/write hoặc read-only, entitlement độc lập cho tiến trình cha và con, nạp thư viện trong bundle, cũng như render và chia sẻ giữa các tiến trình bằng IOSurface qua Metal hoặc OpenGL
    • Firefox dùng codebase dùng chung trên nhiều hệ điều hành, nên giao diện và hành vi quản lý tiến trình nhìn chung cần tương tự các nền tảng khác như macOS và Android
  • JIT Support on iOS: Để triển khai engine JavaScript/WebAssembly có hiệu năng tốt, tiến trình trình duyệt phải có khả năng tạo các vùng nhớ vừa ghi được vừa thực thi được
    • Ứng dụng iOS không thể tạo các quyền bộ nhớ như vậy bằng system call mmap(2)
    • Engine render WebKit của Safari có ngoại lệ, nên có thể tạo vùng nhớ vừa ghi được vừa thực thi được
    • Trên macOS có cơ chế tương ứng với Hardened Runtime entitlement com.apple.security.cs.allow-jit, và iOS cũng cần cung cấp entitlement tương đương cho trình duyệt không dùng WebKit cùng quyền sử dụng API pthread_jit_write_protect_np, sys_icache_invalidate
  • Accessibility APIs on iOS: Tài liệu về API trợ năng trên iOS không đầy đủ, và nhiều API cần thiết để trình duyệt web hỗ trợ các tiêu chuẩn web về trợ năng không được tài liệu hóa
    • WebKit dường như có một system bundle mã nguồn đóng được nạp lúc runtime, khiến ngay cả việc suy đoán cách sử dụng cũng trở nên khó khăn
    • Một số hằng số số nguyên của trait như “visited”, “radio button” và một số hằng số số nguyên của notification type như “value changed” không được công khai
    • Tất cả API trợ năng mà WebKit sử dụng cần được tài liệu hóa và ổn định, và lý tưởng nhất là WebKit cũng nên sử dụng chúng theo cùng cách như các engine trình duyệt bên thứ ba

Chênh lệch về trải nghiệm người dùng, phân phối và mở rộng trên nền tảng Apple

  • Messages integration on iOS: Trang chủ Safari trên iOS hiển thị các liên kết nhận gần đây và liên hệ đã gửi trong ứng dụng Messages, nhưng trình duyệt bên thứ ba không thể cung cấp cùng tính năng vì không có quyền truy cập dữ liệu Messages

  • Importing browser data on iOS: Trên iOS, dữ liệu duyệt web như lịch sử truy cập, dấu trang và cookie không thể được trình duyệt bên thứ ba truy cập, đồng thời cũng không có API để nhập dữ liệu

    • Dữ liệu này là nhạy cảm, nhưng trên các nền tảng desktop lớn vẫn có thể cung cấp tính năng nhập dữ liệu tương tự
    • iOS có thể điều phối quyền truy cập dữ liệu nhạy cảm bằng sự đồng ý của người dùng, giống như với dữ liệu sức khỏe và thể chất
    • Khi không thể nhập dữ liệu, việc chuyển từ Safari sang trình duyệt khác sẽ phát sinh ma sát
  • Setting and checking default browser on iOS: iOS không cung cấp chức năng để trình duyệt bên thứ ba hiển thị lời nhắc hệ thống yêu cầu đặt mình làm trình duyệt mặc định

    • Android cung cấp tính năng tương tự qua yêu cầu browser role, còn macOS cung cấp qua LSSetDefaultHandlerForURLSchemeLSSetDefaultRoleHandlerForContentType
    • Trình duyệt trên iOS chỉ có thể deep link tới UI cài đặt, và người dùng phải tự hiểu màn hình cài đặt rồi trực tiếp thay đổi
    • Trên iOS 17.2.1, có trường hợp nhập “Default browser app” hoặc “Default” vào tìm kiếm trong Settings nhưng không hiện kết quả để đổi trình duyệt mặc định
    • Trình duyệt bên thứ ba hiện cũng không thể phát hiện liệu mình có phải là trình duyệt mặc định hay không, nên khó tối ưu hóa trình duyệt theo ý định người dùng hoặc yêu cầu đổi trình duyệt mặc định vào thời điểm phù hợp
  • Origin-Based Associated Domains dependent features for third-party browser engines on iOS: Để trình duyệt không dùng WebKit hỗ trợ password autofill, one-time codes, passkeys, Apple Pay, chúng cần có khả năng chỉ định associated domain dựa trên origin của nội dung web

    • Trình duyệt dựa trên WebKit có thể override associated domain của ứng dụng trình duyệt thành domain mà người dùng đang duyệt
    • Ví dụ, ở trường nhập mật khẩu của example.com, trình duyệt phải biểu thị rằng trường đó thuộc origin example.com để trình quản lý mật khẩu được gọi trong phạm vi example.com
    • Việc hỗ trợ Apple Pay có thể cần thêm thay đổi để có thể nhận thanh toán cho các đơn vị nhận tiền Apple Pay đã đăng ký, giống như Safari
  • Browser extension support on iOS: Safari hỗ trợ extension được phân phối qua iOS App Store, nhưng trình duyệt bên thứ ba khó cung cấp hệ thống extension riêng do App Store Review Guidelines 2.5.2

    • Extension trình duyệt là một thành phần cốt lõi của hệ sinh thái web, cho phép nhà phát triển bổ sung tính năng vào trình duyệt để tăng tiện ích, khả năng sử dụng và khả năng tương tác với ứng dụng hệ thống
    • Cần nới lỏng các yêu cầu phần mềm của App Store để trình duyệt bên thứ ba có thể dùng danh mục extension riêng
  • Beta testing on iOS: Trên iOS, không thể phát hành ứng dụng bản beta trên App Store và phải dùng TestFlight

    • TestFlight có giới hạn 10.000 người, nhỏ so với quy mô người dùng beta của các trình duyệt lớn
    • Khi chạm giới hạn, phải thủ công loại bỏ người dùng cũ, làm phát sinh gánh nặng bảo trì
    • Người dùng phải trải qua quy trình cài ứng dụng TestFlight, đăng ký access code, chờ được cấp, rồi nhập mã
    • Phiên bản Safari mới được đưa vào bản beta của hệ điều hành iOS nên không chịu cùng giới hạn này
    • Các giải pháp được đề xuất gồm cho phép phân phối bản build pre-release của trình duyệt trên App Store, hoặc bỏ giới hạn người dùng TestFlight và cho phép phân phối liên kết công khai không giới hạn
  • iOS and macOS "Search Web" features open links in Safari instead of the user’s default browser: Menu ngữ cảnh Search Web hoặc Search with <Search Engine> trên iOS và macOS, cũng như điểm vào tìm kiếm trong Services trên thanh menu macOS, đều thực hiện tìm kiếm bằng Safari bất kể trình duyệt mặc định của người dùng là gì

  • SFSafariViewController should respect the user’s default browser: SFSafariViewController là API cấp cao cho phép ứng dụng iOS nhúng nội dung web trong app, đồng thời giao việc render cho trình duyệt của người dùng

    • API này luôn dùng phiên bản Safari, bất kể trình duyệt mặc định của người dùng là gì
    • Trải nghiệm hiển thị nội dung web trở nên không nhất quán, và lưu lượng truy cập bị rời khỏi các trình duyệt thay thế
  • Browsers with alternative engines should be able to ship a single binary & bundle on iOS: Đề xuất hiện tại của Apple yêu cầu các nhà cung cấp trình duyệt muốn dùng engine riêng phải phát hành một ứng dụng riêng tại EU thay vì cập nhật ứng dụng hiện có

    • Người dùng EU hiện tại phải chuyển sang ứng dụng mới, điều này khó khả thi và tạo thêm rào cản cạnh tranh
    • Các trường hợp Firefox lo ngại gồm: khó khăn trong khám phá và di chuyển từ Firefox WebKit sang Firefox Gecko; người dùng Firefox Gecko ở EU bị mất quyền truy cập khi ở ngoài EU quá 30 ngày; và người dùng Firefox WebKit ngoài EU chuyển hẳn sang EU bị kẹt trên phiên bản “orphaned” không còn được cập nhật
    • Nhà phát triển trình duyệt phải phát triển, duy trì và phân phối hai ứng dụng hoàn toàn tách biệt, kéo theo độ phức tạp khi di chuyển dữ liệu, người dùng rời bỏ, giảm thu hút người dùng mới và hạn chế trong các đợt rollout A/B lặp lại cho người dùng iOS tại EU
    • Một phương án thay thế được đề xuất là đưa webview của cả hai engine vào một binary và bundle duy nhất trên toàn cầu, rồi để OS thông báo cho ứng dụng về điều kiện đủ BrowserEngineKit khi khởi động
  • Web developers should be able to test with alternative browser engines on iOS regardless of location: Khi BrowserEngineKit được công bố lần đầu, nó có giới hạn theo vị trí, chặn việc thử nghiệm engine riêng trên các thiết bị ngoài EU

    • Giới hạn này đã được gỡ trong bản beta 18.2 cho phát triển và thử nghiệm cục bộ, nhưng với các nhà phát triển web thì vẫn còn
    • Các nhà phát triển web ngoài EU cũng có thể hỗ trợ người dùng EU, vì vậy cần có cơ chế để dễ dàng thử nghiệm trang web trên các engine trình duyệt thay thế bất kể vị trí
  • Browsers with alternative engines should be able to install and manage home screen web apps on iOS: Có API cho phép các engine trình duyệt thay thế thêm web app vào màn hình chính iOS, nhưng ứng dụng đó lại mở bằng Safari

    • Trước và sau khi cài đặt, tính năng theo từng engine, trạng thái người dùng và tùy chọn có khác nhau, khiến trải nghiệm bị chia tách
    • Apple từng phản đối việc cho phép các engine không phải WebKit kết xuất web app trên màn hình chính với lý do bảo mật
    • Các yêu cầu bảo mật cơ bản của web app trên màn hình chính cũng giống như các yêu cầu sandbox và cô lập giữa các trang vốn đã được áp dụng trong duyệt web thông thường
    • Android đã nhiều năm giao việc kết xuất web app cho các engine trình duyệt bên thứ ba, và iOS cũng cần kích hoạt điều này

Việc chuyển dữ liệu, trình duyệt mặc định và trải nghiệm tìm kiếm trên Google Android

  • Importing browser data on Android: Trên Android, trình duyệt bên thứ ba không thể truy cập dữ liệu duyệt web như lịch sử truy cập, dấu trang và cookie
    • Dữ liệu được lưu trong data directory của ứng dụng trình duyệt web, và trình duyệt bên thứ ba không thể truy cập trực tiếp
    • Cũng không có API hay ContentProvider nào cho phép nhập dữ liệu
    • Việc không thể nhập dữ liệu tạo ra ma sát lớn khi chuyển từ Chrome sang trình duyệt khác
  • Some Android features launch Chrome instead of the user’s default browser: Các tính năng như Google Search và Discover trong Google application được cài sẵn bỏ qua lựa chọn trình duyệt mặc định của người dùng và luôn mở liên kết đến website bên ngoài bằng Chrome
    • Cũng có thêm các điểm truy cập trong những tính năng tích hợp như thanh tìm kiếm ở màn hình chính và trình khởi chạy ứng dụng
    • Mỗi khi liên kết mở bằng Chrome, người dùng lại bị kéo ra khỏi trình duyệt mặc định của mình
    • Mọi ứng dụng và tính năng tích hợp mở liên kết ngoài đều nên mở bằng trình duyệt mặc định của người dùng
  • Lower quality search result pages in third-party browser engines on Android: Trên Android, trải nghiệm tìm kiếm web được tích hợp chặt với nhiều tính năng dựng sẵn, và đã có trường hợp Firefox nhận được trang kết quả tìm kiếm chất lượng thấp hơn Chrome
    • Với cùng một truy vấn, Firefox Android nhận trang có ít thông tin hơn và chất lượng thiết kế kém hơn so với Chrome
    • Về mặt kỹ thuật đây là vấn đề của website Google Search, nhưng vì mức độ quan trọng và tích hợp của tìm kiếm trên Android, nó dẫn tới khoảng cách trải nghiệm người dùng khiến họ ngại chọn trình duyệt bên thứ ba
    • Không có giới hạn kỹ thuật nào khiến trang đó không thể hoạt động trên Firefox
    • Trạng thái của vấn đề này là closed

Luồng ưu tiên Edge trên Microsoft Windows

  • Setting default browser on Windows: Windows không cung cấp khả năng để trình duyệt bên thứ ba yêu cầu theo cách lập trình được đặt làm trình duyệt mặc định
    • Ngay cả sau khi cài trình duyệt, người dùng vẫn phải vào phần cài đặt của hệ điều hành để tự chọn, tạo ra ma sát và quán tính khiến họ tiếp tục dùng Edge
    • Android và macOS cung cấp mẫu tương tác qua lời nhắc hệ thống hoặc API liên quan, giúp người dùng dễ dàng chấp thuận hoặc từ chối
    • Trên Windows 10, người dùng phải bấm nhiều lần và xác nhận kép trong giao diện cài đặt; Windows 11 có nút Set default nhưng vẫn chưa đủ
  • Default browser is set to Edge by several Windows flows: Windows 10 và 11 liên tục hiển thị thông điệp rằng Microsoft Edge là trình duyệt “recommended” của Windows, đồng thời cung cấp giao diện để đổi trình duyệt mặc định sang Edge
    • Một số câu chữ hỏi người dùng có muốn áp dụng “recommended browser settings” hay không, nhưng không nói rõ rằng điều này sẽ thay đổi trình duyệt mặc định
    • Các ví dụ liên tục thay đổi khi được thêm hoặc gỡ khỏi các bề mặt UI tự động hiển thị như Windows Update
    • Các thành phần của Windows có thể trực tiếp thay đổi trình duyệt mặc định của người dùng, còn trình duyệt bên thứ ba thì phải dùng deep link giao thức ms-settings:
    • Windows cũng nên dùng các tính năng và API giống như những gì được cung cấp cho trình duyệt bên thứ ba
  • Some Windows features launch Edge instead of the user’s default browser: Ít nhất ba tính năng lớn của Windows mở URL bằng Microsoft Edge thay vì bằng trình duyệt mặc định hiện tại
    • Windows Search hoặc Start Menu Search xuất hiện qua ô tìm kiếm trên thanh tác vụ, nút tìm kiếm, nhập trong menu Start hoặc phím tắt WIN+S, và cả kết quả tìm kiếm lẫn liên kết bài viết đều mở bằng Edge
    • Windows Copilot trên Windows 11 hiển thị dưới dạng cửa sổ dock ở bên phải màn hình và mở các liên kết trong phản hồi hoặc vùng hiển thị bằng Edge
    • Widgets từng được gọi là “news and interests” trên Windows 10, hiển thị thông tin như tin tức, thời tiết, cổ phiếu và tỷ số thể thao, đồng thời mở liên kết web page bằng Edge

1 bình luận

 
GN⁺ 2024-01-21
Các ý kiến trên Hacker News
  • Cả Android lẫn Microsoft đều được cho là có các ứng dụng mở theo cách riêng của họ thay vì bằng trình duyệt người dùng đã chọn, nhưng vấn đề lớn hơn là khi bấm vào liên kết bên trong ứng dụng, chúng hiển thị webview tích hợp như một trình duyệt
    Ứng dụng có thể giám sát hoạt động web diễn ra trong đó. Tôi mong Android Play Store và iOS App Store bắt buộc mọi trang web bên thứ ba phải được mở bằng trình duyệt của người dùng
    Có thể phân loại ứng dụng thành “trình duyệt web” và “không phải trình duyệt web”; với ứng dụng “không phải trình duyệt web”, chỉ cho đăng ký một danh sách ngắn khoảng 5–10 domain có thể truy cập, còn lại hệ điều hành sẽ chặn
    Những ứng dụng như Facebook, FB Messenger, Google Maps, vốn mục đích chính không phải là duyệt web, có thể được xem rõ ràng là “không phải trình duyệt web”
    Làm vậy sẽ ngăn được vấn đề giám sát của webview tích hợp, đồng thời vẫn dùng được nguyên trạng mật khẩu·địa chỉ·bookmark·lịch sử truy cập đã đồng bộ với hồ sơ trình duyệt. Nếu có thể tự định đoạt thế giới, tôi còn muốn yêu cầu các ứng dụng mở liên kết phải có menu ngữ cảnh “mở trong cửa sổ trình duyệt riêng tư”

    • Cá nhân tôi cũng nghĩ vậy, nhưng gần đây tôi nhận ra phần lớn người dùng thì không. Khi ra mắt ứng dụng autotempest, tôi cho mở tất cả liên kết bên thứ ba dẫn trực tiếp đến trang chi tiết xe trên nhiều trang bằng trình duyệt mặc định của người dùng, nhưng người dùng không thích và rất muốn chúng được mở ngay trong ứng dụng
      Vì vậy tôi đổi mặc định sang mở trong ứng dụng, nhưng vẫn giữ tùy chọn dùng trình duyệt mặc định
    • Giải quyết vấn đề trình duyệt trong ứng dụng là một trong những ưu tiên hàng đầu của Open Web Advocacy. Tuy nhiên, chuyện này trở nên phức tạp vì câu hỏi những gì có thể làm trong phạm vi Digital Markets Act
      Tôi đồng ý đây là vấn đề thực sự quan trọng, và nếu muốn hỗ trợ, hãy liên hệ Open Web Advocacy
    • Google thì ngược lại, đã tạo tính năng Custom Tabs để thúc đẩy lập trình viên Android theo hướng hoàn toàn trái ngược
      Họ khuyến nghị ứng dụng mở ngay cả những trang không liên quan, chẳng hạn chỉ là liên kết do người dùng cung cấp, bằng “custom tab” thay vì trình duyệt mặc định; mục đích được nêu rõ là giữ mức độ tương tác bằng cách không để người dùng rời khỏi ứng dụng
      Tất nhiên không có cài đặt nào để người dùng tắt trên toàn hệ thống; phải tìm cài đặt trong từng ứng dụng và còn phải hy vọng ứng dụng đó có cài đặt như vậy
      https://android-developers.googleblog.com/2023/02/bringing-b...
    • Ở một mức nào đó thì đã có thể làm được, vì có thể bấm “mở trong trình duyệt”. Nhưng tôi không biết điều đó có phù hợp với lợi ích của Google hay không
      Đã 9 thế hệ phiên bản chính trôi qua kể từ khi Android thêm quyền runtime như camera, nhưng truy cập Internet đến giờ vẫn không yêu cầu quyền
    • Tôi cảm thấy các điểm 2–4 về “sandbox hóa ngữ cảnh webview để không chồng lấn với hoạt động duyệt web thực tế hoặc webview của ứng dụng khác” có vẻ mâu thuẫn với điểm 1 rằng “ứng dụng có thể kiểm soát webview của chính nó nên nguy hiểm”
      “Domain có thể truy cập” thực tế nghĩa là gì cũng khá mơ hồ. Nếu chỉ kiểm tra domain của URL được điều hướng một cách rõ ràng thì quá lỏng, dễ bị vượt qua; còn nếu kiểm tra mọi URL request thì quá nghiêm, khiến nhiều lập trình viên có thể thậm chí không tải được đúng trang của chính mình
  • Việc Mozilla nêu vấn đề rằng “App Store cấm các engine trình duyệt bên thứ ba” là chính đáng, nhưng tôi không biết có muốn kéo sợi dây đó hay không
    Vì có tình trạng độc quyền Safari trên thiết bị iOS, nên khá nhiều nhà phát triển phải quan tâm đến việc hỗ trợ ngoài Chrome. Hiện giờ họ buộc phải làm vậy
    Nếu người dùng bắt đầu nhận được thông điệp “tính năng bị lỗi này sẽ không lỗi trên Chrome”, đó là con đường dẫn tới độc quyền, và sau đó Google sẽ không còn cần nhiều đồng thuận khi tạo các tiêu chuẩn web mới
    Tình trạng hiện tại đã tệ rồi, nhưng vẫn có thể tệ hơn nữa. Tôi hy vọng dự đoán này sai

    • Việc thách thức độc quyền Safari do Apple áp đặt trên iOS đương nhiên phù hợp với lợi ích của Mozilla. Chỉ vì Chrome cũng bị kìm hãm trên iOS không có nghĩa là Firefox bị kìm hãm thì có lợi cho Firefox
      Nếu các hạn chế của Apple khiến Firefox không thể triển khai Gecko và WebExtensions dựa trên Gecko, đặc biệt là trình chặn quảng cáo, biến mất, thị phần Firefox trên iOS chắc chắn sẽ tăng
      Những người dùng Firefox iOS như vậy sẽ có thể đồng bộ với Firefox trên desktop và Firefox iOS có chặn quảng cáo, nên họ cũng có thể được khuyến khích dùng Firefox trên desktop
    • Tôi cũng đến để nói điều tương tự. Việc không thể thay Safari bằng Chrome trên iOS, dù tốt hay xấu, là cơ chế duy nhất ngăn sự thống trị hoàn toàn của Chrome
    • Tôi nghĩ nếu có cạnh tranh tự do trên iOS thì nhiều người sẽ cài Chrome. Đặc biệt là đa số người dùng PC mà thiết bị Apple duy nhất của họ là iPhone có lẽ sẽ làm vậy
    • Lý do tôi làm cho website của mình chạy được trên Firefox không phải là vì tôi cũng phải làm cho nó chạy trên Safari
      Firefox thường cứ thế mà chạy, và ngay cả nếu không, Safari vốn là một nền tảng bị bỏ bê luôn cần thêm công sức cũng không khiến tôi muốn phải quan tâm thêm một stack kỹ thuật nữa
    • Nếu Mozilla không đặt vấn đề với Apple, các bất mãn với những công ty khác cũng có thể bị phớt lờ với lý do Safari. Vì Mozilla đang nói đúng về hành vi của Apple, nên nếu chỉ phê phán Google/Microsoft mà bỏ qua Apple thì sẽ trông đạo đức giả
      Tôi đã mệt mỏi với những lập luận bảo vệ hiện trạng. Việc duy trì hiện trạng không đi theo hướng tốt, và sẽ không thay đổi nếu không có biện pháp mạnh. Ngay cả phía ủng hộ duy trì hiện trạng của Apple dường như cũng không có kế hoạch nào cho thấy mọi thứ sẽ tốt hơn ra sao
      Chỉ riêng Safari không đủ để ngăn sự thống trị của Chrome, và sau khi các quy định về app store của EU được thực thi, khả năng việc mở engine trình duyệt bị bắt buộc cũng không hề nhỏ, nên về dài hạn bản thân hiện trạng cũng không được bảo đảm
      Hiện là thời điểm chính quyền Mỹ, vốn đã cho thấy ý chí thực thi chống độc quyền mạnh mẽ trong lịch sử đối với các công ty công nghệ, đang đi đến cuối nhiệm kỳ. Nhiều người chưa hiểu đầy đủ chính quyền Biden thân thiện với chống độc quyền đến mức nào
      Chính quyền này có thể tiếp tục thêm 4 năm hoặc không, nhưng xét đến sự bất định đó, đây là một trong những cơ hội tốt nhất để yêu cầu can thiệp thực sự vào Google/Apple/Microsoft kể từ vụ chống độc quyền Windows thời kỳ đầu
      Khi một chính quyền cởi mở với chống độc quyền, tâm lý người tiêu dùng thay đổi đối với Big Tech, áp lực lên Apple quanh iOS, và động thái của Google nhằm làm suy yếu trình chặn quảng cáo vào tháng 6 cùng hội tụ, đây là thời điểm tốt để thúc đẩy mạnh mẽ thay đổi hiện trạng
      Không phải là không có rủi ro, nhưng chờ thêm cũng không làm tình hình tốt hơn. Càng chờ, mức độ liên quan của Firefox càng giảm, khả năng chính quyền thay đổi càng lớn, và Mozilla càng khó tận dụng dư luận
      Sẽ không có khoảnh khắc nào Mozilla có thể thắng lập luận này dễ dàng 100%, và nếu không làm ngay bây giờ thì cuối cùng sẽ bị đẩy hoàn toàn khỏi thị trường
      Tôi ủng hộ việc dốc toàn lực nêu vấn đề với tất cả các bên, bao gồm cả Apple. Nếu lo ngại Chrome thống trị sau khi iOS mở cửa, thì vấn đề đó cần được xử lý bằng cách quản lý Google, và bây giờ là thời điểm tốt nhất để đưa ra lập luận đó
  • Là người dùng Android, lý do chính tôi không dùng Firefox không phải là hành vi phản cạnh tranh, mà là vì cảm giác chậm
    Trên Firefox, khi tải trang chủ, bố cục thường xuyên bị xê dịch, animation của bàn phím thỉnh thoảng bị giật, và không thể dùng tùy chọn menu “thả để chọn”

    • Tôi đã dùng mấy năm rồi mà chưa từng cảm thấy khác biệt như vậy
    • “Thả để chọn” là gì?
    • Trên Firefox, các phím tắt điều hướng bằng bàn phím mặc định của bàn phím ngoài cũng hoàn toàn không hoạt động
  • https://github.com/mozilla/platform-tilt/issues/3
    Hỗ trợ JIT trên iOS là một yếu tố bị bàn quá ít trong cuộc thảo luận rằng “EU sẽ buộc iOS phải cho phép engine kết xuất bên thứ ba”
    Apple có cho phép ứng dụng hỗ trợ JIT không? Họ có tạo một quyền mới mà nhà phát triển trình duyệt phải xin không? Nghe thì thú vị, nhưng có vẻ không khả thi

    • Apple đã dùng cách giới hạn một số entitlement chỉ cho trình duyệt web trên macOS. Entitlement Passkey là một ví dụ
      com.apple.developer.web-browser.public-key-credential
      https://developer.apple.com/documentation/bundleresources/en...
    • LuaJit ghi rằng có hỗ trợ iOS: https://luajit.org/status.html#ios
      Có ai biết điều này có chính xác không? Có phải nó đúng với các phiên bản cũ, nhưng giờ không còn được hỗ trợ nữa không?
  • Bài liên quan: https://blog.mozilla.org/netpolicy/2024/01/19/platform-tilt/
    Tôi đến từ https://news.ycombinator.com/item?id=39059255, nhưng ở đó không có bình luận

  • Trên macOS, nếu nhấp chuột phải vào vùng chọn và chọn tìm kiếm trên web, Safari luôn mở ra dù đã đặt trình duyệt mặc định là trình duyệt khác. Có lẽ chỉ xảy ra trong Mail.app, nhưng có vẻ mục này đã bị bỏ sót

  • Phàn nàn lớn nhất với Firefox cho Android là đôi khi nhập tên miền vào thanh địa chỉ rồi nhấn Enter thì không có gì xảy ra
    Hành vi này không ổn định và chỉ ảnh hưởng đến một số trang web như https://forum.syncthing.net
    Đóng tab hoặc dùng tab khác cũng không giải quyết được, phải buộc đóng ứng dụng thì mới sửa được

    • Trên desktop cũng có vấn đề tương tự. Có vẻ họ đã đưa vào thanh địa chỉ một thay đổi hầu như chẳng làm gì khác biệt rồi khoe trong bài blog, nhưng trong quá trình đó lại tạo ra một race condition bất đồng bộ và để nó hỏng suốt nhiều năm
      Dù có phàn nàn thì vẫn tốt hơn trình duyệt của Google
    • Tôi cũng gặp. Cực kỳ khó chịu. Thỉnh thoảng nó còn crash ngẫu nhiên, cái đó thì mới bắt đầu khoảng một tháng gần đây
  • Phần lớn thì hiểu được, nhưng mục tích hợp Messages trên iOS nghe không ổn lắm
    Nếu chỉ là một API kiểu “các liên kết đã gửi gần đây” để người dùng tự chọn thì không vấn đề gì, nhưng tôi tuyệt đối không muốn cho ứng dụng bên thứ ba truy cập toàn bộ dữ liệu tin nhắn, dù nhà phát triển là Mozilla đi nữa
    Với tiện ích mở rộng trên iOS, Orion có thể cài extension từ cả thư viện extension của Chrome lẫn Firefox, nên có vẻ đây không thực sự là vấn đề, hoặc nó đã vượt qua App Review và được duy trì suốt nhiều năm

  • Sao chép/dán trong Google Colab hoạt động đúng trên Chrome nhưng không như vậy trên Firefox

  • Họ nói “thông tin duyệt web như lịch sử truy cập, trang đã đánh dấu, cookie không thể được truy cập từ trình duyệt bên thứ ba trên Android”, nhưng từ góc nhìn người dùng, tại sao tôi lại muốn một ứng dụng bên thứ ba truy cập lịch sử duyệt web, bookmark và cookie của trình duyệt của mình?
    Đó rõ ràng là rò rỉ quyền riêng tư. Firefox chỉ nên lấy dữ liệu mà Firefox tạo ra trong lúc tôi dùng Firefox, chứ không phải dữ liệu ở ngữ cảnh khác

    • Chỉ là rò rỉ khi truy cập mà không được phép. Việc một ứng dụng có thể yêu cầu truy cập dữ liệu đó trong tình huống người dùng có thể trả lời “tuyệt đối không” thì bản thân nó không phải vấn đề
    • Với người dùng muốn chuyển sang trình duyệt mới một cách dễ dàng, họ sẽ muốn trình duyệt mới truy cập dữ liệu như bookmark của trình duyệt cũ để quá trình đó thuận tiện hơn
    • Chủ yếu là để nhập/xuất dữ liệu với các trình duyệt khác. Đây là thao tác rất phổ biến trong onboarding
    • Lịch sử truy cập và cookie thì chắc chắn có thể phản đối, nhưng xuất bookmark rồi nhập lại là điều thiết yếu
      Vậy mà Firefox cho Android còn không hỗ trợ cả việc đó :facepalm:
      https://github.com/mozilla-mobile/fenix/issues/417
    • Cách diễn giải này có vẻ hơi thiếu thiện chí. Danh bạ hay các dữ liệu nhạy cảm khác hiện cũng có thể được nhập mà không gây “rò rỉ quyền riêng tư”
      Trong issue đó họ cũng không yêu cầu tính năng nhập dữ liệu chưa được kiểm chứng, mà nói rằng Android có thể đứng ra điều phối việc truy cập dữ liệu nhạy cảm khác với sự đồng ý của người dùng