- 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_TRACK là 1, đồ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.org —
NO_COLOR, tiêu chuẩn để tắt đầu ra có màu
- force-color.org —
FORCE_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_TRACKnghe 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=1Internet 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 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=0Cá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
ALLOW_TRACKINGdướ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épVí dụ, nếu bạn muốn chia sẻ telemetry với
govàbrewnhưng không muốn vớiawsvà phần còn lại, thì có thể đặtALLOW_TRACKING=go,brewNhiều khả năng nó sẽ có chung số phận với
DNTcủa trình duyệtDù 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.envcó vẻ không phải ý tệ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
DNTkhi 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ùngThực tế thì rất có thể họ vốn dĩ cũng chẳng có ý định tuân theo
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
transformersliên lạc với Hugging Face lại khó hơn tưởng tượngTôi đã đặt
HF_HUB_DISABLE_TELEMETRY=1và khi gọiWav2Vec2CTCTokenizer.from_pretrainedcũng chỉ rõlocal_files_only=True, nhưng vẫn thấy cảnh báo rằng không cóHF_TOKENhợp lệChỉ đến khi tình cờ phát hiện
HF_HUB_OFFLINE=1thì tôi mới phần nào tin rằng mỗi lần tải mô hìnhwav2vec2từ đĩa sẽ không còn tạo kết nối ra HF nữaNếu không có cái cảnh báo
HF_TOKENkhó chịu đó, có lẽ tôi còn chẳng biết chuyện này đang xảy raNgay 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_OFFLINETrô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
DO_NOT_TRACKkhông đồng nghĩa rằng chuyện theo dõi không dựa trên sự đồng ý rõ ràngVí 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_TRACKthì 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ửiNế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
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
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...