नेटवर्क स्विच को किसने मार डाला? एक Hubris बग की कहानी
कहानी और Oxide के काम पर समग्र प्रतिक्रिया
- कई पाठकों ने इस डिबगिंग लेख को असाधारण रूप से स्पष्ट और प्रेरणादायक पाया, और बग के बावजूद इंजीनियरिंग की गहराई तथा सिस्टम की स्थिरता की सराहना की।
- Hubris (RTOS) को साफ़-सुथरा, अच्छी तरह संरचित Rust कोड बताया गया, जो C kernels की “ifdef soup” के मुकाबले एक ताज़गीभरा अंतर है।
- कुछ लोगों ने Oxide और Tailscale जैसे टूल्स को “niche but impressive” प्रयास कहा; दूसरों ने आपत्ति की कि ऐसे टूल्स व्यक्तिगत रूप से ज़रूरी न हों तब भी व्यापक रूप से उपयोगी और प्रशंसनीय हैं।
Rust, memory safety, और यह बग
- एक धारा इस घटना को “Rust still has memory overwrite bugs” के रूप में पेश करने की कोशिश करती है, जबकि कई जवाब यह ज़ोर देते हैं:
- यह बग Rust-विशिष्ट नहीं था, न ही किसी “new breed” का बग।
- Rust memory errors की कई सामान्य श्रेणियाँ हटाता है, लेकिन सभी logic mistakes को नहीं रोक सकता।
- कई लोगों ने बताया कि failure mode (silent corruption/CVE के बजाय crash) वास्तव में एक सकारात्मक परिणाम है।
C ethos, identifiers, और comments
- एक लंबा उप-थ्रेड C संस्कृति पर बहस करता है: छोटे variable names, terse standard library functions, और comments से बचना।
- स्पष्टीकरणों में ऐतिहासिक बाधाएँ शामिल हैं (80×24 terminals, 6-char identifier limits, teletype I/O) और readability के tradeoffs।
- अन्य लोगों का तर्क है कि idioms और teaching language mechanics से ज़्यादा महत्वपूर्ण हैं; भाषाएँ यह तय करती हैं कि “typical” code कैसा दिखेगा।
- कुछ लोग “don’t write comments” वाली धारणा की आलोचना करते हैं, जबकि अन्य “don’t trust comments” पर ज़ोर देते हुए भी अच्छी documentation को महत्व देते हैं।
Hubris बनाम अन्य embedded Rust stacks
- embassy के साथ तुलना:
- Hubris static, ahead-of-time task configuration का उपयोग करता है, जिसमें runtime “spawn task” नहीं होता।
- Hubris async Rust से बचता है; embassy इसे अपनाता है।
- टिप्पणीकार इन्हें अलग समस्याएँ हल करने वाले मानते हैं, न कि एक को दूसरे से श्रेष्ठ।
- RTIC का उल्लेख “embassy-like without a HAL” के रूप में किया गया, जो भावना में Hubris के कुछ अधिक करीब है।
Kernel design और testing details
- MPU limits, TLBs, और “soft-filled” TLB-style schemes पर चर्चा होती है; कुछ लोग इन्हें soft real-time के लिए भी व्यवहार्य मानते हैं, जबकि अन्य सरलता और debuggability को प्राथमिकता देते हैं।
- एक छोटा API design nit invariants, documentation placement, और ordering लागू करने वाले constructors के मूल्य पर चर्चा में बदल जाता है।
- host
cargo testकी अनुमति देने के लिएcan_accessको अलग crate में ले जाने पर बहस होती है; कुछ इसे “left-pad vibes” मानते हैं, जबकि अन्य इसेno_stdcross-compiled code के परीक्षण के लिए व्यावहारिक बताते हैं।
Organization, culture, और hiring
- लेख का tight, non-siloed collaboration का वर्णन रुचि आकर्षित करता है।
- एक विस्तृत जवाब समझाता है:
- अंतिम authority स्पष्ट है (CEO), लेकिन संस्कृति autonomy और openness पर ज़ोर देती है।
- uniform compensation का उपयोग stack-ranking और pay differences से बनने वाली “shadow hierarchies” से बचने के लिए किया जाता है।
- hiring को deliberate और value-focused बताया गया है (उदाहरण के लिए, Rust के वर्षों के बजाय debugging mindset पर)।
- remote hiring केवल US तक सीमित नहीं है; Europe, Canada और अन्य स्थानों में कर्मचारी हैं, लेकिन Pacific Time से लगभग 4 घंटे का overlap आवश्यक है, जिसे कुछ लोग दूरस्थ time zones में बच्चों के साथ कठिन मानते हैं।
विविध नोट्स
- कुछ लोगों ने पोस्ट के सूक्ष्म “we’re hiring” पहलू को एक उत्कृष्ट job ad के रूप में सराहा।
- नामकरण योजना (“Hubris” OS और “Humility” debugger) को हास्यपूर्ण और self-aware माना गया।
- internal I2C “probe” board के बारे में जिज्ञासा पर स्पष्ट किया गया कि यह EEPROMs प्रोग्राम करने के लिए एक छोटा Hubris-powered manufacturing tool है, कोई general-purpose dev board नहीं।