Telemetri Kesalahan Tipe yang Menghormati Privasi dalam Skala Besar
Author
Venue
Seni, Ilmu Pengetahuan, dan Teknik Pemrograman
Abstract
Konteks: Roblox Studio memungkinkan jutaan kreator membangun pengalaman interaktif dengan memprogram menggunakan varian Lua yang disebut Luau. Para kreator ini membentuk kelompok yang luas, mulai dari pemula yang menulis skrip pertamanya hingga pengembang profesional; oleh karena itu, Luau harus mendukung audiens yang luas. Sebagai bagian dari upayanya untuk mendukung semua jenis programmer, Luau menyertakan sistem tipe opsional dan bertahap serta berupaya keras untuk meminimalkan kesalahan positif palsu. Pertanyaan: Karena Luau saat ini digunakan oleh banyak kreator, kami ingin mengumpulkan data untuk meningkatkan bahasa ini, khususnya sistem tipenya. Cara standar untuk mengumpulkan data adalah dengan menerapkan telemetri sisi klien; namun, kami tidak dapat mengumpulkan data pribadi atau informasi rahasia, yang berarti kami tidak dapat mengumpulkan potongan kode sumber, pesan kesalahan, atau bahkan jalur file. Pertanyaan penelitian ini berfokus pada cara melakukan telemetri yang tidak invasif dan memperoleh wawasan dari data tersebut mengenai kesalahan tipe. Pendekatan: Kami merancang dan mengimplementasikan sistem telemetri yang dianonimkan dan menggunakan sampling acak untuk Luau. Catatan telemetri mencakup cap waktu, ID sesi, alasan pengiriman, dan ringkasan numerik dari analisis tipe terbaru. Informasi ini memungkinkan kami mempelajari kesalahan tipe seiring waktu tanpa mengungkapkan data pribadi. Kami menerapkan sistem ini di Roblox Studio pada musim semi 2023 dan mengumpulkan lebih dari 1,5 juta catatan telemetri dari lebih dari 340.000 sesi. Temuan: Kami menyajikan beberapa temuan tentang Luau, yang semuanya menunjukkan bahwa telemetri adalah cara yang efektif untuk mempelajari pragmatika kesalahan tipe. Salah satu temuan yang kurang mengejutkan adalah bahwa tipe bertahap dengan opsi opt-in tidak populer: terdapat selisih 100 kali lipat antara jumlah sesi Luau tanpa tipe dan yang bertipe. Temuan mengejutkan lainnya adalah bahwa mode ketat untuk analisis tipe terlalu konservatif dalam interaksi dengan aset data. Temuan yang menggembirakan adalah bahwa analisis tipe jarang mencapai batas internalnya terkait ukuran masalah. Dasar: Temuan kami didukung oleh dataset lebih dari 1,5 juta catatan telemetri. Data dan skrip untuk menganalisisnya tersedia dalam sebuah artefak. Pentingnya: Di luar manfaat langsung bagi Luau, temuan kami tentang tipe dan kesalahan tipe memiliki implikasi bagi adopsi dan ergonomi di bahasa-bahasa gradual lainnya seperti TypeScript, Elixir, dan Typed Racket. Desain telemetri kami menarik secara luas, karena melaporkan kesalahan tipe tanpa mengungkapkan informasi sensitif.
