2 คะแนน โดย GN⁺ 2 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • DO_NOT_TRACK คือข้อเสนอให้รวมวิธีปิดใช้งานเทเลเมทรีที่แตกต่างกันในแต่ละ CLI tool, SDK และเฟรมเวิร์ก ให้เป็นตัวแปรสภาพแวดล้อมเดียว
  • .NET, AWS SAM CLI, Azure CLI, Gatsby, Go, Google Cloud SDK, Homebrew, Netlify CLI, Syncthing ต่างก็ปิด telemetry ด้วยการตั้งค่าหรือคำสั่งที่แตกต่างกัน
  • DO_NOT_TRACK=1 หมายถึงการปฏิเสธ ad tracking, usage reporting, telemetry, crash reporting และคำขอไปยังผู้พัฒนาหรือบุคคลที่สามที่ไม่จำเป็นต่อการทำงานของฟีเจอร์
  • ผู้ใช้สามารถตั้งค่า export DO_NOT_TRACK=1 และเพิ่มไว้ใน shell settings ของ Bash, Zsh, Fish, PowerShell, Windows CMD เพื่อให้มีผลกับทุก terminal session
  • ผู้พัฒนาซอฟต์แวร์ควรตรวจสอบ DO_NOT_TRACK และเมื่อมีค่าเป็น 1 ต้องปิดการติดตามทั้งหมด พร้อมทั้งเคารพตัวแปรนี้ควบคู่ไปกับวิธีปิดใช้งานแบบเดิม

ปัญหาและข้อเสนอ

  • CLI tool, SDK และเฟรมเวิร์กจำนวนมากเก็บ ข้อมูล telemetry โดยค่าเริ่มต้น และแต่ละตัวก็มีวิธีปิดใช้งานต่างกันไป
  • ตัวอย่างเช่น .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 ให้เป็น ตัวแปรสภาพแวดล้อมมาตรฐานตัวเดียว ที่สื่ออย่างชัดเจนว่าผู้ใช้ปฏิเสธสิ่งต่อไปนี้
    • ad tracking
    • การรายงานการใช้งาน ไม่ว่าจะระบุว่าไม่ระบุตัวตนหรือไม่ก็ตาม
    • telemetry
    • crash reporting
    • คำขอไปยังผู้พัฒนาซอฟต์แวร์หรือบุคคลที่สามที่ไม่จำเป็นต่อการทำงานของฟีเจอร์
  • ผู้ใช้สามารถแสดงเจตนาว่าต้องการซอฟต์แวร์ที่ทำงานในเครื่องเท่านั้นได้ด้วยการตั้งค่า export DO_NOT_TRACK=1
  • หากเพิ่มไว้ในไฟล์ตั้งค่า shell ก็จะมีผลกับทุก terminal session
    • 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: เพิ่ม $env:DO_NOT_TRACK = "1" ลงใน $PROFILE
    • Windows CMD: ตั้งค่าตัวแปรสภาพแวดล้อมของระบบด้วย setx DO_NOT_TRACK 1

ผู้พัฒนาซอฟต์แวร์และมาตรฐานที่เกี่ยวข้อง

  • เครื่องมือที่มี telemetry, analytics หรือ network request ที่ไม่จำเป็นต่อการทำงานของฟีเจอร์ ควรตรวจสอบตัวแปร DO_NOT_TRACK
  • หาก DO_NOT_TRACK ถูกตั้งเป็น 1 ต้องปิดการติดตามทั้งหมด
  • ควรเคารพตัวแปรนี้ควบคู่ไปกับวิธีปิดใช้งานแบบเดิม
  • นอกจากการเปิด telemetry เป็นค่าเริ่มต้นแล้วให้ผู้ใช้ค่อยปฏิเสธ ยังควรพิจารณาแนวทางแบบ opt-in ด้วย
  • no-color.orgNO_COLOR, มาตรฐานสำหรับปิดการแสดงผลสี
  • force-color.orgFORCE_COLOR, มาตรฐานสำหรับบังคับการแสดงผลสี

1 ความคิดเห็น

 
GN⁺ 2 시간 전
ความเห็นจาก Hacker News
  • มาถึงจุดนี้แล้ว การที่ค่าเริ่มต้นกลายเป็นสถานะ ยินยอมให้ติดตาม ก็เป็นเรื่องที่น่าสนใจตรงแทบไม่มีใครแปลกใจ
    แฟล็กอย่าง DO_NOT_TRACK ดูเหมือนจะดี แต่ในขณะเดียวกันก็ให้ความรู้สึกขนลุกเหมือนมันหมายความว่าค่าเริ่มต้นคือ CONSENT_TO_TRACK=1

    • จะให้ “อย่าติดตาม” กันตอนไหนล่ะ? แฟล็กนี้คือสิ่งที่เบราว์เซอร์ของฉันส่งไปตอนเชื่อมต่อกับ เซิร์ฟเวอร์ของคนอื่น
      ที่อินเทอร์เน็ตเติบโตมาได้ก็เพราะโมเดลธุรกิจหลักคือโฆษณาและเซิร์ฟเวอร์ที่ดึงข้อมูลอนุมานจากผู้ใช้
      มันไม่สนุก ไม่เป็นส่วนตัว และไม่ปลอดภัย แต่ในเขตอำนาจศาลและอุตสาหกรรมส่วนใหญ่ก็ไม่ได้ผิดกฎหมาย
      แฟล็กนี้ไม่ใช่อุดมคติแบบเทพนิยาย แต่เป็นการตอบสนองต่อความเป็นจริงที่ถูกทำให้ฝังแน่นไปแล้วทั้งในทางปฏิบัติและทางกฎหมาย
    • มองว่าแฟล็กแบบนี้มีปัญหาในตัวเอง
      ฉันไม่อยากส่งข้อมูลอะไรออกไปเลย และแน่นอนว่าไม่อยากถูกติดตาม ดังนั้นการแสดงสิ่งนี้ด้วย ตัวแปรสภาพแวดล้อม เพียงตัวเดียวตั้งแต่แรกก็ฟังไม่สมเหตุสมผล
      เข้าใจยากว่าทำไมคนที่ไม่อยากถูกติดตามถึงยังโอเคกับการให้ข้อมูลนั้น และทันทีที่ให้ข้อมูลนั้นไป มันก็เท่ากับถูกทำเครื่องหมายแล้ว
  • ปกติจะตั้งชื่อตัวแปรให้เป็นรูปบวกเสมอ ดังนั้นในกรณีนี้ก็ควรเป็น ALLOW_TRACKING=0
    มันทำให้สม่ำเสมอและหลีกเลี่ยง ปฏิเสธซ้อนปฏิเสธ จึงอนุมานได้ง่ายกว่า
    แต่ชื่อ “DO NOT TRACK” อาจเป็นคำที่เริ่มติดตลาดไปพอสมควรแล้ว

    • อาจทำ ALLOW_TRACKING เป็นรายการคั่นด้วยจุลภาค เพื่อระบุเฉพาะแอปพลิเคชันที่อนุญาตก็ได้
      ตัวอย่างเช่น ถ้าอยากแชร์ telemetry ให้ go กับ brew แต่ไม่ต้องการให้ aws และตัวอื่น ๆ ก็อาจตั้งเป็น ALLOW_TRACKING=go,brew
  • มีโอกาสสูงที่จะลงเอยแบบเดียวกับ DNT ของเบราว์เซอร์
    แต่การรวมตัวแปรสภาพแวดล้อมประเภท “ห้ามติดตาม” ทั้งหมดไว้ในไฟล์ do_not_track.env เดียวก็ดูไม่เลว

    • มี https://toptout.me อยู่แล้ว และถ้าไม่ได้คิดจะทำของใหม่ มันก็ช่วยจัดการปัญหาพวกนี้ได้เยอะทีเดียว
      ถ้าอยากทำตามสเปกของหน้านี้แต่จัดการด้วยตัวแปรสภาพแวดล้อมง่าย ๆ ตัวเดียว ก็มี https://github.com/alloydwhitlock/do-not-track-cli ด้วย
    • วงการโฆษณาเพิกเฉยต่อ DNT โดยอ้างว่า Microsoft เปิดใช้เป็นค่าเริ่มต้นและนั่นเป็นการพรากสิทธิ์ในการเลือกของผู้ใช้
      ในความเป็นจริงก็น่าจะเป็นไปได้สูงว่าเดิมทีก็ไม่ได้ตั้งใจจะปฏิบัติตามอยู่แล้ว
    • ชอบทิศทางนี้
      แทนที่จะเรียกร้องให้ทุกคนใช้สิ่งเดียวกัน คำตอบที่ใช้งานได้จริงอาจเป็นแนวทางแบบนี้
      คิดว่าจะลองทำอะไรสักอย่างเป็นจุดเริ่มต้น
  • เผื่อไว้เป็นข้อมูล Go telemetry จะถูกเก็บไว้ในเครื่องเท่านั้นโดยค่าเริ่มต้นและไม่ได้อัปโหลด: https://go.dev/doc/telemetry

  • รู้สึกแปลกใจที่การกันไม่ให้ไลบรารี Python transformers ติดต่อกับ Hugging Face ทำได้ยากกว่าที่คิด
    ตั้ง HF_HUB_DISABLE_TELEMETRY=1 แล้ว และตอนเรียก Wav2Vec2CTCTokenizer.from_pretrained ก็ระบุ local_files_only=True ด้วย แต่ก็ยังมีคำเตือนว่าไม่มี HF_TOKEN ที่ถูกต้อง
    เพิ่งจะพอมั่นใจได้บ้างว่าเวลาโหลดโมเดล wav2vec2 จากดิสก์จะไม่มีการเชื่อมต่อออกไปหา HF ทุกครั้ง ก็ตอนบังเอิญไปเจอ HF_HUB_OFFLINE=1
    ถ้าไม่ใช่เพราะคำเตือน HF_TOKEN ที่น่ารำคาญนั้น ก็คงไม่รู้เลยว่ามันมีเรื่องแบบนี้เกิดขึ้น

    • HF มีชื่อเสียเรื่องทำให้ การทำงานแบบออฟไลน์ ยุ่งยาก
      แม้ทุกอย่างที่ต้องใช้จะอยู่ในเครื่องครบแล้ว วิธีจัดการเพื่อไม่ให้มันเสียเวลาไปกับการพยายามเชื่อมต่อก็ยังเปลี่ยนไปเรื่อย ๆ
      เมื่อก่อนยังมี TRANSFORMERS_OFFLINE, HF_DATASETS_OFFLINE อะไรพวกนี้ด้วย
    • เครื่องมืออย่าง Little Snitch จะช่วยจับสิ่งพวกนี้และหาว่าตัวไหนกำลังมี การสื่อสารแอบแฝง ได้ไหม?
  • ดูเหมือน ฮันนีพอต ที่มีประโยชน์
    ถ้าเป็นเครื่องมือที่ประกาศชัดว่ารองรับสเปกนี้ ก็อาจตีความได้ว่าตั้งแต่แรกมันเก็บ telemetry โดยไม่มีการยินยอมอย่างชัดเจน จึงเป็นเครื่องมือที่ควรหลีกเลี่ยง

    • การรองรับ DO_NOT_TRACK ไม่ได้แปลว่าการติดตามนั้นไม่ใช่แบบขอความยินยอมอย่างชัดเจนเสมอไป
      เช่น ซอฟต์แวร์อาจแครช แล้วตัวจัดการแครชถามว่าจะส่ง dump หรือไม่
      ถ้ามี DO_NOT_TRACK ตัวจัดการแครชเองก็จะถูกปิด ทำให้ไม่มีทั้งคำถามและไม่มีการส่ง dump
      ถ้ามีการนำไปใช้ในระดับหนึ่ง ก็น่าจะทำงานในลักษณะนั้น
      ฝั่งที่ทำเงินจากการติดตามอย่างโฆษณาคงจะไม่รองรับตัวเลือกแบบนี้
    • บริการส่วนใหญ่เก็บ telemetry กันอยู่แล้ว และการประกาศว่ารองรับก็ไม่ได้เปลี่ยนความจริงข้อนั้น
    • อย่าไปขุดลึกมากนักจะดีกว่า
      ไม่อย่างนั้นคุณอาจใช้เครื่องมือสมัยใหม่หลายอย่างไม่ได้เลย
  • ระหว่างที่รอให้บริษัทต่าง ๆ ค่อย ๆ นำข้อเสนอนี้ไปทำจริง มีที่ไหนที่รวบรวม วิธี opt-out ของเครื่องมือยอดนิยมไว้ในที่เดียวไหม?
    ดูเหมือนจะทำเป็นเชลล์โมดูลที่ตั้งค่าพวกนั้นให้เลยและอัปเดตรายการเป็นระยะ ๆ ก็ยังได้

  • อาจจะง่ายกว่าถ้าดูแล DNS เองแล้วใส่โดเมนที่มีปัญหาไว้ในรายการบล็อก
    มีรายการบล็อกดี ๆ ที่รวมโดเมน telemetry ไว้เป็นหลักหลายล้านรายการด้วย เช่น https://github.com/hagezi/dns-blocklists

    • ไปให้สุดกว่านั้นคืออย่าเอา ขยะสปายแวร์ แบบนั้นเข้ามาในคอมพิวเตอร์เลยดีกว่า
    • นี่แหละคือวิธีรับมือที่ถูกต้อง
      คนที่ชอบตะโกนเรื่อง “มาตรฐาน” ก็แค่กำลังเพิ่มอีกหนึ่งรายการเข้าไปในลิสต์ทางเลือกนอกระบบที่ยาวอยู่แล้วเท่านั้น
  • การห้ามติดตามแบบครอบจักรวาลของเบราว์เซอร์นั้นใช้กับทุกเว็บไซต์ที่เข้าเยี่ยมชมและการติดตามเพื่อจุดประสงค์ด้านโฆษณา จึงพอจะใช้ได้ในภาพรวม
    แต่ telemetry เป็นปัญหาคนละแบบโดยสิ้นเชิง ดังนั้นแม้การบล็อกเป็นค่าเริ่มต้นอาจเป็นทางเลือกหนึ่ง แต่การใช้ตัวแปรมาตรฐานตัวเดียวเพื่อแสดงเจตนากับทุกเครื่องมือคงทำได้ยากในทางปฏิบัติ

  • เมื่อหลายปีก่อนก็มีข้อเสนอแบบเดียวกันนี้ แต่ก็ไปไม่ถึงไหน
    https://web.archive.org/web/20200613155957/https://consoledo...