DO_NOT_TRACK - un estándar para proteger la privacidad
(donottrack.sh)- DO_NOT_TRACK es una propuesta para unificar en una sola variable de entorno las distintas formas de desactivar la telemetría entre herramientas CLI, SDK y frameworks
.NET,AWS SAM CLI,Azure CLI,Gatsby,Go,Google Cloud SDK,Homebrew,Netlify CLIySyncthingdesactivan la telemetría con configuraciones o comandos diferentesDO_NOT_TRACK=1significa rechazar el rastreo publicitario, los reportes de uso, la telemetría, los reportes de fallos y las solicitudes hacia creadores de software o terceros que no sean esenciales para la funcionalidad- Los usuarios pueden configurar
export DO_NOT_TRACK=1y agregarlo a la configuración del shell en Bash, Zsh, Fish, PowerShell o Windows CMD para aplicarlo a todas las sesiones de terminal - Los creadores de software deben respetar
DO_NOT_TRACKjunto con los métodos de desactivación existentes, y si vale1, desactivar todo el rastreo
El problema y la propuesta
- Muchas herramientas CLI, SDK y frameworks recopilan datos de telemetría por defecto, y cada herramienta tiene una forma distinta de desactivarlos
- Por ejemplo,
.NETusaDOTNET_CLI_TELEMETRY_OPTOUT=1,AWS SAM CLIusaSAM_CLI_TELEMETRY=0,Azure CLIusaAZURE_CORE_COLLECT_TELEMETRY=0,GatsbyusaGATSBY_TELEMETRY_DISABLED=1,Gousago telemetry off,Google Cloud SDKusagcloud config set disable_usage_reporting true,HomebrewusaHOMEBREW_NO_ANALYTICS=1,Netlify CLIusanetlify --telemetry-disableySyncthingusaSTNOUPGRADE=1 - DO_NOT_TRACK se propone como una única variable de entorno estándar que expresa con claridad que el usuario rechaza lo siguiente
- rastreo publicitario
- reportes de uso, sean anónimos o no
- telemetría
- reportes de fallos
- solicitudes hacia el creador del software o terceros que no sean esenciales para la funcionalidad
- El usuario puede expresar que solo quiere software local configurando
export DO_NOT_TRACK=1 - Si se agrega al archivo de configuración del shell, puede aplicarse a todas las sesiones de terminal
- Bash:
~/.bashrcconexport DO_NOT_TRACK=1 - Zsh:
~/.zshrcconexport DO_NOT_TRACK=1 - Fish:
~/.config/fish/config.fishconset -x DO_NOT_TRACK 1 - PowerShell:
$PROFILEcon$env:DO_NOT_TRACK = "1" - Windows CMD:
setx DO_NOT_TRACK 1en la variable de entorno del sistema
- Bash:
Creadores de software y estándares relacionados
- Las herramientas que realizan telemetría, analítica o solicitudes de red no esenciales para la funcionalidad deben comprobar la variable
DO_NOT_TRACK - Si
DO_NOT_TRACKestá configurada en1, deben desactivar todo el rastreo - Deben respetar esta variable junto con los métodos de desactivación existentes
- También se considera hacer que la telemetría sea opt-in, en lugar de activarla por defecto y luego permitir rechazarla
- no-color.org —
NO_COLOR, un estándar para desactivar la salida con color - force-color.org —
FORCE_COLOR, un estándar para forzar la salida con color
1 comentarios
Comentarios de Hacker News
A estas alturas, resulta interesante que ya nadie se sorprendería aunque el estado predeterminado fuera haber consentido el rastreo
Una bandera como
DO_NOT_TRACKsuena bien, pero al mismo tiempo da escalofríos porque se siente como si el valor por defecto fueraCONSENT_TO_TRACK=1Internet creció porque el modelo de negocio dominante eran los anuncios y los servidores extrayendo información derivada de los usuarios
No es agradable, ni privado, ni seguro, pero en la mayoría de las jurisdicciones e industrias tampoco es ilegal
Esta bandera no es una utopía de cuento de hadas, sino una respuesta a una realidad ya consolidada de hecho y de derecho
No quiero enviar ninguna información y obviamente tampoco quiero que me rastreen, así que no tiene sentido expresarlo con una sola variable de entorno
Me cuesta entender a quienes dicen no querer ser rastreados pero están dispuestos a dar esa información; en cuanto la das, ya quedaste marcado
Yo siempre prefiero nombres de variables en positivo, así que en este caso sería
ALLOW_TRACKING=0Eso da consistencia y evita la doble negación, lo que hace más fácil razonar sobre ello
Aun así, el nombre “DO NOT TRACK” quizá ya esté algo establecido como término
ALLOW_TRACKINGpodría implementarse como una lista separada por comas para indicar solo las aplicaciones permitidasPor ejemplo, si quieres compartir telemetría con
goybrew, pero no conawsni con lo demás, podrías usarALLOW_TRACKING=go,brewProbablemente termine con el mismo destino que
DNTen el navegadorAun así, no suena mal juntar todas las variables de entorno de “no rastrear” en un solo archivo
do_not_track.envSi quieres manejarlo con una sola variable de entorno simple siguiendo la especificación de esa página, también está https://github.com/alloydwhitlock/do-not-track-cli
DNTalegando que Microsoft, al activarlo por defecto, le quitaba la capacidad de elegir al usuarioEn la práctica, probablemente nunca pensaron respetarlo de todos modos
Más que exigir que todos usen una sola opción universal, una solución real probablemente vaya por aquí
Estoy pensando en construir algo como punto de partida
Como referencia, la telemetría de Go se guarda solo de forma local por defecto y no se sube: https://go.dev/doc/telemetry
Me sorprendió que fuera más difícil de lo esperado evitar que la biblioteca
transformersde Python se comunique con Hugging FaceConfiguré
HF_HUB_DISABLE_TELEMETRY=1y también indiquélocal_files_only=Trueal llamar aWav2Vec2CTCTokenizer.from_pretrained, pero aun así aparecía una advertencia sobre no tener unHF_TOKENválidoSolo cuando encontré por casualidad
HF_HUB_OFFLINE=1empecé a tener cierta confianza en que ya no estaba saliendo ninguna conexión hacia HF cada vez que cargaba el modelowav2vec2desde discoDe no ser por esa molesta advertencia de
HF_TOKEN, ni siquiera me habría enterado de que esto estaba pasandoIncluso hacer que no pierda tiempo intentando conectarse cuando todo lo necesario ya está en local sigue cambiando de una versión a otra
Antes también existían cosas como
TRANSFORMERS_OFFLINEyHF_DATASETS_OFFLINEParece una trampa de miel útil
Si una herramienta anuncia públicamente que soporta esta especificación, eso podría significar que de entrada recopila telemetría sin consentimiento explícito, así que sería una herramienta a evitar
DO_NOT_TRACKno significa necesariamente que el rastreo no funcione con consentimiento explícitoPor ejemplo, a veces un software se bloquea y el manejador de fallos pregunta si quieres enviar el volcado
Si existe
DO_NOT_TRACK, entonces el manejador de fallos mismo queda desactivado y no hay ni pregunta ni volcadoSi se adopta hasta cierto punto, probablemente funcione más o menos así
Quienes ganan dinero con el rastreo, como en la publicidad, no van a soportar este tipo de opción
Si lo haces, probablemente ya no vas a poder usar muchas herramientas modernas
Mientras esperamos a que las empresas implementen esta propuesta a paso de tortuga, ¿hay algún lugar que reúna en un solo sitio las formas de optar por no participar en herramientas comunes?
Incluso parece viable algo como un módulo de shell que las configure y actualice periódicamente la lista
Probablemente sea más fácil operar tu propio DNS y meter los dominios problemáticos en una lista de bloqueo
Ya hay buenas listas de bloqueo con millones de dominios de telemetría. Por ejemplo: https://github.com/hagezi/dns-blocklists
Quienes andan gritando “estándar” solo están sumando uno más a la larga lista de alternativas no oficiales
La prohibición global de rastreo en el navegador suele funcionar porque apunta a todos los sitios web visitados y al rastreo con fines publicitarios
Pero la telemetría es un problema completamente distinto, así que aunque bloquear por defecto puede ser una opción, usar una sola variable estándar para expresar la intención en todas las herramientas no parece realista
Hace años ya hubo una propuesta parecida, pero no llegó a ningún lado
https://web.archive.org/web/20200613155957/https://consoledo...