- रिमोट pair programming के लिए एक ultra-low-latency remote control app विकसित करते समय, ऐप framework के रूप में Tauri को अपनाया गया
- इसे चुनने के कारण थे परफ़ॉर्मेंस, मेमोरी दक्षता, Sidecar support आदि
- Rust-आधारित backend + system WebView के उपयोग से Electron की तुलना में ऐप साइज़ और मेमोरी उपयोग बहुत कम है
- Tauri v2 में फीचर गैप भी तेजी से कम हो रहा है, और auto-update, Sidecar जैसे core features built-in हैं
- Electron अभी भी शक्तिशाली है, लेकिन Hopp की विशेष ज़रूरतों के लिए Tauri अधिक उपयुक्त है
Hopp ने Tauri क्यों चुना
पृष्ठभूमि: cross-platform app framework का चयन
- Hopp को Windows, macOS, Linux पर एक समान चलने वाला high-performance desktop app चाहिए था
- Electron और Tauri प्रमुख विकल्प थे, और दोनों के स्पष्ट फायदे और सीमाएँ हैं
- Hopp टीम ने दीर्घकालिक maintainability और performance को महत्व देकर चयन किया
Tauri vs. Electron: संरचनात्मक अंतर
-
Electron संरचना
- Node.js runtime को शामिल करना पड़ता है → ऐप साइज़ बढ़ता है
- हर window अलग renderer process (Chromium engine) का उपयोग करती है → मेमोरी खपत अधिक
- सिस्टम के साथ गहरा integration करने के लिए अलग process की आवश्यकता होती है
-
Tauri संरचना का सार
- backend Rust-आधारित native binary है → अलग runtime की ज़रूरत नहीं
- system WebView का उपयोग (Windows: WebView2, macOS: WKWebView, Linux: WebKitGTK)
- window की संख्या बढ़ने पर मेमोरी दक्षता अच्छी रहती है, लेकिन browser engine mismatch issues को मैनेज करना पड़ता है
मुख्य फीचर तुलना
- स्टार्टअप समय Tauri और Electron दोनों में तेज़ है, और अनुभव में बड़ा अंतर नहीं है
- मेमोरी उपयोग में Tauri काफी कम है
- Tauri लगभग 172MB मेमोरी उपयोग करता है
- Electron लगभग 409MB उपयोग करता है, यानी लगभग 2 गुना से भी अधिक मेमोरी खपत
- rendering engine के संदर्भ में
- Tauri ऑपरेटिंग सिस्टम में built-in WebView का उपयोग करता है, इसलिए ऐप साइज़ छोटा और हल्का रहता है
- Electron Chromium engine को सीधे ऐप में शामिल करता है, इसलिए अधिक resources उपयोग करता है
- backend language के रूप में
- Tauri Rust का उपयोग करता है, जिससे high-performance native code लिखा जा सकता है
- Electron JavaScript(Node.js) आधारित है, जो web developers के लिए परिचित है, लेकिन performance अपेक्षाकृत कम है
- प्रारंभिक build time में
- Tauri में Rust compilation शामिल होने के कारण शुरुआती build धीमा होता है
- Electron में JS आधारित होने से शुरुआती build तेज़ होता है
- ऐप साइज़ की तुलना में
- Tauri लगभग 8.6MiB है, यानी बहुत हल्का
- Electron लगभग 244MiB है, यानी लगभग 28 गुना बड़ा
Hopp ने Tauri क्यों चुना: निर्णायक कारण
-
1. high-performance Rust backend
- WebRTC-आधारित ultra-low-latency video streaming को implement करना ज़रूरी था
- Electron में इसके लिए अलग process चलाना पड़ता, लेकिन Tauri में इसे सीधे Rust backend में implement किया जा सकता है
-
2. Sidecar process support
- streaming और input processing को अलग binary में विभाजित कर मैनेज किया गया
- Tauri Sidecar को आधिकारिक रूप से support करता है → lifecycle और communication management आसान
- आगे cursor rendering के लिए Tauri egui में विस्तार पर भी विचार किया जा रहा है
-
3. तेजी से विकसित होता फीचर support
- Tauri v2 में auto-update जैसे core features built-in हैं
- Electron की तुलना में यह अपेक्षाकृत नया है, लेकिन security और performance-केंद्रित vision Hopp के साथ मेल खाता है
निष्कर्ष: कौन-सा framework बेहतर है?
- Electron और Tauri दोनों शानदार desktop app frameworks हैं
- प्रोजेक्ट की प्रकृति के अनुसार चयन बदल सकता है
- Electron: तेज़ development, JS-friendly, व्यापक ecosystem
- Tauri: छोटा, हल्का, तेज़, और Rust-आधारित performance के लिए optimized
- Hopp ने performance-केंद्रित tech stack और अलग process architecture की आवश्यकता के कारण Tauri को अपनाया
6 टिप्पणियां
मैं webui का इस्तेमाल कर रहा हूँ। इसका साइज़ भी छोटा है और runtime dependency भी काफ़ी कम हैं।
अच्छा होगा अगर Wails की भी साथ में तुलना की जाए
मुझे तो उल्टा ज़्यादातर मामलों में यही लगता है कि Electron से काम चल जाता है।
शायद इसलिए क्योंकि शुरुआती Tauri में back-end और front-end के बीच communication का अनुभव मुझे खास अच्छा नहीं लगा था...
मुझे लगता है कि browser engine का अंतर एक बड़ा मुद्दा है, लेकिन mobile सहित support को ध्यान में रखें तो यह छोटा भी लगने लगता है।
अगर ऐप के size की समस्या बड़ी है, तो बिना किसी सवाल के Tauri की तरफ जाना सही है।
लगता है कि यह सही विकल्प है या नहीं, इसे size, memory और sidecar के साथ इस्तेमाल करके देखना पड़ेगा! परिचय के लिए धन्यवाद।