- D-Bus ऐप्लिकेशनों के बीच संचार के लिए एक bus है, जिसका कॉन्सेप्ट उपयोगी है, लेकिन इसका implementation बहुत कमजोर और non-standard है
- standard documentation अधूरी और असंगत है, और वास्तविक implementations इसका पालन नहीं करतीं, जिससे compatibility का ढहना होता है
- security flaws भी गंभीर हैं; unlock होने की स्थिति में एक ऐप दूसरे ऐप के secret data को पढ़ सकता है
- इसके जवाब में लेखक नया bus system ‘hyprtavern’ और protocol ‘hyprwire’ विकसित कर रहा है
- hyprtavern सख्त type checking, built-in permission management, सुरक्षित secret store (kv) आदि के जरिए D-Bus की संरचनात्मक समस्याओं को हल करने की कोशिश करता है
D-Bus की अवधारणा और सीमाएँ
- D-Bus एक ऐसा सिस्टम है जिसमें application और service shared bus के जरिए methods और properties expose कर सकते हैं और एक-दूसरे को call कर सकते हैं
- उदाहरण के लिए, यदि मौसम सेवा देने वाला कोई ऐप bus पर API register करता है, तो दूसरे ऐप उसे खोजकर इस्तेमाल कर सकते हैं
- लेकिन D-Bus की बहुत ढीली और असंरचित design के कारण कोई भी object मनमाने method register और call कर सकता है
- इससे “Garbage in, garbage out” जैसी स्थिति पैदा होती है
standard documentation और implementation में भ्रम
- D-Bus की standard documentation कई जगह बिखरी हुई है और अधूरी व कठिन रूप में मौजूद है
- वास्तविक implementations या तो इसका पालन नहीं करतीं, या अलग-अलग spec को मनमाने ढंग से अपनाती हैं
- लेखक बताता है कि xdg-desktop-portal-hyprland विकसित करते समय उसने “restore_token” spec implement किया,
लेकिन सभी ऐप अनौपचारिक “restore_data” field का उपयोग कर रहे थे, इसलिए compatibility नहीं बनी
- D-Bus का variant type (a{sv}) मनमाना data transfer करने देता है, और इसे protocol consistency तोड़ने का बड़ा कारण बताया गया है
security संरचना की खामियाँ
- D-Bus में centralized permission management या deny mechanism मौजूद नहीं है
- सभी ऐप दूसरे ऐप की calls देख सकते हैं, और यदि कोई explicit security mechanism न हो तो असीमित access संभव है
- gnome-keyring, kwallet जैसे secret stores भी संरचनात्मक रूप से कमजोर हैं
- store unlock होने पर हर ऐप सभी secret data तक पहुँच सकता है
- लेखक ने इसे “security joke के स्तर” का बताया
नया विकल्प: hyprwire और hyprtavern
- लेखक D-Bus की समस्याओं को हल करने के लिए नया bus system ‘hyprtavern’ विकसित कर रहा है
- hyprwire Wayland के design से प्रेरित एक सरल और सुसंगत wire protocol है
- इसकी खासियतें हैं type enforcement, तेज connection, और सरल संरचना
- hyprtavern की संरचना ऐसी है जिसमें ऐप protocol-आधारित objects register करते हैं और एक-दूसरे को खोजते हैं
- यह built-in permission system, सख्त protocol compliance, सरल API, और secure defaults देता है
hyprtavern-kv (सुरक्षित key-value store)
- यह D-Bus की Secrets API को replace करने वाला core protocol है
- किसी ऐप द्वारा register किए गए secrets को सिर्फ वही ऐप पढ़ सकता है, और उनका enumeration संभव नहीं है
- Flatpak, Snap, AppImage ऐप्स के लिए ID-आधारित access control की भी योजना है
- data हमेशा encrypted रूप में store होगा, और password सेट होने पर वास्तविक security guarantee संभव है
- सभी ऐप सुरक्षित secret storage feature को डिफ़ॉल्ट रूप से इस्तेमाल कर सकेंगे
development status और आगे की योजना
- hyprtavern अभी development के शुरुआती चरण में है, और आगे Hyprland 0.54 version में इसका आंतरिक उपयोग किया जाएगा
- शुरुआती adoption सीमित रहने की उम्मीद है, लेकिन क्रमिक transition संभव है
- D-Bus के विपरीत, कई session buses को साथ चलाया जा सकता है, इसलिए compatibility proxy लिखना भी संभव है
- यह C++ में लिखा गया है, और Rust·Go·Python bindings भी आसानी से implement किए जा सकते हैं
- लेखक ज़ोर देकर कहता है कि “D-Bus को मूल रूप से ठीक नहीं किया जा सकता; इसे पूरी तरह नए सिरे से design करना होगा”
FAQ सारांश
- “पहिया फिर से बनाने” वाली आलोचना पर लेखक कहता है कि D-Bus की मूल design ही टूटी हुई है, इसलिए redesign अपरिहार्य है
- documentation अभी WIP (कार्य प्रगति पर) है और पूरा होने के बाद जारी किया जाएगा
- Wayland का उपयोग न करने का कारण यह है कि वह सामान्य IPC उपयोग के लिए उपयुक्त नहीं है
- D-Bus compatibility proxy (hyprtavern-dbus-notification-proxy) लिखना संभव है
- Rust की जगह C++ चुनने का कारण यह है कि developer की मुख्य भाषा C++ है
- security के लिहाज़ से LD_PRELOAD attack को पूरी तरह रोकना कठिन है, लेकिन यह संरचना हमले की कठिनाई और detectability बढ़ाती है
निष्कर्ष
- D-Bus को non-standard, insecure, और inconsistent होने के कारण Linux डेस्कटॉप ecosystem की bottleneck के रूप में देखा जा रहा है
- hyprtavern को इसके स्थान पर एक आधुनिक और सुरक्षित IPC bus के रूप में विकसित किया जा रहा है,
और Hyprland ecosystem के केंद्र में क्रमिक अपनाने की उम्मीद है
- लक्ष्य है “userspace को अधिक आरामदायक बनाना”
अभी कोई टिप्पणी नहीं है.