- Framework aplikasi desktop berbasis TypeScript yang menggunakan Bun untuk proses utama dan Zig untuk native binding
- Mendukung macOS, Windows, Ubuntu, serta secara otomatis menghasilkan installer, pembaruan otomatis, dan artefak patch diferensial
- Menyediakan set fitur desktop lengkap seperti kontrol jendela, menu, pintasan keyboard, clipboard, dialog, session storage, dan lainnya, serta implementasi webview stabil berbasis OOPIF
- Struktur internal memanfaatkan FFI Bun dan model shared memory agar tetap efisien bahkan dalam lingkungan multi-proses
- Dikembangkan langsung selama 2 tahun oleh pengembang yang mengalami keterbatasan Electron dan Tauri, sambil mempelajari Zig, C, C++, dan Objective-C
- Menargetkan alur kerja terpadu yang memungkinkan mulai menulis kode dalam 5 menit dan melakukan deployment dalam 10 menit
Gambaran umum dan tujuan proyek Electrobun
- Arsitektur yang menjalankan proses utama dengan Bun, membundel TypeScript webview, dan menulis native binding dengan Zig
- Baik proses utama maupun webview ditulis dalam TypeScript, sambil mempertahankan isolasi antarproses dan menyediakan komunikasi RPC yang cepat serta bertipe
- Ukuran app bundle self-extracting sekitar 12MB (saat menggunakan system webview, sebagian besar berasal dari ukuran runtime Bun)
- Pembaruan diferensial berbasis bsdiff dapat menekan ukuran patch hingga minimum 14KB
- Menargetkan satu alur kerja terpadu yang memungkinkan mulai menulis kode dalam 5 menit dan menyelesaikan deployment dalam 10 menit
- Proyek dapat dimulai dari template dengan perintah
npx electrobun init
Latar belakang pembuatan
- Telah membuat aplikasi desktop sejak era Visual Basic 6, dengan pengalaman mendistribusikan berbagai produk startup ke ribuan pengguna pada era Adobe AIR sebagai titik awal
- Selama lebih dari 20 tahun membangun dan menskalakan produk sekelas unicorn sebagai engineer awal startup, tetapi lingkungan pengembangan desktop justru mengalami kemunduran
- Saat membuat co(lab), sebuah browser web + editor kode + terminal PTY hibrida, terlalu banyak hambatan yang ditemui sehingga diputuskan untuk membuat framework sendiri
- Versi pertama dibuat dengan Electron, tetapi proses code signing, notarization, distribusi, dan pembaruan terasa lebih seperti melawan framework daripada membangun aplikasi
- Menginginkan continuous shipping seperti di web, tetapi toolchain yang ada membuatnya jauh lebih sulit dari yang seharusnya
- Juga sempat mencoba Tauri, tetapi menilai Rust tidak cocok untuk semua pengembang, dan saat itu Bun masih beberapa bulan sebelum rilis 1.0 sehingga pengembangan dilakukan secara mandiri
Dari macOS ke lintas platform
- Awalnya hanya bisa membangun aplikasi macOS, tetapi kini build dan deployment untuk macOS, Windows, Ubuntu semuanya didukung sebagai kelas satu
- Installer, artefak pembaruan otomatis, dan patch diferensial semuanya dihasilkan secara otomatis
- Deployment selesai cukup dengan menghubungkan static host (R2, S3, GitHub Releases)
- Pembaruan diferensial ditangani oleh zig-bsdiff, yang di-port dari C ke Zig dan dioptimalkan dengan SIMD dan zstd
- Setelah FFI Bun menjadi stabil, sebagian besar lapisan Zig FFI yang sebelumnya ditulis digantikan oleh Bun
- Arsitekturnya berubah ke arah yang positif, karena Bun menggunakan shared memory saat membuat worker sehingga efisiensi tetap terjaga dalam multi-proses
Fitur yang telah dirilis
- Kini hadir sebagai framework lengkap dengan kontrol jendela lintas platform, menu, shortcuts, global shortcut, clipboard, dialog, partisi webview, session storage, find-in-page, serta tooling untuk bundling dan pembaruan
- Implementasi OOPIF (Out-of-Process Iframe) telah mencapai tingkat yang benar-benar berfungsi
- Tag
<webview> milik Electron telah deprecated di Chromium, tetapi belum ada alternatif yang disediakan
<electrobun-webview> adalah "super iframe" sejati dengan DOM positioning, isolasi proses, dan layering yang berfungsi normal
- Berjalan lintas platform tanpa masalah cursor flicker dan tanpa patch pada browser engine
Status dukungan platform
- macOS 14+: didukung resmi
- Windows 11+: didukung resmi
- Ubuntu 22.04+: didukung resmi
- Distribusi Linux lain (gtk3, webkit2gtk-4.1): didukung komunitas
Rencana selanjutnya
- co(lab) telah selesai ditulis ulang sepenuhnya di atas Electrobun, dan berdasarkan stabilisasi v1 kini fokus penuh beralih ke pengembangan co(lab)
- Tujuan utamanya adalah menstabilkan framework agar cukup kuat untuk membangun produk jangka panjang yang ambisius tanpa terguncang oleh platform churn
- Komunitas Discord terus berkembang, dan para pengguna yang berkontribusi lewat beta testing, pelaporan isu, dan feedback ikut membentuk framework ini
- Electrobun adalah produk besar pertama yang dirilis oleh Blackboard
5 komentar
Tertulis sebagai penulisan ulang penuh co(lab), jadi saya sempat mengira ini terkait peningkatan stabilitas cloud untuk menjalankan ipynb bersama Google, tetapi ternyata ini adalah proyek pengembangan dari tim Blackboard yang sama sekali tidak berkaitan.
Meski begitu, fakta bahwa OOPIF yang diinstal dengan
npxbisa diakses tampaknya merupakan pengalaman yang penting."Proses penandatanganan kode, notarization, distribusi, dan pembaruan terasa seperti bertarung dengan framework alih-alih mengembangkan aplikasi"
Di latar belakang pembuatan pada artikel utama ada pernyataan seperti di atas,
dan memang ada kasus ketika distribusi justru membutuhkan lebih banyak upaya daripada pengembangan aplikasi itu sendiri.
Saya sangat menghargainya hanya karena masalah ini berhasil diperbaiki.
Ternyata memasang Zig ke Flutter juga cukup mudah dan sederhana. Tidak jauh berbeda dengan dokumentasi Dart/C FFI...
Kalau sistem operasinya punya lingkungan GUI, rasanya sekarang WebView memang sudah seharusnya menjadi komponen bawaan.
Opini Hacker News
Halo, saya pembuat Electrobun
Kali ini saya merilis versi stabil v1. Arsitekturnya sudah saya tetapkan, dan jika ada bug atau API yang biasa dipakai di Electron/Tauri yang Anda butuhkan, silakan tinggalkan di GitHub issue dan itu akan saya prioritaskan
Selama sebulan terakhir saya telah merevisi 50 ribu baris kode dan menyelesaikan pekerjaan stabilisasi
Ada juga video demo dari proyek open source Colab (browser web + editor kode + terminal PTY) yang dibuat dengan Electrobun
Electrobun pada dasarnya memakai WebView sistem, tetapi juga bisa menyertakan CEF dengan opsi
bundleCEF. Secara arsitektural ia independen dari WebView, jadi saat Servo atau Ladybird siap, keduanya bisa langsung menggantikannyaSelain itu, di setiap rilis dapat dibuat paket kompresi otomatis berbasis zstd untuk mengurangi ukuran unduhan awal, dan update dapat dijaga tetap kecil di kisaran 14KB
partitionke BrowserWindow, TypeScript memunculkan errorElectrobun terlihat sangat menjanjikan. Saya berencana membuat proyek berikutnya dengan ini
Dalam stack TypeScript penuh, ini yang paling produktif. Senang rasanya mendapatkan alternatif yang lebih ringan dan cepat daripada Electron tanpa Rust atau proses kompilasi yang panjang
Di Discord, banyak pengembang game sedang bereksperimen dengan game desktop menggunakan Electrobun
Ini berpotensi menggantikan sebagian Electron di pasar game indie Steam
Terutama pengalaman pengembangan game TypeScript dengan reload instan lewat
bun --watch game.tsterasa sangat cepat dan mulusMasalah utama Tauri adalah kualitas WebView sistem berbeda-beda tergantung OS
Linux tidak punya WebView resmi, dan di Windows 7 atau awal Windows 10 tidak memakai Edge WebView. Karena perbedaan ini, waktu boot bisa lebih dari 20 detik
Saya ragu apakah trade-off seperti ini layak diambil demi menghemat 100MB
Sebagian besar pengguna memakai internet cepat, jadi kecepatan unduh bukan masalah besar
Saya penasaran apakah Electrobun mendukung renderer Chromium bawaan, tetapi tidak jelas di dokumentasinya
Saya berharap judulnya menyebutkan bahwa tulisan ini adalah posting blog retrospektif proyek
Untuk proyek aslinya, lebih tepat melihat tautan dokumentasi resmi
Halaman utama proyek ada di sini
Antarmukanya terlihat rapi, dan saya sudah terbiasa dengan Zig, jadi sepertinya lebih mudah diakses daripada Rust
Minggu ini di perusahaan kami akan merilis aplikasi Electron baru, dan rasanya akan bagus kalau Electrobun hadir 1 tahun lebih awal
Electron Builder memang agak menyederhanakan proses update dan penandatanganan, tetapi tetap merepotkan
Untuk proyek pribadi berikutnya saya berencana mencoba Electrobun
Tulisan itu menyebut masalah notarizing dan stapling, dan jika tidak memakai Xcode, Apple membuat proses ini sangat sulit
Di Windows juga otomatisasi CI tidak mudah. Jika Electrobun memberi solusi yang lebih baik, saya sangat tertarik
notarize: trueSaya sudah beberapa kali melakukan signing dan notarization dengan Electrobun tanpa masalah. Ia juga menyediakan escape hatch untuk kasus yang rumit
Jika butuh bantuan, kirim DM di Discord. (Saya bukan pihak Electrobun, tetapi sangat paham penderitaan sistem notarization Apple)
Jika aplikasi Electron berukuran lebih dari 500MB, maka 14MB dari Electrobun terasa benar-benar kecil
Sayangnya distro selain Ubuntu saat ini di luar cakupan dukungan
Diskusi terkait bisa dilihat di komentar issue