DO_NOT_TRACK - 개인정보 보호를 위한 표준
(donottrack.sh)- DO_NOT_TRACK는 CLI 도구, SDK, 프레임워크마다 다른 텔레메트리 비활성화 방식을 하나의 환경 변수로 통일하자는 제안임
.NET,AWS SAM CLI,Azure CLI,Gatsby,Go,Google Cloud SDK,Homebrew,Netlify CLI,Syncthing은 각각 다른 설정이나 명령으로 텔레메트리를 끄고 있음DO_NOT_TRACK=1은 광고 추적, 사용 보고, 텔레메트리, 충돌 보고, 기능에 필수적이지 않은 제작자 또는 제3자 대상 요청을 거부한다는 뜻임- 사용자는
export DO_NOT_TRACK=1을 설정하고 Bash, Zsh, Fish, PowerShell, Windows CMD의 셸 설정에 추가해 모든 터미널 세션에 적용 가능함 - 소프트웨어 제작자는
DO_NOT_TRACK가1이면 모든 추적을 비활성화하고, 기존 비활성화 방식과 함께 이 변수를 존중해야 함
문제와 제안
- 많은 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는 사용자가 다음 항목을 거부한다는 뜻을 명확히 표현하는 단일 표준 환경 변수로 제안됨- 광고 추적
- 익명 여부와 무관한 사용 보고
- 텔레메트리
- 충돌 보고
- 기능에 필수적이지 않은 소프트웨어 제작자 또는 제3자 대상 요청
- 사용자는 로컬 소프트웨어만 원한다는 의사를
export DO_NOT_TRACK=1로 설정할 수 있음 - 셸 설정 파일에 추가하면 모든 터미널 세션에 적용 가능함
- Bash:
~/.bashrc에export DO_NOT_TRACK=1 - Zsh:
~/.zshrc에export DO_NOT_TRACK=1 - Fish:
~/.config/fish/config.fish에set -x DO_NOT_TRACK 1 - PowerShell:
$PROFILE에$env:DO_NOT_TRACK = "1" - Windows CMD: 시스템 환경 변수에
setx DO_NOT_TRACK 1
- Bash:
소프트웨어 제작자와 관련 표준
- 텔레메트리, 분석, 기능에 필수적이지 않은 네트워크 요청을 수행하는 도구는
DO_NOT_TRACK변수를 확인해야 함 DO_NOT_TRACK가1로 설정되어 있으면 모든 추적을 비활성화해야 함- 기존 비활성화 방식과 함께 이 변수를 존중해야 함
- 텔레메트리를 기본 활성화 후 거부하는 방식보다 옵트인 방식으로 만드는 것도 고려 대상임
- no-color.org —
NO_COLOR, 색상 출력 비활성화를 위한 표준 - force-color.org —
FORCE_COLOR, 색상 출력 강제를 위한 표준
Hacker News 의견들
-
이쯤 되니 기본값으로 추적에 동의한 상태가 되어도 아무도 놀라지 않는다는 게 흥미로움
DO_NOT_TRACK같은 플래그는 좋아 보이지만, 동시에 기본값이CONSENT_TO_TRACK=1이라는 뜻처럼 느껴져서 소름 끼침- 언제 추적하지 말라는 건데? 이 플래그는 내 브라우저가 남의 서버에 접속할 때 보내는 것임
인터넷이 커진 건 광고와 서버가 사용자에게서 파생 정보를 뽑아내는 사업 모델이 주류였기 때문임
즐겁지도, 사적이지도, 안전하지도 않지만 대부분의 관할권과 산업에서는 불법도 아님
이 플래그는 동화 같은 이상향이 아니라, 사실상·법적으로 굳어진 현실에 대한 대응임 - 이런 플래그 자체가 문제가 있다고 봄
어떤 정보도 내보내고 싶지 않고 당연히 추적도 원하지 않는데, 이걸 환경 변수 하나로 표시한다는 것부터 말이 안 됨
추적당하고 싶지 않다면서 그런 정보를 주는 걸 좋아하는 사람들을 이해하기 어렵고, 그 정보를 주는 순간 이미 표시된 셈임
- 언제 추적하지 말라는 건데? 이 플래그는 내 브라우저가 남의 서버에 접속할 때 보내는 것임
-
변수 이름은 항상 긍정형으로 두는 편이라, 이 경우라면
ALLOW_TRACKING=0이 됨
일관성이 생기고 이중 부정을 피할 수 있어 추론하기 쉬워짐
다만 “DO NOT TRACK”이라는 이름은 어느 정도 자리 잡은 용어일 수 있음ALLOW_TRACKING을 쉼표로 구분한 목록으로 구현해서, 허용할 애플리케이션만 지정할 수도 있음
예를 들어go와brew에는 원격 측정을 공유하고 싶지만aws와 나머지는 싫다면ALLOW_TRACKING=go,brew처럼 둘 수 있음
-
브라우저의
DNT와 같은 운명을 맞을 가능성이 큼
다만 모든 “추적 금지” 환경 변수를 하나의do_not_track.env파일로 모으는 건 나쁘지 않아 보임- https://toptout.me가 이미 있고, 새로 만들 생각이 아니라면 이런 문제를 꽤 많이 처리해 줌
이 페이지의 명세를 지키면서 단순한 환경 변수 하나로 처리하고 싶다면 https://github.com/alloydwhitlock/do-not-track-cli도 있음 - 광고업계는 Microsoft가
DNT를 기본으로 켠 것이 사용자의 선택권을 빼앗았다고 주장하며 무시했음
실제로는 어차피 지킬 생각이 없었을 가능성이 큼 - 이 방향이 마음에 듦
보편적인 하나를 쓰라고 요구하는 것보다, 실제 해결책은 이런 방식일 가능성이 큼
시작점으로 뭔가 만들어볼 생각임
- https://toptout.me가 이미 있고, 새로 만들 생각이 아니라면 이런 문제를 꽤 많이 처리해 줌
-
참고로 Go 원격 측정은 기본적으로 로컬에만 저장되고 업로드되지 않음: https://go.dev/doc/telemetry
-
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같은 것도 있었음 - Little Snitch 같은 도구가 이런 걸 잡아서 숨은 통신을 하는 대상을 찾는 데 도움이 될까?
- HF는 오프라인 작업을 어렵게 만드는 것으로 악명 높음
-
유용한 허니팟처럼 보임
이 명세 지원을 공개적으로 알리는 도구라면, 애초에 명시적 동의 없이 원격 측정을 수집한다는 뜻이니 피해야 할 도구로 볼 수 있음DO_NOT_TRACK지원이 곧 추적이 명시적 동의 방식이 아니라는 뜻은 아님
예를 들어 소프트웨어가 충돌하고, 충돌 처리기가 덤프를 보낼지 묻는 경우가 있음
DO_NOT_TRACK이 있으면 충돌 처리기 자체가 비활성화되어 질문도, 덤프도 없음
어느 정도 채택된다면 아마 그런 식으로 동작할 가능성이 큼
광고처럼 추적으로 금전적 이익을 얻는 쪽은 이런 옵션을 지원하지 않을 것임- 대부분의 서비스는 이미 원격 측정을 수집하고 있고, 지원한다고 발표한다고 해서 그 사실이 바뀌지는 않음
- 너무 깊게 들여다보지 않는 게 좋음
그러면 현대적인 도구를 많이 못 쓰게 될 것임
-
회사들이 이 제안을 아주 느리게 구현하길 기다리는 동안, 흔한 도구들의 수신 거부 방법을 한곳에 모아둔 곳이 있을까?
아예 그것들을 설정하고 목록을 정기적으로 업데이트하는 셸 모듈 같은 것도 가능해 보임 -
직접 DNS를 운영하고 문제 되는 도메인을 차단 목록에 넣는 편이 아마 더 쉬움
원격 측정 도메인이 수백만 개 들어 있는 좋은 차단 목록도 있음. 예: https://github.com/hagezi/dns-blocklists- 더 나아가 그런 스파이웨어 쓰레기를 컴퓨터에 들이지 않는 게 낫다
- 이게 올바른 처리 방식임
“표준”을 외치는 사람들은 그저 비공식 대안의 긴 목록에 하나를 더 보태는 것뿐임
-
브라우저의 전역 추적 금지는 대상이 방문하는 모든 웹사이트와 광고 목적의 추적이라서 대체로 작동함
하지만 원격 측정은 완전히 다른 문제라서 기본 차단은 하나의 선택지가 될 수 있어도, 모든 도구에 대해 의도를 표현하는 표준 변수 하나를 쓰는 건 현실적으로 어렵다 -
몇 년 전에도 같은 제안이 있었지만 아무 데도 가지 못했음
https://web.archive.org/web/20200613155957/https://consoledo...