2 điểm bởi GN⁺ 1 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • DO_NOT_TRACK là đề xuất thống nhất các cách tắt telemetry khác nhau giữa từng công cụ CLI, SDK và framework thành một biến môi trường duy nhất
  • .NET, AWS SAM CLI, Azure CLI, Gatsby, Go, Google Cloud SDK, Homebrew, Netlify CLI, Syncthing hiện đều tắt telemetry bằng các thiết lập hoặc lệnh khác nhau
  • DO_NOT_TRACK=1 có nghĩa là từ chối theo dõi quảng cáo, báo cáo sử dụng, telemetry, báo cáo sự cố và các yêu cầu gửi đến nhà phát triển hoặc bên thứ ba không thiết yếu cho chức năng
  • Người dùng có thể đặt export DO_NOT_TRACK=1 và thêm vào cấu hình shell của Bash, Zsh, Fish, PowerShell, Windows CMD để áp dụng cho mọi phiên terminal
  • Nhà phát triển phần mềm nên vô hiệu hóa mọi hình thức theo dõi khi DO_NOT_TRACK1, đồng thời tôn trọng biến này song song với các cách tắt hiện có

Vấn đề và đề xuất

  • Nhiều công cụ CLI, SDK và framework mặc định thu thập dữ liệu telemetry, và mỗi công cụ lại có cách tắt khác nhau
  • Ví dụ, .NET dùng DOTNET_CLI_TELEMETRY_OPTOUT=1, AWS SAM CLI dùng SAM_CLI_TELEMETRY=0, Azure CLI dùng AZURE_CORE_COLLECT_TELEMETRY=0, Gatsby dùng GATSBY_TELEMETRY_DISABLED=1, Go dùng go telemetry off, Google Cloud SDK dùng gcloud config set disable_usage_reporting true, Homebrew dùng HOMEBREW_NO_ANALYTICS=1, Netlify CLI dùng netlify --telemetry-disable, Syncthing dùng STNOUPGRADE=1
  • DO_NOT_TRACK được đề xuất như một biến môi trường tiêu chuẩn duy nhất để thể hiện rõ rằng người dùng từ chối các mục sau
    • theo dõi quảng cáo
    • báo cáo sử dụng, dù có ẩn danh hay không
    • telemetry
    • báo cáo sự cố
    • các yêu cầu gửi đến nhà phát triển phần mềm hoặc bên thứ ba không thiết yếu cho chức năng
  • Người dùng có thể thể hiện mong muốn chỉ dùng phần mềm cục bộ bằng cách đặt export DO_NOT_TRACK=1
  • Nếu thêm vào tệp cấu hình shell, thiết lập này có thể áp dụng cho mọi phiên terminal
    • Bash: thêm export DO_NOT_TRACK=1 vào ~/.bashrc
    • Zsh: thêm export DO_NOT_TRACK=1 vào ~/.zshrc
    • Fish: thêm set -x DO_NOT_TRACK 1 vào ~/.config/fish/config.fish
    • PowerShell: thêm $env:DO_NOT_TRACK = "1" vào $PROFILE
    • Windows CMD: đặt biến môi trường hệ thống bằng setx DO_NOT_TRACK 1

Nhà phát triển phần mềm và các tiêu chuẩn liên quan

  • Các công cụ thực hiện telemetry, phân tích hoặc các yêu cầu mạng không thiết yếu cho chức năng nên kiểm tra biến DO_NOT_TRACK
  • Nếu DO_NOT_TRACK được đặt là 1, mọi hình thức theo dõi phải bị vô hiệu hóa
  • Biến này nên được tôn trọng song song với các cách tắt hiện có
  • Cũng nên cân nhắc chuyển sang mô hình opt-in thay vì bật telemetry mặc định rồi mới cho phép từ chối
  • no-color.orgNO_COLOR, tiêu chuẩn để tắt đầu ra có màu
  • force-color.orgFORCE_COLOR, tiêu chuẩn để buộc đầu ra có màu

1 bình luận

 
Bình luận trên Hacker News
  • Thú vị ở chỗ đến mức này rồi mà ngay cả khi mặc định là đã đồng ý bị theo dõi thì cũng chẳng ai còn ngạc nhiên
    Một cờ như DO_NOT_TRACK nghe có vẻ hay, nhưng đồng thời cũng gây rợn người vì nó giống như đang ngầm nói rằng mặc định là CONSENT_TO_TRACK=1

    • Vậy chính xác là bảo đừng theo dõi vào lúc nào? Cờ này được trình duyệt của tôi gửi đi khi nó truy cập vào máy chủ của người khác
      Internet phát triển lớn mạnh vì mô hình kinh doanh chủ đạo là quảng cáo và việc máy chủ khai thác thông tin suy ra từ người dùng
      Nó không vui vẻ, không riêng tư, cũng không an toàn, nhưng ở phần lớn khu vực pháp lý và ngành công nghiệp thì cũng không phải bất hợp pháp
      Cờ này không phải một lý tưởng cổ tích, mà là phản ứng trước một thực tế đã được củng cố cả trên thực tế lẫn pháp lý
    • Tôi nghĩ chính loại cờ này mới là vấn đề
      Tôi không muốn gửi ra bất kỳ thông tin nào và đương nhiên cũng không muốn bị theo dõi, nên ngay từ việc biểu thị điều đó bằng một biến môi trường đã là vô lý
      Tôi khó hiểu được những người nói là không muốn bị theo dõi mà lại sẵn lòng cung cấp thông tin đó, vì ngay khoảnh khắc bạn đưa ra thông tin ấy thì bạn đã tự đánh dấu mình rồi
  • Tôi luôn thích đặt tên biến theo dạng khẳng định, nên trong trường hợp này sẽ là ALLOW_TRACKING=0
    Cách này tạo sự nhất quán và giúp tránh phủ định kép, nên dễ suy luận hơn
    Tuy vậy, cái tên “DO NOT TRACK” có lẽ đã phần nào trở thành một thuật ngữ quen thuộc

    • Có thể triển khai ALLOW_TRACKING dưới dạng danh sách phân tách bằng dấu phẩy để chỉ định chỉ những ứng dụng nào được phép
      Ví dụ, nếu bạn muốn chia sẻ telemetry với gobrew nhưng không muốn với aws và phần còn lại, thì có thể đặt ALLOW_TRACKING=go,brew
  • Nhiều khả năng nó sẽ có chung số phận với DNT của trình duyệt
    Dù vậy, gom mọi biến môi trường kiểu “không theo dõi” vào một file do_not_track.env có vẻ không phải ý tệ

    • https://toptout.me đã tồn tại rồi, và nếu không định làm lại từ đầu thì nó xử lý khá nhiều vấn đề kiểu này
      Nếu bạn muốn bám theo đặc tả của trang đó nhưng vẫn xử lý bằng một biến môi trường đơn giản, thì cũng có https://github.com/alloydwhitlock/do-not-track-cli
    • Ngành quảng cáo đã phớt lờ DNT khi Microsoft bật nó mặc định, với lý do như vậy là tước đi quyền lựa chọn của người dùng
      Thực tế thì rất có thể họ vốn dĩ cũng chẳng có ý định tuân theo
    • Tôi thích hướng đi này
      Thay vì đòi hỏi mọi người phải dùng một thứ phổ quát, lời giải thực tế có lẽ sẽ là kiểu này
      Tôi đang tính sẽ thử làm gì đó như một điểm khởi đầu
  • Nhân tiện, telemetry của Go mặc định chỉ được lưu cục bộ và không tải lên: https://go.dev/doc/telemetry

  • Tôi khá ngạc nhiên khi việc ngăn thư viện Python transformers liên lạc với Hugging Face lại khó hơn tưởng tượng
    Tôi đã đặt HF_HUB_DISABLE_TELEMETRY=1 và khi gọi Wav2Vec2CTCTokenizer.from_pretrained cũng chỉ rõ local_files_only=True, nhưng vẫn thấy cảnh báo rằng không có HF_TOKEN hợp lệ
    Chỉ đến khi tình cờ phát hiện HF_HUB_OFFLINE=1 thì tôi mới phần nào tin rằng mỗi lần tải mô hình wav2vec2 từ đĩa sẽ không còn tạo kết nối ra HF nữa
    Nếu không có cái cảnh báo HF_TOKEN khó chịu đó, có lẽ tôi còn chẳng biết chuyện này đang xảy ra

    • HF nổi tiếng là khiến làm việc ngoại tuyến trở nên khó khăn
      Ngay cả việc tránh lãng phí thời gian vì nó cứ cố kết nối dù mọi thứ cần thiết đều đã có sẵn ở máy cục bộ cũng liên tục thay đổi cách xử lý
      Trước đây còn có những thứ như TRANSFORMERS_OFFLINE, HF_DATASETS_OFFLINE
    • Liệu các công cụ như Little Snitch có giúp bắt kiểu này để tìm ra nơi đang có giao tiếp ngầm không?
  • Trông giống một honeypot hữu ích
    Nếu một công cụ công khai nói rằng nó hỗ trợ đặc tả này, thì có thể xem đó là công cụ nên tránh, vì như vậy nghĩa là ngay từ đầu nó đã thu thập telemetry mà không có sự đồng ý rõ ràng

    • Việc hỗ trợ DO_NOT_TRACK không đồng nghĩa rằng chuyện theo dõi không dựa trên sự đồng ý rõ ràng
      Ví dụ, phần mềm có thể bị crash và trình xử lý crash hỏi bạn có muốn gửi dump hay không
      Nếu có DO_NOT_TRACK thì chính trình xử lý crash sẽ bị vô hiệu hóa, không có câu hỏi nào và cũng không có dump nào được gửi
      Nếu được chấp nhận ở mức nào đó thì có lẽ nó sẽ hoạt động theo kiểu như vậy
      Những bên kiếm tiền trực tiếp từ việc theo dõi, như quảng cáo, sẽ không hỗ trợ lựa chọn này đâu
    • Phần lớn dịch vụ vốn đã thu thập telemetry, nên việc tuyên bố hỗ trợ nó cũng không làm thay đổi thực tế đó
    • Tốt hơn là đừng soi quá sâu
      Nếu không thì bạn sẽ không dùng được nhiều công cụ hiện đại đâu
  • Trong lúc chờ các công ty triển khai đề xuất này một cách rất chậm chạp, có nơi nào tập hợp các cách từ chối nhận của những công cụ phổ biến vào một chỗ không?
    Thậm chí có vẻ còn có thể làm thành một mô-đun shell để tự thiết lập chúng và cập nhật danh sách định kỳ

  • Có lẽ sẽ dễ hơn nếu tự vận hành DNS của riêng mình và đưa các tên miền có vấn đề vào danh sách chặn
    Cũng có những danh sách chặn tốt chứa hàng triệu tên miền telemetry. Ví dụ: https://github.com/hagezi/dns-blocklists

    • Tiến xa hơn nữa thì tốt nhất là đừng đưa thứ rác spyware đó vào máy tính
    • Đây mới là cách xử lý đúng
      Những người hô hào “tiêu chuẩn” thực chất chỉ đang thêm một mục nữa vào danh sách dài các giải pháp thay thế không chính thức
  • Tùy chọn cấm theo dõi toàn cục của trình duyệt về cơ bản hoạt động được vì nó nhắm vào mọi website mà đối tượng truy cập và việc theo dõi phục vụ quảng cáo
    Nhưng telemetry là một vấn đề hoàn toàn khác, nên chặn mặc định có thể là một lựa chọn, còn việc dùng một biến chuẩn duy nhất để thể hiện ý định cho mọi công cụ thì trên thực tế rất khó khả thi

  • Vài năm trước cũng đã có đúng đề xuất này, nhưng rốt cuộc chẳng đi đến đâu
    https://web.archive.org/web/20200613155957/https://consoledo...