GitHub CLI nay thu thập telemetry dựa trên định danh giả
(cli.github.com/telemetry)- GitHub CLI gửi telemetry dựa trên định danh giả nhằm tăng khả năng quan sát việc sử dụng tính năng và hỗ trợ cải thiện sản phẩm
- Dựa trên mức độ chấp nhận subcommand và mẫu sử dụng flags để quyết định ưu tiên công việc, đánh giá liệu tính năng có đáp ứng nhu cầu người dùng hay không, và xem xét lại discoverability cũng như design
- Với triển khai mã nguồn mở, có thể trực tiếp xem xét mã telemetry trong kho
cli/cli, và có thể dùng logging mode để kiểm tra JSON payload trước khi thực sự gửi đi - Có thể opt-out bằng biến môi trường
GH_TELEMETRY=false,DO_NOT_TRACK=truehoặcgh config set telemetry disabled; biến môi trường được ưu tiên hơn config - Các sự kiện telemetry được gửi tới hạ tầng phân tích nội bộ của GitHub; trang này chỉ nói về việc thu thập dữ liệu phía client của
gh, còn extensions và Copilot CLI là các đối tượng riêng
Telemetry
- GitHub CLI gửi telemetry dựa trên định danh giả nhằm hỗ trợ cải thiện sản phẩm
- Cung cấp thông tin để người dùng hiểu dữ liệu nào được gửi đi và vì sao
Vì sao thu thập telemetry
- Đề cập nhu cầu có khả năng quan sát việc sử dụng các tính năng của GitHub CLI, đặc biệt khi mức độ agentic adoption tăng lên, nhằm hiểu cách công cụ đang thực sự được sử dụng
- Nhóm sử dụng dữ liệu này để quyết định ưu tiên công việc
- Đánh giá liệu tính năng có thực sự đáp ứng nhu cầu người dùng hay không
- Nêu rõ mục đích kiểm tra mức độ chấp nhận sau khi phát hành subcommand mới
- Nếu hầu như không có người dùng, có thể cần xem xét lại discoverability hoặc design của tính năng đó
- Nếu xác nhận có mức sử dụng cao cùng với một số flags nhất định, có thể xác định nơi nên đầu tư để mang lại trải nghiệm tốt hơn
Xem xét telemetry
- GitHub CLI là mã nguồn mở, và có thể trực tiếp xem xét phần triển khai telemetry trong kho
cli/cli - Có thể dùng logging mode để xem dữ liệu dự kiến sẽ được gửi mà không thực sự gửi đi
- Hỗ trợ cách dùng bằng biến môi trường
export GH_TELEMETRY=log
- Hỗ trợ cách dùng bằng cấu hình CLI
gh config set telemetry log
- Hỗ trợ cách dùng bằng biến môi trường
- Trong logging mode, JSON payload vốn sẽ được gửi sẽ được in ra stderr
- Có thể kiểm tra từng trường trước khi quyết định có tiếp tục bật telemetry hay không
- Đưa ra ví dụ lệnh
GH_TELEMETRY=log gh repo list --archived
- Nêu rõ thông tin sự kiện có trong payload ví dụ
- Kiểu sự kiện
command_invocation - Các mục dimensions gồm
agent,architecture,command,device_id,flags,invocation_id,is_tty,os,timestamp,version - Ví dụ giá trị gồm
architecture: arm64,command: gh repo list,flags: archived,os: darwin,version: 2.91.0
- Kiểu sự kiện
- Lệnh đó chỉ có thể ghi log telemetry về chính xác lệnh đã chạy và ngữ cảnh của nó
- Khi thay đổi biến môi trường, các events và event dimensions có trong payload có thể thay đổi
- Khi thay đổi tài khoản đã xác thực, các mục được bao gồm cũng có thể thay đổi
Cách opt-out
- Có thể opt-out khỏi telemetry đã được kiểm tra trong logging mode
- Hỗ trợ cách dùng bằng biến môi trường
export GH_TELEMETRY=false- Có thể dùng các giá trị falsy như
0,false,disabled, chuỗi rỗng - Cũng hỗ trợ quy ước
DO_NOT_TRACK, với ví dụexport DO_NOT_TRACK=true
- Hỗ trợ cách dùng bằng cấu hình CLI
gh config set telemetry disabled
- Biến môi trường được ưu tiên cao hơn giá trị config
Dữ liệu được gửi tới đâu
- Các sự kiện telemetry được gửi tới hạ tầng phân tích nội bộ của GitHub
- Để biết thêm về cách xử lý dữ liệu, tham khảo GitHub General Privacy Statement
Thông tin thêm
- GitHub CLI hỗ trợ mở rộng tính năng bằng cách cài đặt extensions của GitHub và bên thứ ba, bao gồm cả agents
- Các extensions này có thể tự thu thập dữ liệu sử dụng
- Không bị kiểm soát bởi thiết lập opt-out này
- Cần xem tài liệu của từng extension để biết cách chúng báo cáo telemetry và liệu có thể tắt hay không
- Trang này chỉ nói về việc thu thập dữ liệu phía client của GitHub CLI
gh- Không áp dụng cho GitHub Copilot và Copilot CLI
- Copilot CLI xử lý việc thu thập dữ liệu riêng biệt
- Tham khảo
Using GitHub Copilot CLI,Responsible Use of the GitHub Copilot CLIđể biết thêm thông tin
1 bình luận
Ý kiến Hacker News
Tôi thắc mắc vì sao các đội ngũ phát triển trong doanh nghiệp lúc nào cũng muốn soi người dùng bằng telemetry
Không lẽ chỉ kỹ thuật tốt và thiết kế tốt là vẫn chưa đủ sao
Git đã vận hành tốt hơn 20 năm mà không cần phân tích chi li ai dùng tính năng nào hay lệnh nào, nên tôi nghi ngờ liệu có telemetry thì nó thật sự tốt hơn hay chỉ làm tăng thêm dữ liệu gây nhiễu
Không có analytics thì giống như lái xe khi bị bịt mắt
Bạn không biết người dùng thực sự coi trọng điều gì, nên tối ưu luồng nào, và khác biệt giữa điều mọi người nói với cách họ thực sự dùng phần mềm là lớn đến mức đáng ngạc nhiên
Trong nhiều trường hợp rất khó lấy được phản hồi tốt từ mọi người, và dù ai cũng nói họ thích ý tưởng cho tính năng X thì thực tế có thể chẳng ai dùng
Ngoài ra, dù có vẻ như có một nhóm fan rất ồn ào thì điều đó cũng chưa chắc chuyển thành doanh thu hay mức sử dụng thực tế
Tôi nghĩ nếu Git có telemetry thì rất có thể nó đã tốt hơn
Git nổi tiếng là UI tệ
Dữ liệu hẳn đã cho thấy ngay từ sớm là người dùng chật vật nhiều đến mức nào, và chẳng hạn những cải tiến như
git restorehẳn đã xuất hiện sớm hơn nhiều thay vì các lệnh kém trực quan nhưgit checkout -- foo.txtNhững người không trực tiếp dùng công cụ thì không hiểu cách nó được dùng trong thực tế, nên PM phụ trách công cụ cho dev sẽ đòi loại dữ liệu này để làm công việc của họ
Nó giống với cấu trúc mà PM thương mại điện tử chất đống script theo dõi lên frontend
Trước đây chỉ với kỹ sư thôi cũng đã có thể thiết kế cách tương tác với người dùng đủ tốt, nhưng sau thời kỳ VC thì mô hình sản phẩm công nghệ bị dẫn dắt sâu bởi người không chuyên kỹ thuật đã trở nên cố định, và đó mới là vấn đề
Cuối cùng dữ liệu sẽ rơi vào tay họ, và ai đó lại có thể hợp thức hóa lương PM
Với tôi, điều đó không hề rõ ràng
Đây có vẻ là ví dụ tiêu biểu của việc kỹ sư làm giao diện cho kỹ sư mà không có vòng phản hồi tốt
Trớ trêu thay, chính ví dụ này lại cho thấy rằng nhà phát triển cần hiểu tốt hơn sản phẩm của mình thực sự được dùng như thế nào
Kịch bản sử dụng trong đầu nhà phát triển thường khác thực tế khá xa
Tôi nghĩ vấn đề opt-out của
ghCLI phức tạp hơn tưởng tượngghcòn chạy trong môi trường CI/CD hoặc trên server, mà ở những môi trường đó người ta có thể không muốn có kết nối đi ragithub.comkhông phải vì riêng tư mà vì ràng buộc mạngỞ những nơi như vậy, nếu telemetry mặc định bật thì CI có thể fail hoặc Bastion host có thể hoàn toàn không chạm được tới GitHub
Trong khi đó, bản thân Git hoạt động hoàn toàn cục bộ cho đến khi người dùng chủ động push
Tức là mô hình tin cậy khác nhau
Git sẽ không bao giờ phone home nếu bạn không cấu hình, còn
ghlà wrapper cho GitHub API nên tôi thừa nhận về mặt chức năng nó cần có các lệnh gọi ra ngoàiNhưng tách biệt với chuyện đó, tôi nghĩ vẫn cần xem xét riêng xem có nên thu thập thêm và tải lên cả mẫu sử dụng lệnh hay không
ghkhông kết nối được tớiGitHub.comthì về cơ bản nó còn hữu dụng khôngHay trường hợp chính là kết nối tới enterprise GitHub
Nếu ba nhà phát triển đang dành 80% thời gian cho một khu vực nào đó của codebase mà thực tế chẳng ai dùng và cũng khó có khả năng tăng lên trong tương lai, thì có lẽ nên chuyển nhân lực sang chỗ khác hoặc nghĩ lại chính tính năng đó
Tuy nhiên, vấn đề với kiểu analytics này là dù có thể dùng một cách vô hại, vẫn tồn tại hiểu biết rằng có thể gắn định danh duy nhất với mẫu hành vi rồi dùng machine learning để tái dựng danh tính
Nếu còn kèm cả timestamp thì càng nghiêm trọng hơn
Vì vậy tôi nghĩ nên cho thấy chính xác telemetry nào được gửi đi và khi nào
Ví dụ có thể có một tùy chọn không gửi đi nhưng hiển thị ở chế độ verbose những gì sẽ được gửi, rồi để người dùng xem xét xong mới quyết định có bật hay không
Tôi thấy cách như Steam Hardware Survey, tức là cho thấy cái gì sẽ được gửi, mới là hợp lý
Mọi lệnh
ghrốt cuộc cũng chỉ là wrapper cho API của GitHub, nên tôi cảm thấy cuộc tranh luận này vì thế lại càng rối hơnTôi thích những PR ngắn thế này
https://github.com/cli/cli/pull/13254
Nội dung cũng đơn giản, nên tôi hiểu là họ đã xóa env var dùng để chặn telemetry để chuyển sang bật mặc định
Trừ enterprise ra thì cấu trúc này trông gần như là ép buộc phải bật
Tôi thật sự hài lòng vì tháng trước đã triển khai gitea cho homelab
Nó có cả tính năng import từ GitHub, và thành thật mà nói tôi thấy còn nhanh hơn GitHub và uptime cũng tốt hơn
Claude cũng kết nối tốt với
teaCLI và Git, gần như là bản sao GitHub nhưng đến giờ tôi còn thấy nó tốt hơnTốc độ nhanh và uptime tốt
Thậm chí nó chạy trên con Pi 4 trong tủ cạnh bàn làm việc nên dù mất Internet vẫn tiếp tục hoạt động
Tôi còn gửi backup ra offsite bằng borg và syncthing
Khâu thiết lập hơi tốn công một chút, nhưng sau đó thời gian bảo trì gần như bằng không
Khoảng hai tuần tôi chỉ SSH vào một lần để kiểm tra dung lượng SSD, mức dùng RAM,
apt update,upgrade, và các đợt nâng major version là xongTôi tự hỏi có phải ai cũng nghĩ rằng GitHub vốn đã thu thập và tổng hợp mọi request đi vào server của họ rồi không
Suy cho cùng, lý do tồn tại của
ghCLI cũng là để tương tác với chính các server đóNếu bạn thật sự không muốn bị theo dõi request, thì có lẽ phải opt-out nhiều thứ hơn rất nhiều chứ không chỉ một thiết lập này
Nhưng lần này có vẻ họ muốn bổ sung thêm metric phía client để theo dõi tốt hơn không chỉ luồng đi tới GitHub mà cả những luồng đi tới GitLab, Codeberg và nơi khác
Tôi nghĩ từ góc nhìn GitHub thì đây có thể là chuyện tốt
Công ty nào cũng cần loại dữ liệu này, có nơi dùng để cải thiện sản phẩm và có nơi dùng cho những mục đích kém đẹp hơn
Tôi biết người dùng HN ghét telemetry, nhưng nếu từng tự xây SaaS thì bạn sẽ hiểu telemetry gần như là bắt buộc
Cuối cùng điều tôi muốn chỉ ra là thiếu đối thoại
Cốt lõi nằm ở chi tiết, và tôi đang nghĩ xem có dịch vụ trung gian đáng tin cậy nào có thể tạo ra vùng trung hòa để cả người dùng lẫn bên làm sản phẩm đều chấp nhận được hay không
Tôi cũng nói rõ là đang tổng hợp những gì mình tìm hiểu được với sự trợ giúp của Claude thành một Gist
Điều này khiến tôi nghĩ tới Embrace, extend, extinguish của Microsoft
Hai bước đầu đã diễn ra rồi, và tôi dự đoán trong vòng 5 năm GH CLI sẽ trở thành cách duy nhất để tương tác với repository trên GitHub
Khi đó bước thứ ba cũng hoàn tất và chu kỳ kết thúc
Nó nghe như một viễn cảnh phi thực tế đến mức tôi còn muốn hỏi là anh định cược bao nhiêu
Mọi người từng liên tục áp khung EEE cho WSL, hỗ trợ GPU, WSLg và PowerShell, nhưng thực tế chẳng có chuyện đó xảy ra
Bây giờ cũng vậy, và ngay từ đầu cũng khó thấy dấu hiệu nào cho thấy có kế hoạch như thế
Đây không phải thứ có thể diễn giải bằng cảm giác; tôi muốn thấy bằng chứng rằng thủ pháp lặp lại mà Microsoft từng thực sự dùng trong thập niên 90 đang được tái hiện ở đâu vào lúc này
Cũng không có chuyện Microsoft Git đang khóa nhiều tính năng hơn bản mã nguồn mở, Microsoft Linux cũng vậy
GitHub là một wrapper trên Git, và có thiết kế cốt lõi là một Git server chạy trên HTTP và SSH
Phá vỡ nền tảng đó để khóa quyền truy cập repository chỉ qua
ghsẽ là thay đổi quá lớn nên tôi thấy không thực tếghchỉ đơn giản là công cụ giúp gọi API dễ hơn, và phần lớn người dùng GitHub thậm chí còn không biết nó tồn tạiThứ có khả năng làm hỏng GitHub hơn không phải EEE ác ý, mà là quản lý kém năng lực
Tôi thấy khả năng họ sa sút vì ban điều hành không hiểu người dùng và sản phẩm còn lớn hơn nhiều
Đã có những repository khiến tôi cảm thấy xử lý mà không có
ghthì khá bất tiện, và tôi thấy đang dần xuất hiện luồng ép buộcTôi không biết chính xác
ghmang lại thêm điều gì vì chưa dùng, nhưng với tôi chỉ các lệnh Git tiêu chuẩn là đã đủTôi thấy bối rối không biết
pseudonymous telemetryở đây có nghĩa là telemetry định danh giả hay thực chất là telemetry không hề ẩn danhHai cách diễn đạt đó gần như trái ngược nhau, mà nếu theo đúng câu chữ hiện tại thì nghe như đang nói họ thu thập dữ liệu có thể nhận diện được
pseudoanonymouscó vẻ là cách nói do người đăng HN tự tạo raCó vẻ như mỗi máy sẽ có một UUID, và cấu trúc nhận diện máy dựa trên đó