1 पॉइंट द्वारा GN⁺ 2023-11-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Servo ने जुलाई 2023 में NLnet ग्रांट प्राप्त की, जिसके जरिए एप्लिकेशन में web technologies को embed करने के लिए एक lightweight और high-performance विकल्प के रूप में अपने मुख्य layout फीचर्स को मजबूत किया
  • सुधार का दायरा CSS float को पूरा करना, inline layout में बहुभाषी समर्थन बढ़ाना, और शुरुआती <table> support जोड़ने पर केंद्रित है
  • CSS float पर काम 2023 के मध्य से जारी है, और संबंधित WPT tests की औसत pass rate को 80% से ऊपर ले जाना लक्ष्य है
  • inline layout में non-Latin characters की rendering के लिए जरूरी font selection, right-to-left scripts, और logical properties का समर्थन अभी पर्याप्त नहीं है
  • नए layout engine में table support न होने से कई web pages सही तरह से नहीं दिखते, इसलिए पहले Wikipedia table rendering को व्यावहारिक लक्ष्य बनाया गया है

NLnet ग्रांट से मजबूत किए जा रहे Servo के क्षेत्र

  • Servo ने जुलाई 2023 में NLnet ग्रांट पाकर layout से जुड़े कई फीचर्स में सुधार किया
  • मुख्य लक्ष्य तीन हिस्सों में बाँटे गए हैं
    • Servo में float support को पूरा करना
    • inline layout में अधिक भाषाओं का समर्थन
    • शुरुआती <table> support जोड़ना

हर लेआउट फीचर के लक्ष्य और प्रगति

  • Floats

    • Servo का float support 2023 के मध्य से प्रगति पर है
    • CSS float के पूरी तरह compliant implementation के रूप में इसे देखने के लिए अभी कुछ समस्याएँ सुलझानी बाकी हैं
    • /css/CSS2/floats/ और /css/CSS2/floats-clear/ की औसत WPT pass rate 80% से ऊपर ले जाना लक्ष्य है
    • नतीजे WPT dashboard पर ट्रैक किए जा सकते हैं
    • पिछले हफ्ते /css/CSS2/floats/ tests ने 82.2% pass rate के साथ लक्ष्य पार कर लिया
    • /css/CSS2/floats-clear/ फिलहाल 73.3% pass rate पर है और लक्ष्य के करीब पहुँच रहा है
  • More languages in inline layout

    • Servo के layout engine में Latin alphabet का उपयोग न करने वाली भाषाओं को render करने के लिए जरूरी core features की कमी है
    • जिन हिस्सों को मजबूत किया जा रहा है उनमें सही font selection, right-to-left scripts support, और logical properties शामिल हैं
    • लक्ष्य यह है कि Servo inline layout के support दायरे को बढ़ाकर अधिक विविध content दिखा सके
  • Initial <table> support

    • HTML table एक महत्वपूर्ण और व्यापक रूप से उपयोग होने वाला web feature है
    • Servo का नया layout engine अभी table support नहीं करता, इसलिए कई web pages के layouts सही ढंग से प्रदर्शित नहीं होते
    • शुरुआती table support का पहला लक्ष्य Wikipedia में इस्तेमाल होने वाले tables को render कर पाना है
    • हर milestone की प्रगति और उपलब्धि के बाद आगे के blog posts में इसे और विस्तार से बताया जाएगा

1 टिप्पणियां

 
GN⁺ 2023-11-11
Hacker News की राय
  • Servo को लेकर मैं बहुत उत्साहित हूं, और यकीन नहीं होता कि Mozilla ने इसमें दिलचस्पी नहीं ली
    सुरक्षा और परफॉर्मेंस में बेहतर engine का विचार तो अच्छा है ही, लेकिन मुझे खास तौर पर यह बात पसंद है कि web engine को component की तरह इस्तेमाल किया जा सकता है
    Windows 9x के दौर में IE में ActiveX control था, जिससे web engine को कहीं भी embed किया जा सकता था, और KHTML भी कुछ ऐसा ही था, लेकिन आजकल Firefox या Chrome दोनों ही ऐसे उपयोग में रुचि नहीं लेते दिखते
    शुक्र है कि Qt WebEngine मौजूद है, लेकिन मेरी समझ में Chrome पक्ष ऐसे use case की परवाह नहीं करता, इसलिए रिश्ता कुछ असहज है
    ऊपर से Chrome Google की चीज़ है, और अनुभव से कहूं तो Google की चीज़ों की अपनी ही दुनिया होती है, इसलिए उन्हें build और integrate करना झंझट भरा होता है
    इसलिए मैं code में डाल सकने वाले ऐसे व्यावहारिक विकल्प का बहुत इंतज़ार कर रहा हूं, जो सुरक्षा संबंधी चिंताओं को हल करे और integration की तकलीफ भी कम करे

    • “Mozilla ने Servo में दिलचस्पी नहीं ली” कहना सही नहीं लगता
      Mozilla ने इसे research project के तौर पर funding दी, और जब उन्हें एहसास हुआ कि इसे पूरी तरह market तक लाने में कहीं ज़्यादा पैसा और समय लगेगा, तो उन्होंने लागत बचाने का फैसला किया—बात शायद इतनी ही है
      हालांकि समस्या यह है कि उन्होंने वह पैसा executives आदि में ऐसे तरीके से बांटा जो उनकी बताई हुई नैतिकता से मेल नहीं खाता था
      blog posts देखने पर लगता है कि Mozilla ने Servo से ली जा सकने वाली चीज़ों को Firefox में integrate किया, इसलिए project से उन्हें कुछ हद तक value मिली
      मेरा मानना है कि अगर किसी ने Mozilla को बहुत सारा पैसा और बिना सीमा वाली timeline दी होती, तो वे Servo को पूरा कर देते
    • मैंने CEF, WebKit, WebView2 इस्तेमाल किए हैं, और इनमें आसानी से embed किया जा सकने वाला cross-platform विकल्प सिर्फ CEF था
      लेकिन जैसे ही CEF लोकप्रिय हुआ, Google ने CEF या दूसरे embedded browsers में Google login रोकने में बहुत resources लगा दिए[0]
      इस वजह से मुझे CEF-based browser छोड़ना पड़ा, और ऐसी business practices घिनौनी हैं, लेकिन करने को कुछ नहीं था
      अगर मेरा browser Google products में login नहीं कर सकता, तो उसका व्यापक इस्तेमाल मुश्किल है, और Google की detection पद्धति के साथ cat-and-mouse game खेलने का मेरे पास समय भी नहीं है
      अगर embedded browser component को इतना mainstream बनना है कि कोई भी browser बना सके, तो पहले बड़ी companies द्वारा popular हो चुके embedded browsers को block करने की समस्या से निपटना होगा
      आदर्श रूप से Android के अलावा embed किया जा सकने वाला Gecko आ जाए तो अच्छा होगा, क्योंकि Firefox इतना बड़ा है कि उसे रोकना मुश्किल है
      पहले भी इस बारे में काफी बातें हुई थीं, और window handle चुरा कर इस्तेमाल करने वाला proof of concept भी किया था[1], लेकिन इसमें पैसा नहीं है
      0 - https://developers.googleblog.com/2016/08/modernizing-oauth-...
      1 - https://github.com/cretz/ffembedpoc
    • Mozilla की Servo में दिलचस्पी थी
      आपका मतलब क्या है पता नहीं, लेकिन उन्होंने WebRender और Stylo समेत कई components Gecko में ले लिए थे
    • ActiveX की बात सुनकर बहुत कुछ याद आ गया
      मुझे याद है कि desktop background fail होने पर desktop पर clickable links वाला ActiveX error page दिखता था; वह सच में बहुत confusing था
    • WebKit अब भी embed करने के लिए अच्छा है, लेकिन Windows पर build करना messy है
      macOS और Linux पर यह बहुत अच्छे से काम करता है
      फिर भी embed किए जा सकने वाले web engines और ज़्यादा चाहिए
      Gecko अच्छा है, लेकिन XULRunner के साथ स्थायी रूप से जैसे एक ही चीज़ की तरह बंधे रहना इसकी बाधा है
  • Igalia के संभालने के बाद Servo पर काम जारी देखना अच्छा है
    कई सालों तक सिर्फ न्यूनतम maintenance होने से काफी technical debt जमा हो गया था, लेकिन लगता है कि असल progress हो रही है
    निजी तौर पर मैं चाहूंगा कि वे modularity को बहुत मजबूती से आगे बढ़ाएं
    embed करने की क्षमता पर focus वाला open source browser engine एक niche भर सकता है, और अगर ऐसी “अपना browser खुद बनाएं” library बन जाए जिससे लोग Lego blocks की तरह मिलाकर नए engines बना सकें, तो web platform की long-term health के लिए भी यह बहुत मददगार हो सकता है

    • सही है
      Servo embedded Electron या Electron जैसा कुछ आ जाए तो यह अच्छा परिणाम हो सकता है
      Tauri पहले ही उस niche को कुछ हद तक भरता है, लेकिन किसी चीज़ को embed करने के बजाय operating system द्वारा दी गई चीज़ का इस्तेमाल करता है
      बीच का कोई विकल्प हो तो अच्छा होगा
    • embedded engine व्यावहारिक use cases तक पहुंचने का कहीं तेज़ रास्ता भी है
      उदाहरण के लिए Sciter [1] ने DOM API का सिर्फ एक reasonable subset implement किया, फिर भी उसे कुछ सफलता मिली
      सामान्य internet surfing के लिए यह बहुत उपयुक्त नहीं है, लेकिन UI library की तरह इस्तेमाल करें तो जिन हिस्सों में काम नहीं होता, उनसे बचा जा सकता है
      1: https://sciter.com/
    • पूरी तरह अनुमान है, लेकिन iPhone को web engines खोलने के लिए मजबूर किए जाने के बाद, mobile devices में कुल मिलाकर अपना engine embed करने वाली apps आ सकती हैं
    • इसे उसी दिशा में मजबूती से design किया गया है
      component model और embed layer की संरचना ऐसी ही है
  • इस grant का funding source आंशिक रूप से European Commission से आता है, और NGI program के जरिए support मिलता है

  • Servo के लिए यह सच में अच्छी खबर है
    NLNet Foundation हाल में कई बेहतरीन projects को support कर रहा है, और उसका नाम अक्सर दिखता है

    • मेरा project https://www.oilshell.org/ भी 2022 से NLnet के support में रहा है और इससे बहुत मदद मिली
      कुछ issues को आगे बढ़ाने के लिए हमें मदद चाहिए थी, और वास्तव में वैसा हुआ
      हम मुख्यतः North America में हैं, लेकिन funding EU से आती है—इस लिहाज़ से यह काफी दूरदर्शी support है
  • शुरुआत से बनाया जा रहा एक और browser Ladybird भी देखने लायक है
    इसे थोड़ा ज़्यादा बिखरे हुए indie group जैसा कोई समूह बना रहा है: https://ladybird.dev/
    सच कहूँ तो यह वाकई बहुत मर्दाना-सा project है

    • सच कहूँ तो Servo से ज़्यादा Ladybird से उम्मीदें हैं
      यह देखते हुए कि project अभी बहुत नया है, यह पहले से ही काफ़ी impressive है
      सिर्फ़ screenshots लेकर देखें तो भी Servo का renderer बहुत basic, धीमा और bugs से भरा है
    • Ladybird हैरान करता है
      यह तेज़ है और वे सब कुछ openly बना रहे हैं, इसलिए Ladybird team जो कर रही है वह बहुत impressive है
    • क्या Ladybird सच में Serenity OS के बाहर भी इस्तेमाल लायक है?
    • C++ में लिखा एक और browser engine क्यों चाहिए?
  • न जाने क्यों मुझे लगा था कि Servo पहले ही Firefox में integrate हो चुका है
    क्या Rust में पूरा browser चलाए बिना HTML को image के रूप में render करने का कोई तरीका है?
    बहुत ज़्यादा HTML या CSS support की ज़रूरत नहीं है

    • CSS style system Stylo की शुरुआत Servo से हुई थी और अब यह Firefox में है, लेकिन मेरी समझ के मुताबिक दोनों काफ़ी अलग हो चुके हैं
      https://blog.nightly.mozilla.org/2017/07/25/stylo-is-ready-f...
    • WebRender और Stylo Servo से निकले और Quantum Render व Quantum CSS के रूप में integrate हुए
      शायद और भी चीज़ें हो सकती हैं
    • फिलहाल सबसे नज़दीकी शायद https://github.com/trimental/inlyne है
      हालांकि दो बातें अलग हैं: यह arbitrary HTML नहीं, सिर्फ़ Markdown support करता है, और image में नहीं बल्कि screen पर render करता है
      फिर भी यह एक अच्छा starting point है
      अभी Rust में web rendering की मुख्य bottleneck मुझे बेहतर text layout लगती है, खासकर display: inline-block जैसी चीज़ों के लिए text के अंदर non-text content डालने का support
      वह implement हो जाए तो basic web pages को काफ़ी ठीक-ठाक render किया जा सकेगा
    • पूरा engine तो नहीं, लेकिन WebRender और Stylo कई साल पहले से Firefox में हैं
      वे क्रमशः GPU-based compositor और CSS engine हैं
  • Servo Rust में लिखा web rendering engine है, जो WebGL और WebGPU support करता है, और desktop, mobile व embedded applications के हिसाब से adapt किया जा सकता है
    यह embeddable और independent web rendering engine है, जिसमें memory safety, modularity और parallelism है

  • तुलना के लिए इस्तेमाल किया गया Legacy Layout क्या है?
    क्या यह Servo का पिछला iteration है?
    कुछ code अभी भी दोनों तरफ़ इस्तेमाल होता दिखता है, और curves कभी-कभी साथ-साथ ऊपर-नीचे जाते हैं, लेकिन हमेशा नहीं

    • Legacy Layout असल system Layout 2013 को refer करता है
      बाद में, CSS specs के कुछ हिस्सों को implement करते समय Layout 2013 architecture में साफ़ तौर पर fit न होने वाली समस्याओं को हल करने के लिए दूसरा system Layout 2020 शुरू किया गया
      इस साल Servo wiki पर Igalia के लोगों ने एक अच्छी report लिखी है, जिसमें दोनों systems के differences और Layout 2020 की तरफ़ आगे बढ़ने का फैसला क्यों किया गया, इसका सार दिया गया है
      https://github.com/servo/servo/wiki/Servo-Layout-Engines-Rep...