Firefox के लिए WebUSB एक्सटेंशन
(github.com/ArcaneNibble)- यह एक एक्सटेंशन है जो WebUSB API, जो पहले केवल Chrome में समर्थित था, को Firefox में इस्तेमाल करने देता है, और Native Messaging मेकैनिज़्म के जरिए ब्राउज़र के बाहर के प्रोग्राम से संचार करता है
- इसे चलाने के लिए ब्राउज़र एक्सटेंशन (.xpi) और native stub — दोनों को साथ में इंस्टॉल करना होगा
- इसे Chrome के WebUSB implementation के साथ compatibility को ध्यान में रखकर डिज़ाइन किया गया है, लेकिन Web Workers में इसका उपयोग नहीं किया जा सकता, API केवल main page पर expose होती है
- Android में Native Messaging खुद उपलब्ध नहीं है, इसलिए यह समर्थित नहीं है
- macOS(x86_64/ARM64), Linux(x86_64/aarch64), Windows(AMD64/ARM64) सहित 6 platforms के लिए prebuilt binaries उपलब्ध हैं
- इंस्टॉलेशन स्क्रिप्ट(
install.sh/install.bat) फ़ाइल कॉपी और native manifest configuration को अपने-आप संभालती है - native stub पूरी तरह Rust में लिखा गया है, और cross compilation के लिए डिफ़ॉल्ट समर्थन देता है
- सिस्टम आवश्यकताएँ: macOS 10.15+, Windows 10+, Linux kernel 4.8+ (udev आवश्यक)
- लाइसेंस: 0BSD
1 टिप्पणियां
Hacker News की टिप्पणियाँ
पहले मैं WebUSB/Bluetooth को वैचारिक कारणों से काफ़ी नापसंद करता था, लेकिन क्लाइम्बिंग बोर्ड कंट्रोल ऐप या USB के ज़रिए MiniDisc में ट्रांसफ़र करने वाले netMD जैसे उदाहरण देखकर मेरी राय बदल गई। ऐसे उपयोगों के लिए native app इंस्टॉल करना ज़रूरत से ज़्यादा लगा, और अब Firefox में भी विकल्प मिलना अच्छा है
मुझे WebUSB सच में शानदार लगता है। इससे हर प्लेटफ़ॉर्म का फ़र्क अलग-अलग संभाले बिना हार्डवेयर तक पहुँचने वाले cross-platform app वितरित किए जा सकते हैं, और drivers को भी काफ़ी हद तक sandbox किया जा सकता है। सुरक्षा और मज़बूत करनी हो तो WebUSB descriptor वाले डिवाइस ही default से allow किए जाएँ और बाकी के लिए अतिरिक्त चेतावनी दी जाए, ऐसा तरीका भी ठीक लगता है
हाल ही में मैंने एक दोस्त के Pixel पर GrapheneOS इंस्टॉल किया, और यह काफ़ी चौंकाने वाला था कि ब्राउज़र में सिर्फ़ WebUSB से पूरी प्रक्रिया पूरी हो गई। कमी बस इतनी थी कि Chromium खोलना पड़ा
GrapheneOS, ESPHome और Meshtastic जैसे प्रोजेक्ट पहले से WebUSB का अच्छा उपयोग कर रहे हैं, और Google ने भी Stadia controller को सामान्य Bluetooth input device में बदलने के लिए इसका इस्तेमाल किया था। कीबोर्ड निर्माताओं के configuration tools भी ऐसे ही हैं। उपयोगकर्ता को डिवाइस स्पष्ट रूप से चुनना पड़ता है, इसलिए security model भी तर्कसंगत लगता है, और Mozilla का इसे native रूप से ठुकराने वाला रुख़ पिछले 10 सालों के उसके रवैये की तरह ही निराशाजनक लगता है
आजकल तो local app भी Chrome-only html & js के रूप में वितरित किए जाने लगे हैं। ब्राउज़र का USB तक पहुँचना पसंद है या नहीं, यह अलग बात है, लेकिन पहले के IE-फ़ोर्स्ड दौर की तरह फिर से Chrome इस्तेमाल करने के लिए मजबूर किया जाना उससे भी ज़्यादा बुरा लगता है
BBC Microbit जैसे शैक्षिक हार्डवेयर प्लेटफ़ॉर्म में WebUSB गेम-चेंजर रहा है। छात्रों को हार्डवेयर से परिचित कराते समय यह बस काम करता है, और MakeCode जैसे web IDE तथा code reference URL की वजह से sharing और debugging भी आसान हो जाती है
यह implementation एक शानदार proof of concept जैसी लगती है। ब्राउज़र के बगल में अलग executable चलाने वाला तरीका मेरे लिए WebUSB का अंतिम रूप नहीं है, लेकिन कोई वास्तव में इस समस्या को हल करने पर काम कर रहा है, यही बात खुशी देती है
मेरी पहली प्रतिक्रिया यही थी कि यह बहुत ख़राब विचार है। वेबसाइटों का हार्डवेयर तक पहुँचना ही मुझे पसंद नहीं, और सिर्फ़ webcam access से ही पहले से काफ़ी असुविधा होती है
अभी spec draft स्थिति में है, और जब तक सुरक्षा संबंधी चिंताएँ पर्याप्त रूप से दूर न हो जाएँ, मैं इसे ब्राउज़र में आने का स्वागत नहीं करता
अगर WebUSB और WebBLE हर जगह supported हों, तो मैं अपने IoT app सिर्फ़ वेब के ज़रिए वितरित कर सकता हूँ और productivity बहुत बढ़ जाएगी। app store से जुड़ी झंझटें कम होना ख़ास तौर पर आकर्षक है