Hệ thống theo dõi lỗi tuân thủ quyền riêng tư trên quy mô lớn
Author
Venue
Nghệ thuật, Khoa học và Kỹ thuật của Lập trình
Abstract
Bối cảnh: Roblox Studio cho phép hàng triệu nhà sáng tạo xây dựng các trải nghiệm tương tác bằng cách lập trình trong một biến thể của Lua có tên là Luau. Các nhà sáng tạo tạo thành một nhóm rộng lớn, từ những người mới bắt đầu viết kịch bản đầu tiên đến các nhà phát triển chuyên nghiệp; do đó, Luau phải hỗ trợ một đối tượng người dùng đa dạng. Là một phần trong nỗ lực hỗ trợ mọi loại lập trình viên, Luau bao gồm một hệ thống kiểu tùy chọn, dần dần và nỗ lực hết sức để giảm thiểu các lỗi dương tính giả. Câu hỏi nghiên cứu: Vì Luau hiện đang được nhiều nhà sáng tạo sử dụng, chúng tôi muốn thu thập dữ liệu để cải thiện ngôn ngữ và đặc biệt là hệ thống kiểu. Cách thu thập dữ liệu tiêu chuẩn là triển khai hệ thống telemetry phía client; tuy nhiên, chúng tôi không thể thu thập dữ liệu cá nhân hoặc thông tin độc quyền, điều này có nghĩa là chúng tôi không thể thu thập các đoạn mã nguồn, thông báo lỗi hoặc thậm chí đường dẫn tệp. Các câu hỏi nghiên cứu do đó xoay quanh việc thực hiện telemetry không xâm phạm và thu được thông tin từ đó về các lỗi kiểu. Phương pháp: Chúng tôi đã thiết kế và triển khai một hệ thống telemetry được ẩn danh hóa và lấy mẫu ngẫu nhiên cho Luau. Các bản ghi telemetry bao gồm dấu thời gian, ID phiên, lý do gửi và tóm tắt số liệu về các phân tích kiểu gần nhất. Thông tin này cho phép chúng tôi nghiên cứu các lỗi kiểu theo thời gian mà không tiết lộ dữ liệu riêng tư. Chúng tôi đã triển khai hệ thống này trong Roblox Studio vào mùa xuân năm 2023 và thu thập được hơn 1,5 triệu bản ghi telemetry từ hơn 340.000 phiên. Kiến thức: Chúng tôi trình bày một số phát hiện về Luau, tất cả đều cho thấy telemetry là một phương pháp hiệu quả để nghiên cứu thực tiễn của lỗi kiểu. Một trong những phát hiện ít bất ngờ là các kiểu dữ liệu dần dần (gradual types) theo tùy chọn (opt-in) không được ưa chuộng: có sự chênh lệch gấp 100 lần giữa số phiên Luau không có kiểu dữ liệu và số phiên có kiểu dữ liệu. Một điều bất ngờ là chế độ nghiêm ngặt (strict mode) cho phân tích kiểu dữ liệu quá thận trọng trong việc tương tác với các tài sản dữ liệu. Một phát hiện đáng an tâm là phân tích kiểu dữ liệu hiếm khi đạt đến giới hạn nội bộ về kích thước vấn đề. Cơ sở: Các phát hiện của chúng tôi được hỗ trợ bởi bộ dữ liệu gồm hơn 1,5 triệu bản ghi telemetry. Dữ liệu và các skript để phân tích dữ liệu này có sẵn trong một tài liệu. Tầm quan trọng: Ngoài những lợi ích trực tiếp đối với Luau, các phát hiện của chúng tôi về kiểu dữ liệu và lỗi kiểu có ý nghĩa đối với việc áp dụng và tính thân thiện với người dùng trong các ngôn ngữ kiểu dần dần khác như TypeScript, Elixir và Typed Racket. Thiết kế telemetry của chúng tôi có ý nghĩa rộng rãi, vì nó báo cáo về các lỗi kiểu mà không tiết lộ thông tin nhạy cảm.
