- Server build F-Droid mengalami situasi di mana tidak dapat membangun aplikasi Android terbaru karena CPU lama
- Tidak mendukung set instruksi lanjutan yang dibutuhkan aplikasi mobile modern seperti ARM dan x86-64
- Upgrade dan penggantian server diperlukan, tetapi ada keterbatasan biaya dan infrastruktur
- Para pengembang menyatakan kekhawatiran tentang keberlanjutan dan kemutakhiran teknis F-Droid
- Sebagai alternatif, sedang dibahas build berbasis cloud dan donasi sumber daya server
Gambaran umum
- F-Droid adalah toko tidak resmi untuk aplikasi Android open source, dengan model distribusi aplikasi yang membangun langsung dari kode sumber
- Baru-baru ini, server build tidak lagi dapat menyediakan build untuk sebagian aplikasi karena tidak mendukung set instruksi CPU yang dibutuhkan oleh aplikasi Android terbaru
Keterbatasan teknis server build
- Instruksi ARM dan x86-64 baru yang diperlukan untuk membangun aplikasi tidak didukung oleh CPU lama
- Akibat keterbatasan ini, muncul masalah di mana aplikasi modern yang telah dioptimalkan performanya atau aplikasi yang memakai library terbaru tidak bisa disediakan dalam bentuk file build
- Bahasa modern seperti Python dan Kotlin serta tool build terbaru seperti Gradle juga sering membutuhkan lingkungan CPU yang lebih baru
Kekhawatiran dan diskusi di komunitas
- Pengembang dan pengguna menyampaikan kekhawatiran atas penurunan kualitas aplikasi F-Droid yang berkelanjutan serta laporan kegagalan build
- Upgrade infrastruktur dibutuhkan, tetapi sorotan tertuju pada keterbatasan pendanaan dan kurangnya personel pengelola server
Mencari alternatif dan solusi
- Berbagai opsi sedang dibahas, seperti menjalankan server build di lingkungan cloud atau donasi sumber daya server dari komunitas
- Tim F-Droid menyatakan komitmennya untuk menyelesaikan masalah ini melalui dukungan eksternal dan perangkat keras baru
Kesimpulan
- Nilai F-Droid dan maknanya dalam mendukung ekosistem open source tetap tinggi
- Namun, upaya pembaruan infrastruktur dan pemeliharaan yang sesuai dengan tren aplikasi modern menjadi hal yang wajib
1 komentar
Komentar Hacker News
Ini berarti server mereka benar-benar sudah sangat tua, sampai pada level yang tidak mendukung x86-64-v2, dan hampir mengingatkan pada server era Intel Core 2 Duo
Silakan lihat tulisan yang merangkum level mikroarsitektur x86-64-v2 di Red Hat Enterprise Linux 9
Jika diganti ke CPU konsumen Epyc, performa server sepertinya akan jauh lebih cepat
Saya sempat ingin berdonasi, tetapi ternyata masih tersisa $80,000
Mengingat anggaran tahunan mereka $17,000, membeli server konsumen Epyc mATX Zen4 atau Zen5 terbaru seharga $2~3 ribu pun masih masuk anggaran
Jika memang ada beberapa server yang benar-benar menua, satu server Zen5 bisa menggantikan beberapa mesin sekaligus, sekaligus menghemat listrik dan ruang jauh lebih banyak
Lihat juga status anggaran F-Droid
Sepertinya donasi Librapay masih belum dimasukkan
Tautan donasi Librapay
Karena syarat minimumnya hanya "Pentium dan Celeron", kami kira itu sudah cukup
Ternyata salah satu layanan memakai instruksi yang hanya didukung CPU v3 atau v4, sehingga berhenti bekerja
Setelah pengaturan CPU yang diekspos diubah, semuanya kembali normal
Jadi bisa saja servernya sebenarnya cukup mampu, tetapi ada salah konfigurasi, atau binarinya menuntut spesifikasi yang lebih tinggi daripada yang dinyatakan, atau ada masalah lain
Instruksi
cmpxchg16bbukan instruksi yang terlalu baru, dan sekarang dianggap sebagai persyaratan wajibDibandingkan waktu dan tenaga para relawan untuk memelihara sistem, £80,000 itu benar-benar jumlah yang kecil
Saya pernah mendengar bahwa modernisasi infrastruktur memang diperlukan, tetapi itu butuh investasi besar
Jika dana mereka lebih longgar, mungkin mereka bisa berinvestasi dengan lebih percaya diri
Selain upgrade server, masih banyak pekerjaan lain yang juga perlu diselesaikan
Situasi saat ini terasa cukup mengkhawatirkan
Saya merasa FDroid makin penting karena saat ini merupakan toko aplikasi Android terbesar di luar Google
Saya penasaran apakah ada rencana untuk menyelesaikan masalah ini, kapan kira-kira FDroid akan meng-upgrade server, atau apakah Google mungkin menarik kembali persyaratan wajib ini (meski kemungkinan terakhir tampaknya kecil)
Masalah itu diperbaiki di Gradle Plugin 4.2.0-rc01 / Gradle 7.0.0 alpha 9
Ada juga catatan tiketnya
Menurut saya pribadi, mungkin bahkan tidak masuk 10 besar
Saya penasaran kenapa aapt2 tidak dibangun ulang agar cocok dengan targetnya
Source-nya tersedia
Lokasi source aapt2
Di dalamnya ada sangat banyak biner, dan ketika saya mencoba membangun ulang beberapa biner dari source, sistem build-nya begitu rusak sampai saya langsung menyerah
Dengan begitu, pembaruan biner di masa depan bisa ditangani otomatis tanpa perlu menambal tiap biner yang baru muncul
Saya membagikan dokumen wiki Streaming SIMD Extensions (SSSE3)
Desktop lama saya pun mendukung instruksi ini, dan saya memakainya hampir 10 tahun
Karena itu cukup mengejutkan bahwa dari source code-nya pun tidak disediakan jalur fallback non-assembly
Kemungkinan besar kompiler dipakai dengan target x86_64-v2
RHEL 9 juga dibangun dengan opsi semacam itu, dan di RHEL 10 targetnya naik ke x86_64-v3 sehingga AVX juga ikut didukung
Tautan wiki AMD 10h
Secara realistis, hampir tidak ada perangkat keras untuk menguji ini selain mesin tua dan lambat
Saya tidak sepenuhnya paham
Gradle dan aapt2 itu open source, dan menurut saya hasilnya akan lebih bisa diprediksi jika toolchain dibangun sendiri seperti di buildroot atau openwrt
Dengan begitu, f-droid juga bisa membangun seluruh toolchain langsung dari source dan tidak perlu memakai biner gradle atau aapt2 yang mengandung instruksi yang tidak didukung
Sebagian di antaranya bahkan mencakup biner native, dan tidak ada metadata tentang bagaimana tiap pustaka itu dibangun seperti pada buildroot atau distribusi Linux
Selain itu, proses build untuk pustaka di ekosistem gradle sangat beragam dan tidak terstandarisasi, sehingga membangun ulang semuanya langsung dari source akan menjadi pekerjaan yang sangat merepotkan dan sulit
Ada juga yang mengatakan Google sudah memperbaiki masalah ini di upstream
Lihat tautan isu ini
Memang tidak bisa yakin seberapa cepat akan terselesaikan, tetapi thread isu itu agak menenangkan meskipun tidak memberi bukti langsung bahwa masalah ini benar-benar sudah diperbaiki
Di thread pada tautan tersebut, ada kebingungan karena koreksi typo ("mas fixed"→"was fixed") disalahartikan sebagai tanda bahwa isu kali ini sudah selesai
Yang sebenarnya sudah selesai adalah isu lama yang mirip dari beberapa tahun lalu
Lihat Google Issue Tracker
Mengingat sse4.1 adalah instruksi yang diperkenalkan pada 2011, agak aneh kalau server setua ini masih beroperasi
CPU modern seharusnya bisa mengerjakan pekerjaan yang sama dengan konsumsi daya yang jauh lebih kecil, jadi secara ekonomi pun sulit dipahami kenapa perangkat keras tua seperti itu tetap dipakai
Saya penasaran apakah ada yang tahu jumlah atau spesifikasi build server mereka
Kalau pun konsumsi itu dipotong setengah, penghematannya tetap hanya sekitar 10% dari harga komputer baru, jadi butuh 10 tahun untuk balik modal
Upgrade adalah belanja modal, sedangkan biaya listrik adalah biaya operasional
Data pendukung tarif listrik AS
Bulldozer memang menambahkan berbagai instruksi seperti AVX dan FMA, tetapi Opteron lama sering kali justru lebih cepat daripada Bulldozer, sehingga sebelum Epyc hadir (pertengahan 2017) insentif upgrade memang kecil
Alasan banyak paket mulai menargetkan sse4.1 ke atas adalah karena pada CPU lama, overhead untuk hal-hal seperti percabangan kondisional dalam pemrosesan paralel SIMD cukup tinggi
PC lama dari era 2000-an dulu masih cukup untuk pekerjaan ringan seperti browsing web, tetapi seiring waktu program mulai menuntut instruksi baru dan perlahan-lahan menjadi tidak berguna lagi
Bahkan Firefox pun mulai membutuhkan set instruksi baru, dan saya akhirnya harus membuang desktop yang sebenarnya masih berfungsi baik
Namun board KGPE-D16 sebenarnya juga bisa dipasangi CPU yang mendukung SSE4.2, jadi saya sendiri tidak tahu alasan pastinya
Saat membahas biner aapt2 baru dari Google (AGP 8.12.0), terasa aneh bahwa F-Droid sangat menekankan perlindungan dan isolasi lingkungan build, tetapi justru mengambil biner upstream alih-alih membangunnya dari source
Untuk membuat aplikasi Android, pada dasarnya orang tetap bergantung pada biner non-free milik Google
Lihat postingan forum terkait
Ringkasan tautan referensi
F-Droid admin issue
Catima app issue
MBCompass issue
Salah satu anggotanya berkata: "Seperti biasa di F-Droid, suara kami selalu diabaikan. Kalau saja ada harapan bahwa dengan membahas solusi kami bisa memperbaiki F-Droid, saya tidak akan sampai menghabiskan begitu banyak waktu dan energi lalu pergi dengan rasa frustrasi"
Ada pendapat bahwa server F-Droid memang benar-benar sudah usang
Sampai-sampai performanya mungkin justru akan meningkat walau x86_64 diemulasikan dari arsitektur yang sama sekali berbeda
Bahkan rasanya tidak perlu sampai membawa argumen OSS untuk menjelaskannya
Jika tidak terlalu peduli pada firmware tertutup, ada banyak opsi server x86 yang lebih murah sekaligus lebih modern
Gara-gara budaya populer, saya langsung teringat candaan seperti "server itu sudah sangat tua sampai pernah jadi teman sebangku TK Benjamin Franklin"