- 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 टिप्पणियां
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 ने इसे research project के तौर पर funding दी, और जब उन्हें एहसास हुआ कि इसे पूरी तरह market तक लाने में कहीं ज़्यादा पैसा और समय लगेगा, तो उन्होंने लागत बचाने का फैसला किया—बात शायद इतनी ही है
हालांकि समस्या यह है कि उन्होंने वह पैसा executives आदि में ऐसे तरीके से बांटा जो उनकी बताई हुई नैतिकता से मेल नहीं खाता था
blog posts देखने पर लगता है कि Mozilla ने Servo से ली जा सकने वाली चीज़ों को Firefox में integrate किया, इसलिए project से उन्हें कुछ हद तक value मिली
मेरा मानना है कि अगर किसी ने Mozilla को बहुत सारा पैसा और बिना सीमा वाली timeline दी होती, तो वे Servo को पूरा कर देते
लेकिन जैसे ही 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
आपका मतलब क्या है पता नहीं, लेकिन उन्होंने WebRender और Stylo समेत कई components Gecko में ले लिए थे
मुझे याद है कि desktop background fail होने पर desktop पर clickable links वाला ActiveX error page दिखता था; वह सच में बहुत confusing था
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 द्वारा दी गई चीज़ का इस्तेमाल करता है
बीच का कोई विकल्प हो तो अच्छा होगा
उदाहरण के लिए Sciter [1] ने DOM API का सिर्फ एक reasonable subset implement किया, फिर भी उसे कुछ सफलता मिली
सामान्य internet surfing के लिए यह बहुत उपयुक्त नहीं है, लेकिन UI library की तरह इस्तेमाल करें तो जिन हिस्सों में काम नहीं होता, उनसे बचा जा सकता है
1: https://sciter.com/
component model और embed layer की संरचना ऐसी ही है
इस grant का funding source आंशिक रूप से European Commission से आता है, और NGI program के जरिए support मिलता है
Servo के लिए यह सच में अच्छी खबर है
NLNet Foundation हाल में कई बेहतरीन projects को support कर रहा है, और उसका नाम अक्सर दिखता है
कुछ issues को आगे बढ़ाने के लिए हमें मदद चाहिए थी, और वास्तव में वैसा हुआ
हम मुख्यतः North America में हैं, लेकिन funding EU से आती है—इस लिहाज़ से यह काफी दूरदर्शी support है
शुरुआत से बनाया जा रहा एक और browser Ladybird भी देखने लायक है
इसे थोड़ा ज़्यादा बिखरे हुए indie group जैसा कोई समूह बना रहा है: https://ladybird.dev/
सच कहूँ तो यह वाकई बहुत मर्दाना-सा project है
यह देखते हुए कि project अभी बहुत नया है, यह पहले से ही काफ़ी impressive है
सिर्फ़ screenshots लेकर देखें तो भी Servo का renderer बहुत basic, धीमा और bugs से भरा है
यह तेज़ है और वे सब कुछ openly बना रहे हैं, इसलिए Ladybird team जो कर रही है वह बहुत impressive है
न जाने क्यों मुझे लगा था कि Servo पहले ही Firefox में integrate हो चुका है
क्या Rust में पूरा browser चलाए बिना HTML को image के रूप में render करने का कोई तरीका है?
बहुत ज़्यादा HTML या CSS support की ज़रूरत नहीं है
https://blog.nightly.mozilla.org/2017/07/25/stylo-is-ready-f...
शायद और भी चीज़ें हो सकती हैं
हालांकि दो बातें अलग हैं: यह 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 किया जा सकेगा
वे क्रमशः 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 कभी-कभी साथ-साथ ऊपर-नीचे जाते हैं, लेकिन हमेशा नहीं
बाद में, 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...