- Adopsi Rust oleh Ubuntu menunjukkan bahwa Rust dalam siklus adopsi teknologi sedang bergeser dari early adopter, melewati chasm, menuju tahap arus utama
- Canonical mengadopsi Rust sebagai bahasa default untuk perangkat lunak fondasi baru, menggantikan penggunaan C, C++, dan sebagian Python, serta berinvestasi dalam pengembangan utilitas yang aman terhadap memori baik dari sisi pendanaan maupun reputasi
- Karena pengguna Early Majority menginginkan "standar industri" dan kompatibilitas dengan workflow yang ada, penggantian utilitas secara drop-in menjadi strategi kunci untuk melewati chasm
- Isu perluasan standard library Rust kembali mengemuka, dan konsep "Rust Platform" yang ditolak pada 2016 kini dinilai ulang sebagai sesuatu yang justru bisa cocok bagi Early Majority
- Struktur yang menghubungkan perluasan adopsi dengan investasi, serta inklusivitas berbasis empati (empathy) dalam komunitas open source, sangat penting untuk tahap pertumbuhan Rust berikutnya
'Melewati chasm' bagi Rust berbeda di tiap domain
- Apakah Rust sudah melewati chasm dalam Technology Adoption Life Cycle berbeda-beda tergantung domainnya
- Di internal Amazon, Rust sudah sangat mapan untuk membangun data plane skala besar atau agen yang sadar sumber daya, tetapi untuk pengembangan umum masih ada persepsi bahwa Rust terlalu berlebihan
- Di ranah Safety Critical Software, sudah ada kisah sukses, tetapi sebagian besar industri masih berada dalam mode "wait and see"
Pentingnya "reference customer"
- Kunci untuk melewati chasm adalah mendapatkan reference customers
- Early adopter membeli "change agent", tetapi Early Majority menginginkan peningkatan produktivitas operasi yang ada dan berusaha meminimalkan diskontinuitas
- Melihat organisasi serupa berhasil adalah faktor paling meyakinkan dalam mengadopsi teknologi baru
- Keberhasilan Rust di tim S3 memang meyakinkan bagi tim layanan berskala besar, tetapi kurang langsung meyakinkan bagi tim layanan CRUD
Strategi adopsi Rust Ubuntu (Canonical)
- Dalam Rust Nation, VP of Engineering Canonical, Jon Seager, menyampaikan keynote "Rust Adoption At Scale with Ubuntu"
- Canonical sebelumnya membatasi bahasa pengembangan internalnya pada Python, C/C++, dan Go, tetapi belakangan menambahkan Rust dan mengadopsinya sebagai bahasa default untuk pekerjaan fondasi baru
- Mirip dengan keynote Lars Bergstrom tentang adopsi Rust di Google, pendekatan ini menggabungkan visi dan pragmatisme
- Inilah karakteristik yang tepat untuk beralih dari early adopter ke Early Majority
Investasi pada utilitas yang aman terhadap memori
- Jon Seager menyebut Ubuntu perlu mendukung pembangunan utilitas berbasis memory safety sebagai bentuk "pay it forward"
- Canonical mendanai pengembangan sudo-rs dan ntpd-rs milik Trifecta Tech Foundation, serta pekerjaan coreutils dari uutils
- Ubuntu lebih dulu mencoba dan memvalidasi hal-hal baru agar distro lain kemudian bisa ikut merasakan manfaatnya
- Utilitas drop-in yang bisa masuk ke workflow lama apa adanya sesuai dengan kebutuhan Early Majority untuk meminimalkan diskontinuitas
Kebutuhan adopter baru: perluasan standard library
- Dalam sebuah jamuan makan, Jon Seager mengatakan bahwa kebijakan standard library kecil milik Rust perlu ditinjau ulang
- Ini adalah permintaan yang telah berulang selama bertahun-tahun; bukan sekadar menyediakan standard library besar, tetapi membayangkan alternatif dalam bentuk proyek bernama "Battery Packs"
- Rust Platform yang diusulkan pada 2016 (gagasan untuk mengakui crate tertentu sebagai standard library yang diperluas) dulu ditolak oleh early adopter, tetapi kini dinilai ulang sebagai sesuatu yang mungkin cocok bagi Early Majority
- Saat itu pandangan yang dominan adalah bahwa menambahkan dependensi ke
Cargo.toml saja sudah cukup
Perlunya perubahan untuk pertumbuhan
- Untuk beralih dari early adopter ke Early Majority, diperlukan pesan bahwa Rust bukan "state-of-the-art" melainkan "industry standard"
- Rust berhasil membangun pengenalan di industri, dan kini harus menjadi pilihan terbaik berdasarkan "apa Rust sebenarnya", bukan "apa yang mungkin bisa menjadi Rust"
- Keduanya kadang bisa saling tegang
- Untuk memasarkan kepada kaum pragmatis, dibutuhkan kesabaran, pemahaman atas isu industri terkait, dan kehadiran di konferensi industri
Struktur yang menghubungkan adopsi dengan investasi
- Perluasan adopsi Rust disertai dengan peningkatan permintaan terhadap proyek dan ekosistem Rust
- Bagi organisasi open source seperti Canonical, yang lebih penting daripada $$ adalah membangun hubungan antarlembaga dan kontribusi
- Pengembang Rust for Linux awalnya dibantu maintainer Rust, tetapi secara bertahap mulai memperbaiki bug sendiri, sementara maintainer beralih ke peran mentor
- Tren yang menarik, pendanaan sering kali datang dari perusahaan yang sedang mempertimbangkan adopsi Rust, bukan dari perusahaan yang sudah mengadopsinya
- Early adopter di dalam organisasi mendorong adopsi internal dan mengalokasikan anggaran untuk membangun fitur "table stakes"
- Menurut Alexandru Radovici dari Rust Foundation Silver Member Directory, banyak perusahaan perangkat lunak safety-critical punya dana untuk menutup gap Rust, tetapi tidak tahu bagaimana cara menggunakannya
Peran open source dan pentingnya empati
- Open source adalah platform yang sangat baik untuk melewati chasm, tetapi klik-klik kecil (cliques) dan "tradisi lisan (oral traditions)" bisa menjadi hambatan masuk
- Penggunaan istilah yang salah dapat membuat ide ditolak, dan satu respons yang kasar dapat membuat kontributor baru pergi
- Hal yang paling dibutuhkan Rust untuk tahap pertumbuhan berikutnya adalah Empathy in Open Source
- Kuncinya adalah mendatangi tempat di mana Rust bisa membantu orang, lalu mendukung dan memberdayakan mereka
1 komentar
Komentar Hacker News
Fakta bahwa Ubuntu menggunakan userland dengan lisensi non-GPL berarti hal itu bisa membuka lebih banyak ruang untuk TiVoization dalam ekosistem Linux
Jika digabung dengan arah yang dibawa Amutable dari kubu systemd, bisa saja muncul distro Linux tertutup yang tidak dapat dimodifikasi pengguna
Dari sudut pandang perusahaan, lingkungan tertutup dengan verifikasi tanda tangan penuh bisa terlihat menarik. Membayangkan dunia di mana bahkan “ls” atau “cd” menjadi closed source terasa agak apokaliptik
Jurang (chasm) yang sebenarnya yang harus dilampaui Rust adalah dukungan dynamic linking dengan ABI yang aman
Rust perlu bisa menjamin keamanan meski satu library diubah, dan mencapai stabilitas ABI setingkat C agar adopsi Rust di kubu C/C++ menjadi memungkinkan
Masalah yang lebih besar daripada adopsi Rust oleh Ubuntu adalah bahwa mereka masih menangani build penting dengan skrip curl|bash
Itu terlihat jelas di snapcraft.yaml milik firefox-snap
Fakta bahwa proyek Rust Coreutils memakai lisensi MIT terasa mengganjal
Filsafat FSF memang sering dikritik, tetapi GPL melindungi open source. Kalau Canonical mengubah Ubuntu secara keseluruhan menjadi MIT, entah apa yang akan terjadi
Karena rust-coreutils, instalasi CUDA Toolkit tidak bisa dilakukan. Isu terkait ada di forum NVIDIA
Konsep “Crossing the chasm” menarik. Selain kasus coreutils di Ubuntu, ada banyak jurang lain yang sedang coba dilampaui Rust
Ada Rust for Linux atau Rust untuk industri otomotif, tetapi sejauh ini tampaknya masih berhenti di level driver
Logika bahwa standard library bisa diubah nanti itu berbahaya. Pengguna menginginkan sistem yang stabil dan berkualitas tinggi, bukan “jurang”
Ketidakmatangan ekosistem Rust adalah faktor yang menghambat adopsi. Banyak crate masih berada di versi sebelum 1.0 atau sekadar wrapper C yang sederhana. Untuk kriptografi cukup bagus, tetapi hal seperti SAML sulit ditemukan
libc, yang sangat terikat dengan API, juga sulit dinaikkan versinya. Secara pribadi saya merujuk ke daftar terkurasi seperti blessed.rsAda gerakan untuk “menerjemahkan” kode C++ ke Rust secara vibe-translate sambil mengganti lisensinya. Misalnya, sudo-rs justru punya rekam jejak keamanan yang lebih buruk daripada versi C
Standard library yang besar di .NET benar-benar nyaman. Sebagian besar pekerjaan bisa dilakukan dengan cara standar, dan kalau ada implementasi aneh, mayoritas orang akan mendorong standarisasi
std/core milik Rust sendiri sudah terlalu besar sehingga di mikrokontroler perlu trik seperti weak symbol.
stdlib kecil lebih menguntungkan untuk menjaga stabilitas API dan mengurangi beban pemeliharaan. C++ sudah banyak menderita karena masalah ini, jadi Rust harus berhati-hati