- Pada Juli 2023, Servo menerima hibah NLnet untuk memperkuat fitur layout inti sebagai alternatif ringan dan berkinerja tinggi untuk menyematkan teknologi web ke dalam aplikasi
- Cakupan peningkatan berfokus pada penyelesaian CSS float, perluasan dukungan multibahasa pada inline layout, dan penambahan dukungan awal untuk
<table> - Pengerjaan CSS float telah berlanjut sejak pertengahan 2023, dengan target menaikkan rata-rata tingkat kelulusan pengujian WPT terkait menjadi lebih dari 80%
- Inline layout masih kekurangan dukungan untuk pemilihan font, aksara yang ditulis dari kanan ke kiri, dan logical properties yang dibutuhkan untuk merender karakter non-Latin
- Karena belum adanya dukungan table di mesin layout baru merusak tampilan banyak halaman web, rendering table Wikipedia menjadi target praktis awal
Area Servo yang Diperkuat dengan Hibah NLnet
- Pada Juli 2023, Servo menerima hibah NLnet untuk meningkatkan berbagai fitur terkait layout
- Tujuan utamanya dirangkum menjadi tiga hal
- Menyelesaikan dukungan float di Servo
- Mendukung lebih banyak bahasa dalam inline layout
- Menambahkan dukungan awal untuk
<table>
Target dan Status Perkembangan per Fitur Layout
-
Floats
- Dukungan float di Servo telah berjalan sejak pertengahan 2023
- Masih ada masalah yang perlu diselesaikan sebelum dapat dianggap sebagai implementasi yang sepenuhnya sesuai dengan CSS float
- Targetnya adalah rata-rata tingkat kelulusan WPT lebih dari 80% untuk
/css/CSS2/floats/dan/css/CSS2/floats-clear/ - Hasilnya dapat dilacak di WPT dashboard
- Pekan lalu, pengujian
/css/CSS2/floats/melampaui target dengan tingkat kelulusan 82,2% /css/CSS2/floats-clear/saat ini memiliki tingkat kelulusan 73,3% dan sedang mendekati target
-
Lebih banyak bahasa dalam inline layout
- Mesin layout Servo masih kekurangan fitur inti yang diperlukan untuk merender bahasa yang tidak menggunakan alfabet Latin
- Area yang diperkuat mencakup pemilihan font yang benar, dukungan untuk aksara yang ditulis dari kanan ke kiri, dan logical properties
- Tujuannya adalah memperluas cakupan dukungan inline layout agar Servo dapat menampilkan konten yang lebih beragam
-
Dukungan awal untuk
<table>- HTML table adalah fitur web yang penting dan banyak digunakan
- Mesin layout baru Servo belum mendukung table, sehingga layout banyak halaman web tidak ditampilkan dengan benar
- Target prioritas untuk dukungan awal table adalah agar dapat merender table yang digunakan di Wikipedia
- Saat setiap milestone berjalan dan tercapai, detail lebih lanjut akan dibahas dalam artikel blog berikutnya
1 komentar
Opini Hacker News
Saya sangat menantikan Servo, dan sulit dipercaya Mozilla tidak menaruh perhatian padanya
Gagasan tentang engine yang unggul dalam keamanan dan performa memang bagus, tetapi yang terutama saya suka adalah bahwa web engine bisa dipakai sebagai komponen
Pada era Windows 9x, IE punya kontrol ActiveX sehingga web engine bisa di-embed di mana saja, dan KHTML juga serupa, tetapi sekarang baik Firefox maupun Chrome tampaknya tidak tertarik pada penggunaan seperti itu
Untung ada Qt WebEngine, tetapi sejauh yang saya pahami hubungannya agak canggung karena pihak Chrome tidak memedulikan use case seperti ini
Selain itu Chrome adalah barang Google, dan berdasarkan pengalaman, barang Google punya dunianya sendiri sehingga merepotkan untuk dibuild dan diintegrasikan
Jadi saya sangat menantikan alternatif praktis yang bisa dimasukkan ke dalam kode, yang dapat mengatasi kekhawatiran keamanan sekaligus mengurangi sakitnya integrasi
Mozilla mendanainya sebagai proyek riset, lalu kurang lebih menyadari bahwa untuk benar-benar membawanya ke pasar akan butuh jauh lebih banyak uang dan waktu, sehingga memilih menghemat biaya
Namun ada masalah bahwa uang itu dibagikan kepada para eksekutif dan pihak lain dengan cara yang tidak sejalan dengan moralitas yang mereka gaungkan
Melihat tulisan-tulisan blog, Mozilla mengintegrasikan hal-hal yang bisa diambil dari Servo ke Firefox, jadi mereka memang mendapatkan sejumlah nilai dari proyek itu
Saya rasa jika seseorang memberi Mozilla banyak uang dan jadwal tanpa batas, mereka akan menyelesaikan Servo
Namun begitu CEF menjadi populer, Google mengerahkan banyak sumber daya untuk memblokir login Google di CEF atau browser embedded lain[0]
Karena itu saya harus meninggalkan browser berbasis CEF; praktik bisnis seperti itu menjijikkan, tetapi tidak ada yang bisa saya lakukan
Jika browser saya tidak bisa login ke produk Google, sulit baginya untuk dipakai luas, dan saya juga tidak punya waktu untuk bermain kucing-kucingan dengan metode deteksi Google
Agar komponen browser embedded menjadi arus utama hingga siapa pun bisa membuat browser, terlebih dahulu harus diatasi masalah perusahaan-perusahaan besar yang memblokir browser embedded begitu menjadi populer
Idealnya akan ada Gecko yang bisa di-embed dan bukan Android, karena Firefox terlalu besar untuk diblokir
Dulu juga ada banyak pembahasan terkait hal ini, dan saya pernah membuat proof of concept yang mencuri window handle untuk dipakai[1], tetapi itu tidak menghasilkan uang
0 - https://developers.googleblog.com/2016/08/modernizing-oauth-...
1 - https://github.com/cretz/ffembedpoc
Entah maksudnya apa, tetapi mereka membawa beberapa komponen ke Gecko, termasuk WebRender dan Stylo
Saya ingat ketika latar desktop gagal, halaman error ActiveX dengan tautan yang bisa diklik muncul di desktop, dan itu benar-benar membingungkan
Di macOS dan Linux, ia bekerja dengan sangat baik
Meski begitu, kita tetap membutuhkan lebih banyak web engine yang bisa di-embed
Gecko bagus, tetapi tersandung karena seolah-olah terikat permanen dengan XULRunner
Senang melihat pekerjaan Servo berlanjut setelah ditangani Igalia
Ada banyak technical debt yang menumpuk selama bertahun-tahun ketika hanya mendapat pemeliharaan minimal, tetapi tampaknya ada kemajuan nyata
Secara pribadi, saya berharap mereka mendorong modularitas dengan kuat
Sepertinya ada ceruk yang bisa diisi oleh engine browser open-source yang berfokus pada kemampuan untuk di-embed, dan adanya pustaka “browser rakitan sendiri” yang memungkinkan orang mencampur komponen seperti balok Lego untuk membuat engine baru bisa sangat membantu kesehatan jangka panjang platform web
Electron dengan Servo tertanam atau sesuatu yang mirip Electron bisa menjadi hasil yang bagus
Tauri sudah mengisi ceruk itu sampai batas tertentu, tetapi ia menggunakan apa yang disediakan sistem operasi alih-alih menanamkan sesuatu
Akan bagus jika ada pilihan di tengah-tengahnya
Misalnya Sciter [1] menerapkan hanya subset yang masuk akal dari DOM API, tetapi tetap cukup sukses
Ia tidak terlalu cocok untuk berselancar internet secara umum, tetapi jika dipakai sebagai pustaka UI, Anda bisa menghindari bagian-bagian yang tidak berfungsi
1: https://sciter.com/
Model komponen dan lapisan embed-nya memiliki struktur seperti itu
Sumber dana hibah ini sebagian berasal dari European Commission, dan didukung melalui program NGI
Ini kabar yang sangat baik untuk Servo
NLNet Foundation belakangan ini mendukung banyak proyek bagus, dan namanya sering terlihat
Kami membutuhkan bantuan untuk mendorong beberapa masalah, dan bantuan itu benar-benar terjadi
Ini dukungan yang sangat berwawasan ke depan, mengingat kami terutama berada di Amerika Utara sementara dananya datang dari EU
Browser lain yang juga dibangun dari awal, Ladybird, juga layak dilihat
Dibuat oleh kelompok indie yang terasa lebih seperti kumpulan orang yang berantakan: https://ladybird.dev/
Jujur, ini proyek yang benar-benar sangat macho
Mengingat ini masih proyek yang sangat muda, hasilnya sudah cukup mengesankan
Kalau hanya mengambil screenshot saja, renderer Servo sangat mendasar, lambat, dan penuh bug
Cepat, dan mereka membangun semuanya secara terbuka, jadi pekerjaan tim Ladybird sangat mengesankan
Entah kenapa kupikir Servo sudah terintegrasi ke Firefox
Apakah ada cara di Rust untuk merender HTML menjadi gambar tanpa menjalankan browser penuh?
Tidak perlu mendukung banyak HTML atau CSS
https://blog.nightly.mozilla.org/2017/07/25/stylo-is-ready-f...
Mungkin ada hal lain juga
Namun ada dua perbedaan: hanya mendukung Markdown, bukan HTML arbitrer, dan merender ke layar, bukan ke gambar
Meski begitu, ini titik awal yang bagus
Menurutku hambatan utama rendering web di Rust saat ini adalah layout teks yang lebih baik, terutama dukungan untuk memasukkan konten non-teks di dalam teks seperti
display: inline-blockKalau itu sudah diimplementasikan, sepertinya rendering halaman web dasar bisa dilakukan dengan cukup baik
Masing-masing adalah compositor berbasis GPU dan engine CSS
Servo adalah engine rendering web yang ditulis dalam Rust, mendukung WebGL dan WebGPU, serta dapat disesuaikan untuk aplikasi desktop, mobile, dan embedded
Ini adalah engine rendering web yang dapat di-embed dan independen, dengan keamanan memori, modularitas, dan paralelisme
Apa yang dimaksud Legacy Layout yang dipakai sebagai pembanding?
Apakah itu iterasi Servo sebelumnya?
Sebagian kode tampaknya masih digunakan di kedua sisi, dan kurvanya kadang naik-turun bersamaan, tetapi tidak selalu begitu
Kemudian sistem kedua, Layout 2020, dimulai untuk mengatasi masalah ketika mengimplementasikan sebagian spesifikasi CSS yang tidak cocok secara bersih dengan arsitektur Layout 2013
Tahun ini ada laporan bagus yang ditulis orang-orang Igalia di wiki Servo, yang merangkum perbedaan kedua sistem dan mengapa mereka memutuskan untuk bergerak ke Layout 2020
https://github.com/servo/servo/wiki/Servo-Layout-Engines-Rep...