- Servo, Temmuz 2023'te aldığı NLnet hibesi ile, web teknolojilerini uygulamalara gömmek için hafif ve yüksek performanslı bir alternatif olarak temel yerleşim özelliklerini güçlendiriyor
- İyileştirme kapsamı CSS float desteğinin tamamlanması, satır içi yerleşimde çok dilli desteğin genişletilmesi ve başlangıç düzeyinde
<table>desteği eklenmesine odaklanıyor - CSS float çalışmaları 2023 ortasından beri sürüyor; ilgili WPT testlerinde ortalama geçme oranını %80'in üzerine çıkarmak hedefleniyor
- Satır içi yerleşimde Latin dışı karakterlerin render edilmesi için gereken yazı tipi seçimi, sağdan sola yazılan karakterler ve mantıksal özellikler desteği eksik
- Yeni yerleşim motorunda table desteğinin olmaması birçok web sayfasının görüntülenmesini bozduğu için, ilk pratik hedef Wikipedia table'larını render etmek oldu
NLnet hibesiyle güçlendirilen Servo alanları
- Servo, Temmuz 2023'te aldığı NLnet hibesi ile yerleşimle ilgili çeşitli özellikleri iyileştiriyor
- Ana hedefler üç başlıkta özetleniyor
- Servo'nun float desteğini tamamlama
- Satır içi yerleşimde daha fazla dili destekleme
- Başlangıç düzeyinde
<table>desteği ekleme
Yerleşim özelliklerine göre hedefler ve ilerleme durumu
-
Floats
- Servo'nun float desteği 2023 ortasından beri geliştiriliyor
- CSS float'ı tam uyumlu biçimde uyguladığını söylemek için hâlâ çözülmesi gereken sorunlar var
/css/CSS2/floats/ve/css/CSS2/floats-clear/için ortalama %80'in üzerinde WPT geçme oranı hedefleniyor- Sonuçlar WPT dashboard üzerinden takip edilebilir
- Geçen hafta
/css/CSS2/floats/testleri %82,2 geçme oranıyla hedefi aştı /css/CSS2/floats-clear/şu anda %73,3 geçme oranıyla hedefe yaklaşıyor
-
Satır içi yerleşimde daha fazla dil
- Servo'nun yerleşim motorunda, Latin alfabesi kullanmayan dilleri render etmek için gereken temel özellikler eksik
- Güçlendirilecek alanlar arasında doğru yazı tipi seçimi, sağdan sola yazılan karakter desteği ve mantıksal özellikler bulunuyor
- Hedef, Servo'nun daha çeşitli içerikleri gösterebilmesi için satır içi yerleşimin destek kapsamını genişletmek
-
Başlangıç düzeyinde
<table>desteği- HTML table önemli ve yaygın kullanılan bir web özelliğidir
- Servo'nun yeni yerleşim motoru henüz table desteklemediği için birçok web sayfası yerleşimi doğru görüntülenmiyor
- Başlangıç düzeyindeki table desteğinin ilk hedefi, Wikipedia'da kullanılan table'ları render edebilmek
- Her bir kilometre taşı ilerledikçe ve tamamlandıkça, sonraki blog yazılarında daha ayrıntılı ele alınacak
1 yorum
Hacker News yorumları
Servo için çok heyecanlıyım ve Mozilla’nın buna ilgi göstermemiş olmasına inanmak zor
Güvenliği ve performansı yüksek bir motor fikri güzel, ama özellikle web motorunun bir bileşen olarak kullanılabilmesi hoşuma gidiyor
Windows 9x döneminde IE’de ActiveX denetimleri vardı; bu sayede web motorunu her yere gömebiliyordunuz, KHTML de benzerdi, ama bugün ne Firefox ne de Chrome böyle bir kullanım alanıyla ilgileniyor gibi görünüyor
Neyse ki Qt WebEngine var, ancak anladığım kadarıyla Chrome tarafı bu tür kullanım senaryolarını önemsemediği için ilişki biraz sorunlu
Ayrıca Chrome, Google’ın ürünü ve deneyimime göre Google ürünlerinin kendine özgü bir dünyası var; derlemek ve entegre etmek zahmetli oluyor
Bu yüzden güvenlik kaygılarını çözerken entegrasyon sancısını da azaltacak, kodun içine koyulabilecek pratik bir alternatifi gerçekten bekliyorum
Mozilla buna bir araştırma projesi olarak fon sağladı ve bunu tam anlamıyla piyasaya çıkaracak bir ürün haline getirmenin çok daha fazla para ve zaman gerektirdiğini fark edip maliyeti kısmaya karar vermesine daha yakın bir durum var
Yine de o parayı, savundukları ahlak anlayışıyla bağdaşmayan biçimde yöneticilere vb. dağıtmış olmaları ayrı bir sorun
Blog yazılarına bakılırsa Mozilla, Servo’dan alabileceği şeyleri Firefox’a entegre etti; yani projeden belli ölçüde değer elde etmiş oldular
Birisi Mozilla’ya bol para ve sınırsız takvim verseydi Servo’yu tamamlayacaklarını düşünüyorum
Ama CEF popüler olur olmaz Google, CEF ve diğer gömülü tarayıcılarda Google oturum açmayı engellemek için ciddi kaynak harcadı[0]
Bu yüzden CEF tabanlı tarayıcıyı bırakmak zorunda kaldım; bu tür iş uygulamalarından nefret ediyorum ama yapabileceğim bir şey yoktu
Tarayıcım Google ürünlerinde oturum açamıyorsa yaygın kullanılması zor ve Google’ın tespit yöntemleriyle kedi-fare oyunu oynayacak zamanım da yok
Gömülü tarayıcı bileşenlerinin herkesin tarayıcı yapabileceği kadar ana akım hale gelmesi için, büyük şirketlerin popüler olmaya başlayan gömülü tarayıcıları engellemesi sorunu önce ele alınmalı
İdeal olarak Android olmayan, gömülebilir bir Gecko çıksa iyi olurdu; çünkü Firefox engellenemeyecek kadar büyük
Daha önce de bununla ilgili çok konuşuldu ve pencere tanıtıcısını ele geçirerek çalışan bir kavram kanıtı da yaptım[1], ama para kazandırmıyor
0 - https://developers.googleblog.com/2016/08/modernizing-oauth-...
1 - https://github.com/cretz/ffembedpoc
Ne demek istediğini bilmiyorum ama WebRender ve Stylo dahil birkaç bileşeni Gecko’ya aktardılar
Masaüstü arka planı başarısız olduğunda, masaüstünde tıklanabilir bağlantılar içeren bir ActiveX hata sayfası göründüğünü hatırlıyorum; gerçekten çok kafa karıştırıcıydı
macOS ve Linux’ta çok iyi çalışıyor
Yine de daha fazla gömülebilir web motoruna ihtiyacımız var
Gecko iyi, ancak XULRunner ile kalıcı biçimde tek vücut gibi bağlı olması ayak bağı oluyor
Igalia devraldıktan sonra Servo çalışmalarının sürmesini görmek güzel
Yıllarca yalnızca asgari bakım yapıldığı için oluşan teknik borç çoktu, ama gerçekten ilerleme var gibi görünüyor
Kişisel olarak modülerliğin güçlü biçimde öne itilmesini isterim
Gömülebilirliğe odaklanan açık kaynak bir tarayıcı motorunun doldurabileceği bir boşluk var gibi duruyor ve insanların Lego blokları gibi karıştırıp yeni motorlar yapabileceği “kendin yap tarayıcı” kütüphanelerinin ortaya çıkması, web platformunun uzun vadeli sağlığına da büyük katkı sağlayabilir
Servo gömülü bir Electron ya da Electron benzeri bir şey çıkarsa iyi sonuç verebilir
Tauri bu boşluğu bir ölçüde zaten dolduruyor, ama bir şeyi gömmekten çok işletim sisteminin sunduğunu kullanıyor
İkisinin ortasında bir seçenek olsa güzel olurdu
Örneğin Sciter [1], DOM API’sinin yalnızca makul bir alt kümesini uygulamasına rağmen bir ölçüde başarılı oldu
Genel internet gezintisi için çok uygun değil, ama bir UI kütüphanesi olarak kullanırsanız çalışmayan kısımlardan kaçınabilirsiniz
1: https://sciter.com/
Bileşen modeli ve gömme katmanı bu yapının parçası
Bu hibenin kaynağının bir kısmı European Commission tarafından, NGI programı üzerinden sağlanıyor
Servo için gerçekten çok iyi haber
NLNet Foundation son dönemde birçok harika projeyi destekliyor ve adını sık sık görüyorum
İlerletmek istediğim bazı meselelerde desteğe ihtiyacım vardı ve gerçekten de bunu sağladılar
Biz ağırlıklı olarak Kuzey Amerika’dayız, ama fonun AB’den gelmesi çok ileri görüşlü bir destek örneği
Sıfırdan yapılan bir başka tarayıcı olarak Ladybird de bakmaya değer
Daha da derme çatma bir indie grup tarafından geliştiriliyor: https://ladybird.dev/
Açıkçası gerçekten gözü kara bir proje
Hâlâ çok genç bir proje olduğu düşünülürse şimdiden oldukça etkileyici
Sadece ekran görüntülerine bakınca bile Servo'nun renderer'ı çok temel, yavaş ve hatalarla dolu görünüyor
Hızlı ve her şeyi açık şekilde geliştiriyorlar; Ladybird ekibinin yaptığı iş gerçekten etkileyici
Nedense Servo'nun zaten Firefox'a entegre edildiğini sanıyordum
Rust'ta tüm tarayıcıyı ayağa kaldırmadan HTML'i görüntüye render etmenin bir yolu var mı?
Çok fazla HTML ya da CSS desteğine gerek yok
https://blog.nightly.mozilla.org/2017/07/25/stylo-is-ready-f...
Muhtemelen başka şeyler de vardır
Ama iki fark var: rastgele HTML yerine yalnızca Markdown destekliyor ve görüntü yerine ekrana render ediyor
Yine de iyi bir başlangıç noktası
Bence şu anda Rust'ta web rendering'in önündeki temel darboğaz, daha iyi metin yerleşimi, özellikle de
display: inline-blockgibi metin içine metin dışı içerik yerleştirme desteğiBu uygulanırsa temel web sayfası rendering'i oldukça iyi yapılabilir gibi görünüyor
Bunlar sırasıyla GPU tabanlı compositor ve CSS motoru
Servo, Rust ile yazılmış bir web rendering motoru ve WebGL ile WebGPU'yu destekliyor; masaüstü, mobil ve gömülü uygulamalara uyarlanabiliyor
Gömülebilir, bağımsız; bellek güvenliği, modülerlik ve paralellik sunan bir web rendering motoru
Karşılaştırma için kullanılan Legacy Layout nedir?
Servo'nun önceki iterasyonu mu?
Bazı kodların hâlâ iki tarafta da kullanıldığı görülüyor ve eğriler bazen birlikte yükselip düşüyor, ama bu her zaman olmuyor
Daha sonra CSS spesifikasyonunun bazı kısımlarını uygularken Layout 2013 mimarisine temiz biçimde uymayan sorunları çözmek için ikinci sistem olan Layout 2020 başlatıldı
Bu yıl Servo vikisinde, Igalia ekibinin yazdığı; iki sistem arasındaki farkları ve neden Layout 2020'ye geçmeye karar verildiğini özetleyen iyi bir rapor var
https://github.com/servo/servo/wiki/Servo-Layout-Engines-Rep...