Pengalaman seorang mantan developer Microsoft yang bekerja pada BitLocker untuk Windows 8 telah memicu diskusi tentang keterbatasan alat pengembangan internal Microsoft . Cerita ini mengungkapkan bagaimana bahkan tugas sederhana seperti memperbarui pesan error bisa menjadi tantangan yang kompleks karena keterbatasan alat.
Masalah dengan Pesan Error Statis
Developer tersebut menghadapi masalah kegunaan yang umum saat bekerja pada sistem konfigurasi BitLocker . Ketika administrator menyiapkan kebijakan enkripsi yang melebihi batas sistem, pengguna akan melihat pesan error yang samar seperti The BitLocker minimum passphrase length is too high tanpa mengetahui berapa batas sebenarnya. Tujuannya sederhana: mengubah pesan-pesan ini agar lebih spesifik, seperti The BitLocker minimum passphrase length cannot exceed 20.
Namun, persyaratan lokalisasi Microsoft menciptakan hambatan teknis. Semua teks yang menghadap pengguna harus berada dalam file .mc
terpisah untuk tujuan penerjemahan, sementara batas sebenarnya didefinisikan sebagai konstanta dalam kode C++. Pemisahan ini berarti tidak ada cara langsung untuk mereferensikan konstanta C++ dalam pesan error.
Arsitektur Sistem Pesan Error Microsoft:
- Teks yang ditampilkan kepada pengguna disimpan dalam file
.mc
untuk lokalisasi - Konstanta C++ didefinisikan secara terpisah dalam file header
- API
ShowError()
hanya menerima ID resource, bukan string format - Tidak ada mekanisme bawaan untuk mereferensikan konstanta C++ dalam file pesan
Solusi Preprocessor Raymond Chen
Ketika developer tersebut meminta bantuan di mailing list internal, Raymond Chen - developer Windows terkenal di balik blog The Old New Thing - menyarankan menggunakan preprocessor C pada file .mc
. Ini akan memungkinkan file pesan error untuk mereferensikan konstanta yang sama yang digunakan dalam kode C++, menjaga semuanya tetap sinkron.
Meskipun secara teknis masuk akal, solusi ini memerlukan modifikasi sistem build Microsoft yang kompleks. Developer tersebut akhirnya memilih untuk tidak mengimplementasikannya, karena takut akan risiko merusak nightly build yang diandalkan oleh ratusan kolega.
Solusi Preprocessor Raymond Chen:
- Menjalankan C preprocessor pada file
.mc
sebelum kompilasi - Memungkinkan file pesan untuk mereferensikan konstanta C++ secara langsung
- Memerlukan modifikasi konfigurasi sistem build
- Risiko merusak nightly build untuk seluruh tim pengembangan
Reaksi Komunitas Menyoroti Masalah yang Lebih Luas
Cerita ini telah beresonansi dengan para developer yang melihatnya sebagai lambang masalah yang lebih besar dengan praktik pengembangan Microsoft . Beberapa anggota komunitas mencatat bahwa ekosistem lain seperti gettext telah lama mendukung pemformatan pesan dinamis, mempertanyakan mengapa Microsoft tidak memiliki kemampuan serupa untuk produk unggulan mereka.
Cara Microsoft adalah melakukan hal-hal secara terbalik, membuat yang mungkin menjadi tidak mungkin, dan membungkus API sederhana yang dipahami dengan baik di balik 16 lapisan abstraksi dengan nama-nama yang mengerikan.
Yang lain menunjukkan bahwa API ShowError()
itu sendiri terbatas, hanya menerima ID sumber daya daripada format string yang bisa menyertakan nilai dinamis. Pilihan arsitektur ini memaksa developer ke dalam solusi sementara yang seharusnya tidak diperlukan.
Perspektif Modern tentang Alat Legacy
Enam belas tahun kemudian, developer tersebut merefleksikan bahwa solusi preprocessor Raymond Chen masih terasa tidak terduga dan tidak jelas. Ini menunjukkan bahwa masalahnya bukan kurangnya pengetahuan developer, tetapi lebih pada celah dalam ekosistem alat internal Microsoft .
Diskusi ini mengungkapkan bagaimana bahkan di Microsoft , saat bekerja pada Windows itu sendiri, developer terkadang tidak memiliki cara standar untuk menyelesaikan tugas-tugas dasar. Ketakutan akan merusak sistem build yang kompleks bisa melumpuhkan kemajuan pada perbaikan yang tampaknya sederhana.
Cerita ini berfungsi sebagai pengingat bahwa bahkan perusahaan teknologi besar dapat memiliki alat internal yang menciptakan gesekan yang tidak perlu bagi developer mereka sendiri, berpotensi memengaruhi kualitas produk yang diandalkan oleh jutaan pengguna.
Referensi: I Once Appeared in The Old New Thing