- मेन प्रोसेस में Bun और नेटिव बाइंडिंग्स के लिए Zig का उपयोग करने वाला TypeScript-आधारित डेस्कटॉप ऐप फ्रेमवर्क
- macOS, Windows, Ubuntu सभी को सपोर्ट करता है, और installer·auto update·differential patch artifacts अपने-आप जनरेट करता है
- विंडो कंट्रोल, मेन्यू, शॉर्टकट, क्लिपबोर्ड, डायलॉग, सेशन स्टोरेज आदि सहित पूरा डेस्कटॉप फीचर सेट देता है, और OOPIF-आधारित स्थिर webview लागू करता है
- आंतरिक संरचना Bun के FFI और shared memory model का उपयोग करती है ताकि multi-process environment में भी दक्षता बनी रहे
- Electron और Tauri की सीमाएँ झेल चुके एक डेवलपर ने 2 साल तक Zig, C, C++, Objective-C सीखकर इसे खुद बनाया
- लक्ष्य है कि 5 मिनट में कोड लिखना शुरू करें और 10 मिनट में deploy तक कर सकें, एक integrated workflow के साथ
Electrobun प्रोजेक्ट का अवलोकन और लक्ष्य
- ऐसी संरचना जिसमें मेन प्रोसेस Bun पर चलता है, webview TypeScript को bundle किया जाता है, और नेटिव बाइंडिंग्स Zig में लिखी जाती हैं
- मेन प्रोसेस और webview दोनों TypeScript में लिखे जाते हैं, लेकिन प्रोसेसों के बीच isolation बनाए रखते हुए तेज और typed RPC communication प्रदान किया जाता है
- self-extracting app bundle का आकार लगभग 12MB (system webview उपयोग करने पर, ज्यादातर Bun runtime का आकार)
- bsdiff-आधारित differential updates से patch size को न्यूनतम 14KB तक घटाया जा सकता है
- लक्ष्य है कि 5 मिनट में कोडिंग शुरू हो जाए और 10 मिनट में deploy पूरा हो सके, यानी एकीकृत workflow उपलब्ध कराना
npx electrobun initकमांड से template-आधारित प्रोजेक्ट शुरू किया जा सकता है
इसे बनाने की पृष्ठभूमि
- Visual Basic 6 के दौर से डेस्कटॉप ऐप बनाते आए हैं, और Adobe AIR के समय कई startup products को हज़ारों लोगों तक वितरित करने का अनुभव इसकी शुरुआत बना
- 20 साल से अधिक समय तक startup के शुरुआती engineer के रूप में unicorn-स्तर के products बनाए और scale किए, लेकिन डेस्कटॉप development environment उल्टा पीछे चला गया
- hybrid web browser+code editor+PTY terminal co(lab) बनाते समय इतनी परेशानियों का सामना हुआ कि अपना framework खुद बनाने का फैसला किया
- पहला version Electron में बनाया, लेकिन code signing·notarization·distribution·updates की प्रक्रिया ऐप बनाने से ज़्यादा framework से लड़ने जैसी लगी
- वेब की तरह continuous shipping चाहिए था, लेकिन मौजूदा toolchain ने इसे ज़रूरत से ज़्यादा कठिन बना दिया
- Tauri भी आज़माया, लेकिन लगा कि Rust हर डेवलपर के लिए उपयुक्त नहीं है, और उस समय Bun 1.0 रिलीज़ से कुछ महीने पहले की स्थिति में था, इसलिए सीधे खुद विकास शुरू किया
macOS से क्रॉस-प्लेटफ़ॉर्म तक
- शुरुआत में केवल macOS ऐप build किए जा सकते थे, लेकिन अब macOS, Windows, Ubuntu सभी पर build·deploy को first-class support मिलता है
- installer, auto update artifacts, और differential patches सब अपने-आप जनरेट होते हैं
- सिर्फ static host (R2, S3, GitHub Releases) जोड़ें और deployment पूरा
- differential updates का काम C से Zig में port किए गए और SIMD और zstd से optimized zig-bsdiff द्वारा किया जाता है
- Bun का FFI स्थिर होने के बाद पहले लिखी गई Zig FFI layer का अधिकांश हिस्सा Bun से बदल दिया गया
- architecture सकारात्मक दिशा में बदला, क्योंकि Bun worker बनाते समय shared memory का उपयोग करता है, जिससे multi-process में भी दक्षता बनी रहती है
जारी किए गए फीचर्स
- अब एक पूर्ण framework के रूप में cross-platform window controls, menu, shortcut accelerators, global shortcuts, clipboard, dialogs, webview partitions, session storage, find-in-page, bundling·update tooling आदि उपलब्ध हैं
- OOPIF(Out-of-Process Iframe) implementation अब वास्तव में काम करने के स्तर तक पहुँच चुकी है
- Electron का
<webview>टैग Chromium में deprecated हो चुका है, लेकिन अभी तक उसका कोई विकल्प तैयार नहीं है <electrobun-webview>DOM positioning, process isolation, और layering के साथ सही तरह काम करने वाला असली "super iframe" है- cursor flicker समस्या के बिना, और browser engine patch किए बिना, यह cross-platform काम करता है
- Electron का
प्लेटफ़ॉर्म सपोर्ट की स्थिति
- macOS 14+: आधिकारिक समर्थन
- Windows 11+: आधिकारिक समर्थन
- Ubuntu 22.04+: आधिकारिक समर्थन
- अन्य Linux distributions (gtk3, webkit2gtk-4.1): community support
आगे की योजना
- co(lab) को Electrobun पर पूरी तरह से फिर से लिखा जा चुका है, और v1 stabilization के आधार पर अब co(lab) development पर गंभीरता से फोकस किया जाएगा
- मुख्य लक्ष्य यह है कि framework इतना स्थिर हो जाए कि platform churn से डगमगाए बिना महत्वाकांक्षी long-term products बनाए जा सकें
- Discord community बढ़ रही है, और beta testing·issue submission·feedback के ज़रिए योगदान देने वाले users ने framework को आकार देने में मदद की है
- Electrobun, Blackboard का जारी किया गया पहला बड़ा product है
5 टिप्पणियां
इसमें co(lab) के पूर्ण rewrite की बात लिखी थी, इसलिए मैंने सोचा था कि यह Google के साथ मिलकर
ipynbचलाने के लिए cloud stability बेहतर करने से जुड़ा होगा, लेकिन इसका उससे बिल्कुल संबंध नहीं था और यह Blackboard टीम का डेवलपमेंट प्रोजेक्ट निकलाफिर भी,
npxसे इंस्टॉल होने वाला OOPIF सुलभ होना एक महत्वपूर्ण अनुभव लगता है"कोड signing·notarization·deployment·update की प्रक्रिया ऐप development से ज़्यादा framework से लड़ने जैसी लगती है"
मुख्य लेख में बैकग्राउंड के तौर पर ऐसा उल्लेख है,
वास्तव में कई बार ऐप development से ज़्यादा मेहनत deployment में लग जाती है।
सिर्फ इस समस्या को fix कर देने के लिए भी मैं इसे बहुत ऊँचा मूल्यांकन देता हूँ.
Flutter में zig जोड़ना भी काफ़ी आसान और सरल निकला।
Dart/c ffi दस्तावेज़ों से बहुत ज़्यादा अलग नहीं...
GUI environment वाले operating system में अब WebView को एक default component के रूप में स्थापित हो जाना चाहिए।
Hacker News की राय
नमस्ते, मैं Electrobun का निर्माता हूँ
हमने अभी v1 stable version रिलीज़ किया है। आर्किटेक्चर अब फिक्स हो चुका है, और अगर आपको कोई bug मिले या Electron/Tauri में इस्तेमाल होने वाली किसी API की ज़रूरत हो, तो कृपया उसे GitHub issue में दर्ज करें, हम उसे प्राथमिकता से देखेंगे
पिछले एक महीने में 50,000 लाइनों के code में बदलाव करके हमने stabilization का काम पूरा किया है
Electrobun से बना open source project Colab (web browser + code editor + PTY terminal) का demo video भी है
Electrobun डिफ़ॉल्ट रूप से सिस्टम WebView का उपयोग करता है, लेकिन
bundleCEFoption के साथ CEF को bundle भी किया जा सकता है। इसकी संरचना WebView से स्वतंत्र है, इसलिए Servo या Ladybird तैयार होते ही उन्हें तुरंत बदला जा सकता हैसाथ ही, हर release में zstd-आधारित auto-compressed package बनता है, जिससे शुरुआती download size कम हो जाती है और updates को लगभग 14KB जितना छोटा रखा जा सकता है
partitionkey डालने पर TypeScript error आता हैElectrobun बहुत promising लग रहा है। मैं अपना अगला project इसी से बनाऊँगा
Full TypeScript stack में यह सबसे ज़्यादा productive लगता है। Rust या लंबे compile process के बिना Electron का एक हल्का और तेज़ विकल्प मिलना खुशी की बात है
Discord पर बहुत से game developers Electrobun से desktop games पर experiment कर रहे हैं
Steam indie game market में यह Electron के कुछ उपयोगों की जगह ले सकता है
खासकर
bun --watch game.tsके साथ instant reload वाला TypeScript game development experience बहुत तेज़ और smooth हैTauri की मुख्य समस्या यह है कि सिस्टम WebView की quality हर OS में अलग होती है
Linux में कोई official WebView नहीं है, और Windows 7 या शुरुआती 10 versions में Edge WebView इस्तेमाल नहीं होता। इन फ़र्क़ों की वजह से कभी-कभी boot होने में 20 सेकंड से ज़्यादा लग जाते हैं
सिर्फ 100MB बचाने के लिए क्या ऐसे trade-off स्वीकार करने चाहिए, यह सवाल है
ज़्यादातर users के पास तेज़ internet होता है, इसलिए download speed कोई बड़ी समस्या नहीं है
मैं जानना चाहता था कि क्या Electrobun embedded Chromium renderer को support करता है, लेकिन docs में यह साफ़ नहीं था
अच्छा होता अगर title में साफ़ लिखा होता कि यह project retrospective blog post है
असली project को देखने के लिए official docs link ज़्यादा उपयुक्त है
project का main page यहाँ है
interface काफ़ी साफ़-सुथरा लगता है, और मैं Zig से परिचित हूँ इसलिए Rust की तुलना में यह ज़्यादा approachable लग सकता है
इस हफ़्ते हमारी company एक नया Electron app deploy करने वाली है, और लगता है काश Electrobun एक साल पहले आ गया होता
Electron Builder updates और signing process को कुछ हद तक आसान बना देता है, लेकिन फिर भी झंझट बना रहता है
अपने अगले personal project में मैं Electrobun आज़माने की सोच रहा हूँ
लेख में notarizing और stapling की समस्या का ज़िक्र था, और अगर आप Xcode का उपयोग नहीं करते तो Apple इस process को बहुत मुश्किल बना देता है
Windows में भी CI automation आसान नहीं है। अगर Electrobun कोई बेहतर solution देता है, तो मुझे बहुत रुचि है
notarize: trueके साथ build कर दीजिएमैंने Electrobun के साथ कई बार signing और notarization किया है, और कोई समस्या नहीं आई। जटिल मामलों के लिए escape hatch भी दिया गया है
अगर मदद चाहिए तो Discord पर DM कर सकते हैं। (मैं Electrobun से जुड़ा नहीं हूँ, लेकिन Apple notarization system की तकलीफ़ अच्छी तरह जानता हूँ)
अगर कोई Electron app 500MB से बड़ा हो, तो Electrobun का 14MB सच में बहुत छोटा size लगता है
अफ़सोस है कि Ubuntu के अलावा बाकी distributions अभी support scope से बाहर हैं
इस पर चर्चा issue comment में देखी जा सकती है