1 पॉइंट द्वारा GN⁺ 2024-04-21 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Thunderbird में Exchange सपोर्ट जोड़ने के लिए Rust भाषा का उपयोग करते हुए विकास जारी है
    • जुलाई में आने वाले अगले ESR(Extended Support) वर्ज़न में पहले केवल ईमेल सपोर्ट दिया जाएगा, जबकि कैलेंडर और एड्रेस बुक फीचर बाद में जोड़े जाएंगे
    • Brendan Abolivier, Ikey Doherty, Sean Burke इस काम पर काम कर रहे हैं

Rust भाषा क्यों चुनी गई

  • Thunderbird एक पुराना प्रोजेक्ट है और इसमें काफी पुराना C++ कोड मौजूद है
  • नई सुविधाएँ विकसित करने के लिए ऐसी भाषा चाहिए जो शक्तिशाली होने के साथ लंबी अवधि में maintain करना भी आसान हो
  • Rust के फायदे हैं memory safety, performance, modularity और ecosystem
  • Firefox के साथ साझा की जाने वाली CI infrastructure पहले से ही Rust को सपोर्ट करती है
  • XPCOM के जरिए Rust, C++, JavaScript के बीच कॉल संभव हैं
  • Rust के मजबूत tooling का उपयोग करके पुराने architecture को बेहतर बनाया जा सकता है
  • Rust कई platforms को सपोर्ट करता है, इसलिए Thunderbird for Android/K-9 Mail जैसे दूसरे प्रोजेक्ट्स में भी इसे दोबारा इस्तेमाल किया जा सकता है

सामने आई चुनौतियाँ

  • मौजूदा कोड में ऐसे कई asynchronous patterns हैं जो Rust के साथ अच्छी तरह मेल नहीं खाते
  • Firefox और Thunderbird codebase में कई ऐसे फीचर हैं जिनके लिए Rust bindings मौजूद नहीं हैं
  • Thunderbird build system, Firefox कोड को subtree के रूप में लाता है, इसलिए Rust कोड को integrate करना मुश्किल था
    • Cargo workspace को nested नहीं किया जा सकता, इसलिए build tool mach में बदलाव करके इसका समाधान किया गया
  • XPCOM मूल रूप से C++ के लिए डिज़ाइन किया गया था, इसलिए Rust में इसका उपयोग करने के लिए काफी boilerplate code लिखना पड़ता है
    • इसका समाधान इस तरह किया गया कि protocol-specific logic Rust में लागू की गई और C++ में bridge classes बनाकर उन्हें मौजूदा कोड से जोड़ा गया

Rust के जरिए Exchange सपोर्ट का implementation

  • EWS(Exchange Web Services) API, HTTP पर संचार करती है और XML फ़ॉर्मैट में request और response का उपयोग करती है
  • HTTP request भेजने के लिए Firefox के necko networking component का उपयोग किया जा रहा है, लेकिन यह XPCOM के जरिए expose होने के कारण इस्तेमाल में असुविधाजनक था
    • xpcom_async crate बनाया गया, जो XPCOM के asynchronous operations को Rust के async/await syntax में बदलता है
    • moz_http crate बनाया गया, जो reqwest-style HTTP client API देता है
  • XML request/response processing के लिए मौजूदा crates का उपयोग करने की कोशिश की गई, लेकिन वे EWS की requirements पूरी नहीं कर सके
    • xml_struct crate बनाया गया, जो Rust data structures और XML के बीच intuitive mapping देता है
    • ews crate बनाया गया, जो EWS के लिए type definitions और xml_struct तथा serde आधारित XML serialization/deserialization API प्रदान करता है

आगे की योजना

  • अगली बड़ी फीचर development से पहले automated tests को बढ़ाया जा रहा है
    • unit tests के अलावा एक mock EWS server बनाकर integration tests भी चल रहे हैं
  • error handling को बेहतर बनाने का काम जारी है
    • EWS का error behavior अच्छी तरह documented नहीं है, इसलिए protocol level से लेकर user intervention की ज़रूरत वाले level तक कई स्तरों पर handling की ज़रूरत है
  • EWS protocol सपोर्ट का विस्तार और Thunderbird UI के साथ integration पर काम जारी है
    • हाल ही में EWS account जोड़ना, remote server से folder hierarchy sync करना, और UI में folders दिखाना जैसी सुविधाएँ पूरी की गई हैं
    • अगला काम remote server से message list लाना और Thunderbird की outgoing mail support सुविधा का सामान्यीकरण करना है
  • भविष्य की maintainability सुनिश्चित करने के लिए सभी काम का documentation किया जा रहा है
    • Thunderbird की मौजूदा mail protocol architecture और उसमें सुधार की दिशा पर भी documentation जारी है

GN⁺ की राय

  • Thunderbird में Rust को शामिल करके पुराने architecture को modernize करना एक बेहद सकारात्मक बदलाव लगता है। Rust के फायदों का उपयोग करते हुए मौजूदा codebase के साथ compatibility बनाए रखने के लिए कई तरह के प्रयास किए जा रहे हैं।
  • development के दौरान बनाए गए xpcom_async, moz_http, xml_struct, ews जैसे crates Thunderbird के बाहर दूसरे प्रोजेक्ट्स में भी उपयोगी साबित हो सकते हैं.
  • हालांकि Thunderbird का पुराना architecture और Firefox codebase पर निर्भर build system आगे भी Rust अपनाने में बाधा बन सकते हैं। लंबी अवधि में इन समस्याओं को हल करने के लिए भी प्रयास ज़रूरी लगते हैं.
  • EWS का उपयोग कंपनियों और शैक्षणिक संस्थानों में व्यापक रूप से होता है, इसलिए Thunderbird में EWS सपोर्ट आने से user base बढ़ाने में बड़ी मदद मिल सकती है। हालांकि EWS, Microsoft का proprietary protocol है, इसलिए open source प्रोजेक्ट में इसे implement करना चुनौतीपूर्ण हो सकता है.
  • कुल मिलाकर, ऐसा लगता है कि Thunderbird प्रोजेक्ट Rust को अपनाने को आधार बनाकर architecture modernization और feature expansion के लिए सक्रिय रूप से आगे बढ़ रहा है। open source email client के प्रमुख विकल्प के रूप में Thunderbird की प्रगति उपयोगकर्ताओं के लिए बड़ा लाभ होगी.

1 टिप्पणियां

 
GN⁺ 2024-04-21
Hacker News राय
  • EWS को 2 साल बाद हटाया जाना है, फिर भी इसे लागू करने की वजह पर सवाल उठाया गया
  • Thunderbird में Firefox Quantum अपडेट से पहले जैसी धीमेपन की समस्या है। हज़ारों ईमेल वाले फ़ोल्डरों के बीच स्विच करते समय देरी होती है, जबकि Outlook में यह तुरंत होता है
  • अगर रणनीतिक लक्ष्य लोगों को Thunderbird इस्तेमाल करने के लिए प्रेरित करना है तो यह ठीक है, लेकिन वैचारिक रूप से JMAP support बेहतर होता, ऐसा मत रखा गया
  • 20 साल पहले IT इंडस्ट्री में Linux इस्तेमाल करने वाले कम थे, तब Exchange client ढूँढना मुश्किल था — यह बात याद की गई
  • इशारा किया गया कि शीर्षक Rust programming के बारे में बदल दिया गया है, लेकिन असली सामग्री Thunderbird के Exchange support के बारे में नहीं है
  • Exchange पसंद नहीं होने के बावजूद, Windows पर plain text mail भेज पाना अच्छा लगने की बात कही गई
  • सुझाव दिया गया कि Outlook से स्विच करते समय PST file import को डिफ़ॉल्ट रूप से दिया जाना चाहिए ताकि यूज़र आसानी से माइग्रेट कर सकें
  • उम्मीद जताई गई कि Thunderbird, EWS support के मामले में Gnome के Evolution का एक उचित competitor बन सके
  • इस बात पर ज़ोर दिया गया कि SMTP/2 + IMAP5 जैसे नए protocols की सख्त ज़रूरत है
  • OWL extension इस्तेमाल करनी पड़ती थी, ऐसे में यह सुधार स्वागतयोग्य होगा, ऐसा मत व्यक्त किया गया