Deno Desktop
Deno Desktop का अवलोकन
- Deno का उपयोग करके web technologies (HTML/CSS/JS/TS) के साथ desktop apps बनाने का एक तरीका प्रदान करता है।
- कई backends को सपोर्ट करता है: system WebView (डिज़ाइन में डिफ़ॉल्ट), CEF के माध्यम से bundled Chromium, और custom rendering (जैसे WebGPU) के लिए लक्षित एक low-level “raw” backend।
- Deno की मौजूदा विशेषताओं के साथ एकीकृत होता है: single binaries में compilation, cross-compilation, Node compatibility, auto-updates, और npm ecosystem।
Electron, Tauri, और अन्य के साथ तुलना
- “Tauri जैसा, लेकिन Electron जैसा भी हो सकता है” के रूप में स्थित:
- OS engine का उपयोग करके छोटे binaries के लिए WebView backend।
- प्लेटफ़ॉर्म्स के बीच सुसंगत, आधुनिक rendering के लिए वैकल्पिक CEF backend।
- Electron से तुलना में: आसान setup, संभावित रूप से छोटे bundles, TS-first, Node के बजाय Deno API, और built-in tooling।
- Tauri से तुलना में: Tauri Rust-based backend और केवल system WebView का उपयोग करता है (CEF आने वाला है), जबकि Deno Desktop JS/TS-based है और पहले से ही CEF ship करता है।
- उल्लेखित अन्य विकल्प: Wails (Go), Dioxus/Blitz (Rust, custom engine), Sciter, Java/Qt/GTK, WASM-based approaches (Jumpjet)।
Binary Size, Performance, और WebViews बनाम CEF
- कुछ उपयोगकर्ताओं के अनुसार Windows पर CEF के कारण लगभग 440 MB का “hello world” build मिलता है; sub-20 MB apps की अपेक्षा के हिसाब से यह निराशाजनक है।
- Maintainers का कहना है कि WebView + compression लगभग 15 MB तक पहुँच सकता है, लेकिन वर्तमान में default/backend व्यवहार भ्रमित करने वाला है और docs को सुधारने की आवश्यकता है।
- System WebViews:
- फायदे: छोटे binaries, मौजूदा browser engine का पुनः उपयोग।
- नुकसान: platform-specific bugs और पुरानापन (विशेषकर Linux पर WebKitGTK, पुराने macOS Safari/WebView)।
- CEF:
- फायदे: OSes के बीच predictable, evergreen rendering और APIs।
- नुकसान: बड़े binaries; shared runtime/versioning को लेकर सवाल और क्या यह वास्तव में “Electron-per-app browser” duplication से बचाता है।
Native बनाम Web UI और UX Consistency
- लंबे, गरमागरम बहस कि क्या “web UI slop” native toolkits की तुलना में स्वीकार्य है।
- Web UIs के पक्ष में तर्क:
- OSes के बीच cross-platform consistency।
- HTML/CSS/JS से डेवलपर्स की भारी परिचितता।
- Native toolkits fragmented, inconsistent, या painful हैं (Win toolkits churn, GTK बनाम Qt, SwiftUI issues, Linux diversity)।
- Native UIs के पक्ष में तर्क:
- OS-level consistency और patterns usability, discoverability, और accessibility में मदद करते हैं।
- कई web/electron apps platform conventions की अनदेखी करते हैं, “pixel soup” बनाते हैं, और कमजोर a11y रखते हैं।
- कुछ का कहना है कि users वास्तव में inconsistent behavior की शिकायत करते हैं, भले ही वे “native UI” शब्द का उपयोग न करें।
- सामान्य धारणा कि स्वयं OSs कम consistent हो गए हैं, जिससे कई developers के लिए “ज़रूर native जैसा दिखना चाहिए” वाला तर्क कमजोर पड़ता है।
Security, Permissions, और IPC Model
- सवाल कि compiled desktop binaries पर Deno का permission system कैसे लागू होता है।
- वर्तमान docs: desktop apps अभी runtime permission prompts नहीं देतीं; permissions compile time पर baked in होती हैं।
- कुछ लोगों को चिंता है कि permission prompts misleading होंगी अगर bundled runtime पर आपका नियंत्रण नहीं है।
- सुझाव: डाउनलोड की गई apps को trusted local Deno (
deno run) के माध्यम से चलाएँ या permissions लागू करने की चिंता हो तो containers/VMs का उपयोग करें। - IPC/architecture:
- Backend और UI एक ही process (CEF) में या tightly coordinated process group (WebView) में चलते हैं, socket-based IPC के बजाय in-process C ABI bindings का उपयोग करते हुए।
- इसे पारंपरिक Electron-style IPC की तुलना में कम overhead वाला माना जाता है; security implications पर बहस है, लेकिन thread में उनका समाधान नहीं हुआ।
Platform Support, Tooling, और Use Cases
- वर्तमान में canary-only (Deno v2.9); कुछ उपयोगकर्ताओं को शुरुआती bugs (blank windows) मिले और उनसे issues file करने को कहा गया।
- Mobile (iOS/Android) support “planned/being investigated” है, लेकिन उपलब्ध नहीं है; docs भविष्य के समर्थन का संकेत देती हैं।
- चर्चा किए गए use cases: internal tools, kiosk apps, Steam/desktop के लिए web games पैकेज करना, optional GUIs के साथ Deno-based CLIs ship करना।
- कुछ लोग Deno overall को लेकर उत्साहित हैं (TS-first, integrated tooling, compilation, Node compat); अन्य “भारी JavaScript desktop apps ship करने का एक और तरीका” से थक चुके हैं।