1 điểm bởi GN⁺ 2023-07-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Homebrew thu thập phân tích ẩn danh bằng InfluxDB và chỉ bật phân tích sau khi hiển thị thông báo ở lần chạy brew update đầu tiên hoặc khi cài đặt
  • Do là một dự án miễn phí và dựa trên tình nguyện viên, dữ liệu như tỷ lệ lỗi của formula, phiên bản OS và tần suất sử dụng lệnh là cơ sở để quyết định tính năng và mức độ ưu tiên sửa lỗi
  • Dữ liệu phân tích ẩn danh trong InfluxDB được lưu giữ trong 365 ngày, và toàn bộ dữ liệu phân tích từng được gửi tới Google Analytics trước đây đã bị xóa
  • Phạm vi thu thập được giới hạn ở việc có phải CI hay không, có dùng prefix cài đặt mặc định hay không, kiến trúc CPU, phiên bản OS và Homebrew, cùng các sự kiện như cài đặt, lỗi build, và thực thi lệnh
  • Người dùng có thể tắt phân tích bằng HOMEBREW_NO_ANALYTICS=1 hoặc brew analytics off, và hệ thống không lưu địa chỉ IP hay liên kết một sự kiện cụ thể với một người dùng cụ thể

Thời điểm bật phân tích và lý do sử dụng

  • Vì Homebrew được cung cấp miễn phí và do các tình nguyện viên vận hành trong thời gian rảnh, dự án thiếu nguồn lực nghiên cứu người dùng riêng để thiết kế tính năng và sắp xếp ưu tiên công việc
  • Phân tích ẩn danh được dùng để hiểu Homebrew được sử dụng như thế nào, ở đâu và khi nào, từ đó xác định ưu tiên sửa lỗi và tính năng
    • Những formula được dùng rộng rãi nhưng thường xuyên thất bại có thể được ưu tiên sửa trước các formula khác
    • Thông tin phiên bản OS được dùng để ưu tiên các phiên bản macOS cần hỗ trợ và nhận diện các lỗi build chỉ xảy ra trên một phiên bản cụ thể
    • Những lệnh có tần suất sử dụng thấp có thể bị loại bỏ
  • Phân tích chỉ được bật sau khi hiển thị thông báo khi bạn chạy brew update lần đầu hoặc khi cài đặt Homebrew
    • Trước khi có thông báo, dữ liệu phân tích sẽ không được gửi, để người dùng có thể opt-out trước khi truyền dữ liệu
  • Dữ liệu phân tích ẩn danh được lưu trong InfluxDB có thời hạn giữ là 365 ngày
  • Toàn bộ dữ liệu phân tích trước đây từng được gửi tới Google Analytics đã bị xóa

Các sự kiện được gửi và phạm vi thu thập

  • Mọi sự kiện formula hoặc cask đều được ghi cùng thông tin chung
    • Có được gửi từ CI hay không
    • Có dùng prefix cài đặt mặc định hay không
      • Ví dụ prefix mặc định là /opt/homebrew
      • Ví dụ prefix tùy chỉnh là /home/mike/.brew
      • Prefix tùy chỉnh được gửi dưới dạng custom-prefix để giữ tính ẩn danh
    • Có thiết lập biến môi trường HOMEBREW_DEVELOPER hay không
    • Trạng thái devcmdrun cho biết đã từng chạy lệnh dành cho nhà phát triển Homebrew hay chưa
    • Kiến trúc CPU, ví dụ x86_64
    • OS và phiên bản, ví dụ macOS 13
    • Phiên bản Homebrew, ví dụ 4.0.0
  • Phân tích của Homebrew ghi lại nhiều nhóm sự kiện
    • install: formula Homebrew được cài từ GitHub tap không riêng tư và các tùy chọn đã dùng
    • install_on_request: formula và tùy chọn mà người dùng yêu cầu cài đặt một cách tường minh
    • cask_install: cask Homebrew được cài từ GitHub tap không riêng tư
    • build_error: formula và tùy chọn đã thất bại khi cài đặt
      • Chi tiết hoặc log của lỗi build không được gửi đi
    • command_run: lệnh đã chạy và các cờ đi kèm
    • test_bot_test: chỉ dùng trong môi trường CI của Homebrew để ghi lại kết quả kiểm thử pull request
  • Nếu đặt HOMEBREW_ANALYTICS_DEBUG=1 trong môi trường, bạn có thể xem toàn bộ thông tin mà phân tích Homebrew gửi đi, và thiết lập này cũng dừng luôn việc gửi phân tích
  • Dữ liệu phân tích được gửi tới InfluxDB qua HTTPS trong quá trình chạy Homebrew

Dữ liệu công khai, mã nguồn và cách opt-out

  • Các sự kiện phân tích đã được tổng hợp có thể xem tại trang công khai và cũng có JSON API
    • Phần lớn maintainer của Homebrew không được cấp quyền truy cập vào dữ liệu phân tích chi tiết hơn ngoài tài nguyên công khai này
  • Nhà phát triển Homebrew không thể liên kết một sự kiện cụ thể với một người dùng cụ thể, đồng thời cũng không lưu hay nhận địa chỉ IP
  • Mã phân tích có thể xem tại analytics.rbanalytics.sh
    • Chạy trong một tiến trình nền riêng
    • Thất bại nhanh để không làm chậm quá trình chạy Homebrew
    • Nếu không có kết nối mạng thì sẽ ngay lập tức thất bại một cách im lặng
  • Để tắt phân tích, có thể dùng biến môi trường hoặc lệnh
    • export HOMEBREW_NO_ANALYTICS=1
    • brew analytics off

1 bình luận

 
GN⁺ 2023-07-09
Ý kiến trên Hacker News
  • Tính năng phân tích của Homebrew nay đã được chuyển hoàn toàn sang instance InfluxDB tại EU, thu thập ít dữ liệu hơn trước và toàn bộ dữ liệu Google Analytics đã bị xóa
    https://docs.brew.sh/Analytics
    Khi thử chạy brew analytics trong lúc cập nhật sáng nay thì thấy hiện InfluxDB analytics are disabled.Google Analytics were destroyed.

    • Đó là vì đang đặt HOMEBREW_NO_ANALYTICS 1, gỡ thiết lập này ra thì phân tích InfluxDB sẽ được bật
    • Việc nêu rõ cả công nghệ cơ sở dữ liệu đang dùng nghe hơi lạ. Trong toàn bộ ngữ cảnh thì có vẻ không liên quan lắm
  • Việc đội ngũ Homebrew giữ lời hứa rời bỏ Google Analytics là điều đáng chúc mừng

  • Nếu hiện đang cấu hình như bên dưới thì brew analytics state sẽ báo phân tích InfluxDB bị vô hiệu hóa, còn Google Analytics đã bị xóa
    HOMEBREW_NO_GOOGLE_ANALYTICS 1
    HOMEBREW_NO_ANALYTICS 1
    Sau đó nếu chạy brew update thì sẽ hiện cảnh báo rằng HOMEBREW_NO_GOOGLE_ANALYTICS giờ không còn tác dụng gì nữa nên có thể bỏ đi, đồng thời thông báo rằng phân tích đã chuyển sang InfluxDB ở EU và hướng dẫn bật lại bằng brew analytics on
    Tuy vậy, để phân tích InfluxDB không bị bật lên thì vẫn phải giữ HOMEBREW_NO_ANALYTICS 1

  • Tôi vẫn dùng macOS vì Homebrew, nếu không có nó chắc tôi đã dùng apt trên Linux
    Không biết có trang nào thuận tiện để tìm kiếm gói apt như brew.sh không. Trang apt của Ubuntu quá rối rắm

  • Tôi không hiểu vì sao một trình quản lý gói lại cần thu thập dữ liệu phân tích
    Ngay cả dữ liệu được thu thập cũng có thể đủ để nhận diện bằng dấu vân tay thiết bị

    • Homebrew được duy trì hoàn toàn bởi những người đóng góp mã nguồn mở, và chỉ riêng việc giữ hàng nghìn gói luôn cập nhật đã là một khối lượng công việc lớn
      Dữ liệu phân tích đóng vai trò như một hệ thống cảnh báo và là căn cứ thực tế để đánh giá tầm quan trọng, độ bất ổn của gói, v.v.
      Ngoài ra Homebrew chạy trên macOS nhưng không thể kiểm soát cách Apple thay đổi macOS, nên phân tích giúp nhanh chóng phát hiện các hỏng hóc do thay đổi đơn phương từ Apple gây ra
    • Lý do đã được nêu ở phần “Why?” đầu bài
      Homebrew là miễn phí và hoàn toàn do tình nguyện viên vận hành trong thời gian rảnh, nên không có nguồn lực để làm khảo sát người dùng chi tiết nhằm quyết định thiết kế tính năng tương lai hay ưu tiên công việc hiện tại
      Thông qua phân tích ẩn danh, họ có thể biết formula nào được dùng rộng rãi nhưng hay lỗi, nên ưu tiên hỗ trợ phiên bản macOS nào, và các lỗi build chỉ xảy ra ở phiên bản cụ thể là gì
    • Nếu không biết sản phẩm được dùng như thế nào thì rất khó cải thiện nó
    • Tôi thật sự tò mò, không rõ ở đây dấu vân tay thiết bị sẽ hoạt động như thế nào
  • Cập nhật: cũng có ý kiến cho rằng bản thân việc dùng Google Analytics không còn là vấn đề
    https://arstechnica.com/tech-policy/2023/07/big-tech-can-tra...

  • brew analytics off

  • Thật ngạc nhiên khi một dịch vụ miễn phí lại có thể tuân thủ GDPR tốt hơn những popup phiền toái vô tận trên các website khác
    Mấy popup bực mình đó đôi khi trông như được thiết kế để quấy rối chứ không phải vì cần thiết

    • Một hệ thống hầu như không lưu dữ liệu cá nhân thì dĩ nhiên sẽ dễ tuân thủ GDPR hơn nhiều
      Ngoài chuyện “càng ít dữ liệu càng ít rắc rối”, yếu tố quan liêu cũng rất lớn. Hồi trước khi tôi phụ trách tuân thủ GDPR, đội bảo mật muốn lưu mọi dữ liệu mãi mãi, còn bộ phận pháp lý phụ trách xác định phạm vi GDPR lại xung đột với bộ phận pháp lý chung
      Đặc biệt bộ phận pháp lý chung vừa không hiểu hệ thống làm gì vừa phớt lờ giải thích, nhưng vẫn liên tục thúc ép các thay đổi chính sách lưu trữ không liên quan hoặc còn mâu thuẫn với nhau
    • Có thể kỳ vọng các dịch vụ phi lợi nhuận sẽ làm tuân thủ quyền riêng tư tốt hơn những dịch vụ cố khai thác tối đa dữ liệu người dùng để kiếm tiền
    • Tuân thủ GDPR thực ra rất dễ. Ngay từ đầu đừng thu thập thông tin nhận dạng cá nhân là được
      Nếu muốn thu thập dữ liệu thì hãy hỏi người dùng và giải thích chính xác bạn sẽ làm gì
      Mọi thứ chỉ trở nên khó khi bạn muốn thu thập nhiều dữ liệu đến mức người dùng sẽ không đồng ý nếu biết rõ phạm vi, rồi còn muốn gửi cho nhiều bên thứ ba. Từ lúc đó người ta bắt đầu dùng những thủ thuật đen tối nhất để đánh lừa người dùng trong khi vẫn giả vờ tuân thủ về mặt pháp lý
  • Ngay cả công cụ dòng lệnh cũng gửi telemetry về nhà thì đúng là tuyệt vời. Chẳng còn đâu không phải spyware

    • Việc đánh đồng “spyware” theo nghĩa theo dõi để kiếm tiền với telemetry dùng để nhà phát triển kiểm tra tình trạng của hệ thống đang vận hành là ngớ ngẩn và có hại
      Homebrew là một hệ thống phức tạp có thể hỏng theo nhiều cách, phía sau cũng không có công ty nào mà được phát triển hoàn toàn mã nguồn mở
      Việc có thể quan sát ở một mức độ nào đó cách hệ thống đang chạy là điều cơ bản. Bắt các nhà phát triển đang hiến thời gian cho một dự án rất hữu ích phải làm việc với một tay bị trói chỉ vì sự hoang tưởng là điều vô lý
      Nếu kiểu đòi hỏi này thắng thế thì phần mềm mã nguồn mở sẽ либо không được tạo ra, либо rơi vào tay các công ty vì lợi nhuận vốn còn kém thiện chí hơn nhiều về chuyện spyware
      Câu chuyện lần này là dự án Homebrew đã lắng nghe ý kiến cộng đồng và chuyển sang phân tích tự lưu trữ theo hướng bảo vệ quyền riêng tư, nên tốt nhất cứ bỏ qua những người kiểu này vì họ sẽ chẳng bao giờ hài lòng
    • Tôi không hiểu vì sao việc là công cụ dòng lệnh lại trở thành ranh giới phân biệt
      Nếu là công cụ đơn giản không cần kết nối Internet thì còn được, nhưng Homebrew không chỉ là công cụ dòng lệnh mà còn là kho lưu trữ và hệ thống build luôn vận động
      Là nhà phát triển thì tôi nghĩ việc muốn hiểu một thay đổi cụ thể ảnh hưởng ra sao tới trải nghiệm người dùng là hoàn toàn hợp lý
  • Việc rời Google Analytics có cảm giác như một lựa chọn hơi ngượng gạo
    Google đã có thể lấy gần như toàn bộ dữ liệu họ muốn thông qua người dùng Chrome, còn GA về cơ bản chỉ giống như cách giúp Google bắt được cả người không dùng Chrome
    Quan trọng hơn, nó còn cho tôi thấy Google đang nhìn thấy gì trên trang của tôi
    Tắt GA có thể gây chút cản trở cho Google, nhưng có lẽ chỉ làm giảm tối đa khoảng 10% dữ liệu sử dụng của người dùng, đổi lại tôi mất khả năng nhìn thấy Google đang thấy gì về mình
    Google vẫn chiếm hơn 90% lưu lượng tìm kiếm, nên rời GA có cảm giác như vùi đầu xuống cát
    Tôi hiểu việc không muốn bị theo dõi hay chia sẻ dữ liệu, nhưng không chắc việc tắt GA có thực sự giải quyết vấn đề đó không

    • Đây là phân tích của công cụ dòng lệnh, nên nếu không cố ý gửi cho Google thì tỷ lệ dữ liệu Google nhìn thấy là 0%
    • Chắc các maintainer Homebrew cũng đoán trước sẽ có đủ loại phàn nàn khi rời GA, nhưng có lẽ không nghĩ tới việc bị chê là “ngượng gạo”
    • GA đã bị xem là không tuân thủ GDPR, nên nếu không muốn bị cấm ở EU thì phải rời GA
      https://usercentrics.com/knowledge-hub/google-analytics-and-...
      Một công ty Thụy Điển thậm chí đã bị phạt số tiền rất lớn: https://techcrunch.com/2023/07/03/google-analytics-sweden-gd...