1 poin oleh GN⁺ 2024-04-21 | 1 komentar | Bagikan ke WhatsApp
  • Thunderbird sedang dikembangkan untuk menambahkan dukungan Exchange menggunakan bahasa Rust
    • Pada versi ESR (Extended Support) berikutnya yang dijadwalkan rilis pada Juli, prioritas awal adalah dukungan email terlebih dahulu, sedangkan fitur kalender dan buku alamat akan didukung kemudian
    • Brendan Abolivier, Ikey Doherty, dan Sean Burke sedang mengerjakan hal ini

Alasan memilih bahasa Rust

  • Thunderbird adalah proyek lama yang memiliki banyak kode C++ lawas
  • Untuk mengembangkan fitur baru, dibutuhkan bahasa yang kuat sekaligus mudah dipelihara dalam jangka panjang
  • Rust memiliki keunggulan seperti keamanan memori, performa, modularitas, dan ekosistem
  • Infrastruktur CI yang dibagikan dengan Firefox sudah mendukung Rust
  • Melalui XPCOM, pemanggilan antar Rust, C++, dan JavaScript dimungkinkan
  • Perangkat Rust yang kuat dapat dimanfaatkan untuk memperbaiki arsitektur lama
  • Rust mendukung berbagai platform sehingga bisa digunakan ulang di proyek lain seperti Thunderbird untuk Android/K-9 Mail

Tantangan yang dihadapi

  • Banyak pola asinkron di kode lama yang tidak cocok dengan Rust
  • Di codebase Firefox dan Thunderbird, ada banyak fitur yang belum memiliki binding Rust
  • Sistem build Thunderbird mengambil kode Firefox sebagai subtree sehingga integrasi kode Rust menjadi sulit
    • Karena Cargo workspace tidak bisa dinest, masalah ini diselesaikan dengan memodifikasi alat build mach
  • XPCOM pada dasarnya dirancang untuk C++, sehingga penggunaan dari Rust membutuhkan banyak boilerplate
    • Masalah ini diatasi dengan mengimplementasikan logika per protokol di Rust lalu membuat kelas bridge di C++ untuk menghubungkannya dengan kode yang sudah ada

Implementasi dukungan Exchange dengan Rust

  • API EWS (Exchange Web Services) berkomunikasi lewat HTTP dan menggunakan permintaan serta respons dalam format XML
  • Untuk mengirim permintaan HTTP, digunakan komponen jaringan necko milik Firefox, tetapi pemakaiannya kurang nyaman karena diekspos melalui XPCOM
    • Dibuat crate xpcom_async untuk mengubah operasi asinkron XPCOM ke sintaks async/await milik Rust
    • Dibuat crate moz_http untuk menyediakan API klien HTTP bergaya reqwest
  • Untuk memproses permintaan/respons XML, awalnya ingin memakai crate yang sudah ada, tetapi tidak memenuhi kebutuhan EWS
    • Dibuat crate xml_struct untuk menyediakan pemetaan yang intuitif antara struktur data Rust dan XML
    • Dibuat crate ews untuk menyediakan definisi tipe EWS serta API serialisasi/deserialisasi XML berbasis xml_struct dan serde

Rencana ke depan

  • Sebelum pengembangan fitur utama berikutnya, cakupan pengujian otomatis sedang diperluas
    • Selain unit test, integrasi test juga sedang dilakukan dengan membuat server EWS tiruan
  • Pekerjaan perbaikan penanganan error sedang berlangsung
    • Karena perilaku error EWS tidak terdokumentasi dengan baik, penanganan perlu dilakukan di berbagai lapisan, dari level protokol hingga level yang memerlukan intervensi pengguna
  • Dukungan protokol EWS terus diperluas dan integrasi dengan UI Thunderbird sedang dikerjakan
    • Baru-baru ini telah selesai diimplementasikan fitur penambahan akun EWS, sinkronisasi hierarki folder dari server jarak jauh, dan penampilan folder di UI
    • Berikutnya adalah mengambil daftar pesan dari server jarak jauh dan menggeneralisasi dukungan surat keluar di Thunderbird
  • Dokumentasi untuk seluruh pekerjaan juga sedang disusun demi memastikan kemudahan pemeliharaan di masa depan
    • Dokumentasi mengenai arsitektur protokol email Thunderbird yang ada saat ini dan arah perbaikannya juga sedang dikerjakan

Opini GN⁺

  • Mengadopsi Rust di Thunderbird untuk memodernisasi arsitektur lama terlihat sebagai perubahan yang sangat positif. Mereka berupaya dengan berbagai cara untuk memanfaatkan keunggulan Rust sambil tetap menjaga kompatibilitas dengan codebase yang ada.
  • Crate seperti xpcom_async, moz_http, xml_struct, dan ews yang dibuat selama proses pengembangan tampaknya juga dapat berguna di proyek lain di luar Thunderbird.
  • Namun, arsitektur lama Thunderbird dan sistem build yang bergantung pada codebase Firefox masih bisa menjadi hambatan bagi adopsi Rust ke depan. Dalam jangka panjang, tampaknya diperlukan upaya tambahan untuk menyelesaikan masalah-masalah ini.
  • Karena EWS adalah layanan email yang banyak digunakan di perusahaan dan institusi pendidikan, dukungan EWS di Thunderbird kemungkinan besar akan sangat membantu memperluas basis pengguna. Namun, karena EWS merupakan protokol proprietari milik Microsoft, implementasinya dalam proyek open source bisa saja menghadapi kesulitan.
  • Secara keseluruhan, proyek Thunderbird tampak aktif berupaya memodernisasi arsitektur dan memperluas fitur dengan momentum adopsi Rust. Sebagai salah satu klien email open source terdepan, perkembangan Thunderbird akan memberi manfaat besar bagi para pengguna.

1 komentar

 
GN⁺ 2024-04-21
Opini Hacker News
  • Dipertanyakan mengapa ini diimplementasikan padahal EWS dijadwalkan akan dihapus dalam 2 tahun
  • Thunderbird punya masalah lambat seperti sebelum pembaruan Firefox Quantum. Saat berpindah antar folder yang berisi ribuan email terjadi jeda, tetapi di Outlook perpindahannya instan
  • Jika secara strategis tujuannya adalah membuat orang menggunakan Thunderbird, ini masuk akal, tetapi secara ideologis dukungan JMAP dinilai akan lebih baik
  • Mengenang situasi 20 tahun lalu ketika hanya sedikit orang di industri TI yang menggunakan Linux dan sulit mencari klien Exchange
  • Ada yang menunjukkan bahwa judulnya telah diubah menjadi topik tentang pemrograman Rust, tetapi isi sebenarnya bukan tentang dukungan Exchange di Thunderbird
  • Menyatakan tidak suka Exchange, tetapi senang karena kini bisa mengirim email teks biasa di Windows
  • Ada usulan agar fitur impor file PST disediakan secara bawaan saat berpindah dari Outlook supaya pengguna bisa beralih dengan mudah
  • Berharap Thunderbird bisa menjadi pesaing yang layak bagi Evolution dari Gnome dalam hal dukungan EWS
  • Menekankan bahwa protokol baru seperti SMTP/2 + IMAP5 sangat dibutuhkan
  • Ada pendapat bahwa perbaikan kali ini akan disambut baik oleh mereka yang selama ini harus menggunakan ekstensi OWL