ハクソク

世界を動かす技術を、日本語で。

Do_not_trackの設定

概要

多くのCLIツールやSDKがデフォルトでテレメトリ収集を行う
ツールごとに異なるオプトアウト方法が存在
ユーザーが一括で拒否できる標準環境変数の提案
DO_NOT_TRACK=1で全ての追跡を無効化
開発者にも対応の呼びかけ

CLIツールのテレメトリ問題

  • 多くのCLIツールやSDK、フレームワークが初期設定でテレメトリ収集を実施
  • それぞれのツールが独自のオプトアウト方法を用意
    • 例:.NET → DOTNET_CLI_TELEMETRY_OPTOUT=1
    • AWS SAM CLI → SAM_CLI_TELEMETRY=0
    • Azure CLI → AZURE_CORE_COLLECT_TELEMETRY=0
    • Gatsby → GATSBY_TELEMETRY_DISABLED=1
    • Go → go telemetry off
    • Google Cloud SDK → gcloud config set disable_usage_reporting true
    • Homebrew → HOMEBREW_NO_ANALYTICS=1
    • Netlify CLI → netlify --telemetry-disable
    • Syncthing → STNOUPGRADE=1
  • ユーザーがすべてのツールで一貫してオプトアウトできない不便さ

標準環境変数による解決策

  • 単一で明確な環境変数によるオプトアウト提案
  • DO_NOT_TRACK=1を設定することで、以下を一括で拒否
    • 広告トラッキング
    • 利用状況レポート(匿名含む)
    • テレメトリ
    • クラッシュレポート
    • ソフトウェアや第三者への機能に必須でないリクエスト
  • ユーザーがローカルソフトウェアのみで完結できる環境構築

シェルごとの設定方法

  • Bash
    • ~/.bashrcexport DO_NOT_TRACK=1を追記
  • Zsh
    • ~/.zshrcexport DO_NOT_TRACK=1を追記
  • Fish
    • ~/.config/fish/config.fishset -x DO_NOT_TRACK 1を追記
  • PowerShell
    • $PROFILE$env:DO_NOT_TRACK = "1"を追記
  • Windows (CMD) システム環境変数
    • setx DO_NOT_TRACK 1を実行

ソフトウェア開発者への呼びかけ

  • テレメトリやアナリティクス、非必須なネットワークリクエストを行う場合
    • DO_NOT_TRACKが1ならすべての追跡を無効化
    • 既存のオプトアウト手段と併用して尊重
    • テレメトリを**デフォルト無効(オプトイン)**にすることも検討

関連情報

Hackerたちの意見

ブラウザでの動作がすごく良かったよ。
このページで一番役立つのは、シェルrcに入れるオプトアウトコマンドのリストだね。もっと完全なリストを管理してる人いる?
LLMはほとんどの一般的なことには十分な仕事をするよ。いくつかのハルシネーションが出てもあんまり関係ないしね。
自分でDNSを運用して、問題のあるドメインをブラックリストにする方が簡単かも。数百万のテレメトリドメインが入った良いブラックリストもあるよ。例えば、https://github.com/hagezi/dns-blocklists。
それよりも、そんなスパイウェアみたいなものをコンピュータに入れない方がいいよ。
これが正しい対処法だよね。「標準」を主張してる人たちは、ただ非公式な代替案のリストを増やしてるだけだと思う。
> 多くのCLIツール、SDK、フレームワークはデフォルトでテレメトリデータを収集してる。これらのどれかがダークパターンを使ってるから、新しいオプトアウトの方法を探る前に、あなたの自由を最初から尊重する代替手段を探してエネルギーを使うべきだよ。
その通り、新しい「標準」じゃ解決しないよね。
PythonのtransformersライブラリがHugging Faceに接続するのを止めるのがこんなに難しいとは思わなかった。HF_HUB_DISABLE_TELEMETRY=1を設定して、Wav2Vec2CTCTokenizer.from_pretrainedを呼び出すときにlocal_files_only=Trueを明示的に渡したんだけど、それでもHF_TOKENが無効だって警告が出た。HF_HUB_OFFLINE=1に気づくまで、wav2vec2モデルをディスクから読み込むたびにHFに接続してるとは思わなかったよ。あのうざいHF_TOKENの警告がなかったら、全然気づかなかったかも。
HFはオフラインで作業するのが難しいことで有名だよね(必要なものがオフラインの時に接続しようとして時間を無駄にすることも含めて)。しかも、扱い方が常に変わってる。以前はTRANSFORMERS_OFFLINEやHF_DATASETS_OFFLINEとかあったし。
これは役立ちそうなハニーポットだね!この仕様をサポートすると公表するツールは、最初から明示的なオプトインなしにテレメトリを収集するから、避けるべきツールだってわかるよ。
ほとんどのサービスはすでにテレメトリを収集してるし、それをサポートすると発表しても何も変わらないよ。
深く考えすぎない方がいいよ、そうしないと現代のツールが使えなくなるから。
DO_NOT_TRACKのサポートがあるからって、トラッキングが明示的なオプトインじゃないわけじゃないよ。例えば、ソフトがクラッシュした時に、クラッシュダンプを送るかどうか聞いてくるハンドラーがあるとする。DO_NOT_TRACKが有効だと、そのハンドラーは完全に無効化されて、質問もダンプもなし。もしこれが普及したら、たぶんそんな感じになると思う。トラッキングに経済的な利益がある人(例えば広告)は、こういうオプションを支持しないだろうね。
すべての「トラッキングしない」環境変数のフラグを自動で設定するためのshスクリプトだと思ってた。
これ、ブラウザのDNTと同じ運命を辿ることになりそうだね。「トラッキングしない」環境変数を一つの「do_not_track.env」ファイルにまとめるのは、悪くないアイデアかも…。
いいね!これは面倒な問題で、みんなにユニバーサルなものを使えって言うより、実際の解決策になりそう。最初のステップとして何か作ってみるよ。
広告主たちは、DNTを無視することを選んだんだよね。MicrosoftがDNTをデフォルトで有効にしたら、ユーザーの自由が奪われるって言ってたけど、実際はどうせ守らないつもりだったんだろうね。
https://toptout.me - これ、存在してて、こういう問題をたくさん解決してくれるよ。新しいものを作るつもりがなければね。ただ、もしこのページの仕様を守りながらこれを扱うシンプルなENV変数が欲しいなら、ここを見てみて: https://github.com/alloydwhitlock/do-not-track-cli
今の時点で、みんながデフォルトでオプトインされることに抵抗を感じないっていうのが面白いよね。DO_NOT_TRACKっていうフラグはいいアイデアに思えるけど、デフォルトがCONSENT_TO_TRACK=1ってことを示唆してる気がして、ちょっと気持ち悪い。
いつトラッキングしないの?このフラグは、他の誰かのサーバーに接続する時にブラウザから送信されるんだ。インターネットが普及したのは、広告やサーバーがユーザーに対して行う派生情報を基にしたビジネスモデルがあったからだよ。楽しくないし、プライベートでも安全でもない。ほとんどの業界では違法でもないしね。フラグは、現実の世界の事実に対する反応として存在してるんだよ、夢物語じゃなくて。
数年前にも同じことが提案されたけど、何も進展しなかったよ。 https://web.archive.org/web/20200613155957/https://consoledo...