- Bitchat एक iOS·macOS के लिए विकेंद्रीकृत P2P मैसेजिंग ऐप है, जो Bluetooth mesh network और इंटरनेट-आधारित Nostr को जोड़ता है और account·phone number·central server के बिना काम करता है
- ऑफलाइन में यह Bluetooth LE के जरिए अधिकतम 7-hop relay को सपोर्ट करता है, और इंटरनेट कनेक्शन होने पर 290 से अधिक Nostr relays के माध्यम से वैश्विक और location-based channels से जुड़ता है
- private messages में पहले Bluetooth का Noise Protocol इस्तेमाल होता है, कनेक्ट न हो पाने पर Nostr के NIP-17 पर स्विच होता है, और दोनों संभव न हों तो भेजे जा सकने तक queue में रखे जाते हैं
- geohash precision के आधार पर यह block·neighborhood·city·state·country स्तर के channels देता है, और
/slap, /msg, /who जैसे IRC-शैली commands तथा तीन बार टैप करके data मिटाने वाला Emergency Wipe सपोर्ट करता है
- प्रोजेक्ट को public domain में जारी किया गया है और इसे Xcode या
just से चलाया जा सकता है, लेकिन असली device build के लिए Developer Team ID और entitlement configuration की जरूरत होती है
Bluetooth और Nostr को जोड़ने वाली ट्रांसपोर्ट संरचना
- Bitchat एक iOS·macOS native app है जो Bluetooth mesh और Nostr को जोड़ता है, और App Store पर भी उपलब्ध है
- Bluetooth mesh network इंटरनेट के बिना पास के devices को अपने-आप खोजकर कनेक्ट करता है
- यह Bluetooth LE के जरिए सीधे P2P communication करता है, और पास के devices के माध्यम से अधिकतम 7 hops तक messages relay करता है
- यह Noise Protocol-आधारित end-to-end encryption और forward secrecy को सपोर्ट करता है
- यह Bluetooth LE की सीमाओं के अनुरूप compressed binary packet format और battery-optimized duty cycle का उपयोग करता है
mesh #bluetooth channel का लक्ष्य protest·disaster·remote area जैसी offline communication स्थितियाँ हैं
- Nostr transport layer 290 से अधिक वैश्विक relays के जरिए इंटरनेट messaging प्रदान करती है
- यह geohash coordinates से location-based chat rooms बनाती है और हर क्षेत्र के लिए नई temporary encrypted identity का उपयोग करती है
- private messages को NIP-17 gift wrapping से सुरक्षित किया जाता है
- location channels के लिए इंटरनेट कनेक्शन जरूरी है और इन्हें local community, local events और regional discussion में इस्तेमाल किया जाता है
block 7 characters: city block
neighborhood 6 characters: इलाका·मोहल्ला
city 5 characters: शहर
province 4 characters: राज्य·प्रांत
region 2 characters: देश·बड़ा क्षेत्र
- private message routing उपलब्ध transport method को अपने-आप चुनता है
- यदि मौजूदा Noise session उपलब्ध हो, तो तेज और अधिक private Bluetooth connection को प्राथमिकता दी जाती है
- Bluetooth उपलब्ध न होने पर recipient की Nostr public key और NIP-17 का उपयोग करके relay network के जरिए भेजा जाता है
- यदि दोनों तरीके उपलब्ध न हों, तो message को queue में रखा जाता है और connection बनते ही अपने-आप भेज दिया जाता है
- यह LZ4 message compression, adaptive battery mode, network optimization, IRC-शैली commands, और तीन बार टैप करके तुरंत सारा data हटाने वाला Emergency Wipe भी प्रदान करता है
- विस्तृत protocol Technical Whitepaper में देखा जा सकता है
Build, localization और license
- Xcode में चलाने के लिए repository में ये commands इस्तेमाल करें
cd bitchat
open bitchat.xcodeproj
- असली device पर चलाने के लिए local settings और code signing तैयार करनी होगी
cp Configs/Local.xcconfig.example Configs/Local.xcconfig से config file की copy बनाएं
- नई file में Developer Team ID जोड़ने पर default Bundle ID
chat.bitchat.<team_id> पर सेट हो जाती है
- entitlement में
group.chat.bitchat को हाथ से group.<your_bundle_id> में बदलना होगा
- macOS पर
brew install just के बाद just run से setup और source execution किया जा सकता है
- इसके बाद
just clean चलाने पर mobile app build·development के लिए मूल स्थिति बहाल हो जाती है
- localization resources app और share extension में अलग-अलग बंटी हैं
- base app strings और plural rules को
bitchat/Localization/Base.lproj/ की Localizable.strings और Localizable.stringsdict में जोड़ें
- share extension strings को
bitchatShareExtension/Localization/Base.lproj/Localizable.strings में manage किया जाता है
- keys को
app_info.features.offline.title की तरह intent स्पष्ट करने वाले रूप में लिखें, और जहाँ संभव हो मौजूदा keys का पुन: उपयोग करें
- localization changes के बाद
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build से compile check करें
- प्रोजेक्ट को public domain में वितरित किया गया है, और विस्तृत शर्तें LICENSE में देखी जा सकती हैं
1 टिप्पणियां
Hacker News की राय
कल Radicle desktop client इंस्टॉल किया और नया username व password डाला, लेकिन कुछ भी नहीं हुआ। ऐप रीस्टार्ट करने पर भी account creation/login screen से आगे नहीं बढ़ पाया, इसलिए वहीं Radicle का उपयोग खत्म हो गया
अगर availability महत्वपूर्ण है, तो
libs.gms.locationdependency पर फिर से विचार करना चाहिए और F-Droid पर भी रिलीज़ करना चाहिए(https://gitlab.com/fdroid/fdroiddata/-/merge_requests/24907#...)Fusion Festival में Bitchat चालू करके घूमता रहा और करीब 20 devices व कुछ messages मिले, लेकिन मेरे भेजे messages का किसी ने जवाब नहीं दिया। 80,000 लोगों में 20 devices का मतलब यह है कि users बिल्कुल नहीं हैं ऐसा नहीं, लेकिन बहुत भी नहीं हैं, और अधिकतम 2 hops तक ही पहुंच रहा था, इसलिए पूरे venue को कवर करने लायक density नहीं थी
जब विमान में साथ बैठे बिना सीटें जोड़ने के लिए 50 dollar extra नहीं देना हो और आप अपने लोगों से अलग बैठ गए हों, तब यह काम आता है
अगर BitChat में दिलचस्पी है, तो इसकी popularity बढ़ने या साथ इस्तेमाल करने वाले लोग मिलने से पहले ही इसे इंस्टॉल करके रखना ठीक रहेगा। खुद टेस्ट किया तो Wi‑Fi या mobile network के बिना text messages भेजना-करीब पाना थोड़ा अवास्तविक सा लगा
overlapping geohash भी ठीक हो सकता है, लेकिन walkie-talkie की तरह अगर सिर्फ एक तरफ़ वाला range में हो तो बातचीत का आधा हिस्सा ही दिखेगा, ऐसी उलझन हो सकती है। अभी का geohash लगभग 1 acre तक सिमट जाता है, जो ज़रूरत से ज़्यादा precise है, लेकिन 12-मंज़िला university dorm पूरा का पूरा एक chat room इस्तेमाल करे to काम आ सकता है
Radicle साइट Git repository platform के रूप में दिलचस्प design दिखाती है। full-width margins, अच्छी तरह व्यवस्थित navigation structure, और देखने में सुंदर code rendering पसंद आई
Bitchat, AOS का project है। हैरानी होती है कि इसे उसी AOS project ngit पर फिर से host नहीं किया गया
अगर आप Nostr purism में फँस जाएँ, तो अक्सर हालत यह होती है कि post देखने वाले कुल 5 लोग ही होते हैं। protocol पसंद है, लेकिन users बढ़ाने हैं तो app को वहीं रखना होगा जहाँ लोग पहले से मौजूद हैं
जिज्ञासा है कि दूसरे decentralized messaging products Nostr या XMTP की तुलना में इसमें कोई खास feature है या नहीं
पिछले दिन की संबंधित चर्चा: “Government orders GitHub to remove Bluetooth-based chat app Bitchat: Jack Dorsey”
https://news.ycombinator.com/item?id=49036433