- Mesin web sendiri dan arsitektur multiproses dengan tab terisolasi.
- Basis warisan dari SerenityOS dan penggunaan pustaka pihak ketiga secara selektif.
- Kompatibilitas dengan Linux, macOS dan Windows (melalui WSL2), dan dokumentasi aktif.
- Pedoman yang jelas untuk berkontribusi, melaporkan masalah, dan lisensi BSD 2-klausul.
Proyek Ladybird telah menetapkan tantangan yang hanya sedikit orang berani untuk mengatasinya saat ini: membangun browser dengan mesin sendiri dari awal, tanpa menggunakan kembali inti dari peramban lain. Ini berarti peramban ini tidak bergantung pada Blink, WebKit, atau Gecko, melainkan mengejar implementasi independen yang mematuhi standar web modern dan, dengan el tiempo, dapat digunakan sepenuhnya untuk menjelajah tanpa kehilangan apa pun.
Pendekatan ini memerlukan keputusan arsitektur dan pengembangan yang sangat spesifik. Di satu sisi, struktur multi-proses yang mengisolasi tugas-tugas penting seperti rendering, decoding gambar, dan koneksi jaringan telah diprioritaskan, dan di sisi lain, kombinasi yang masuk akal antara pustaka proprietary lama dan komponen pihak ketiga untuk fungsionalitas umum telah dipilih. Secara keseluruhan, tujuannya adalah membangun browser yang “nyata” dan sepenuhnya independen, bukan pembungkus hasil kerja mesin lainnya.
Apa itu Ladybird dan mengapa berbeda?
Ladybird tidak dimaksudkan untuk menjadi fasad yang cantik atas teknologi lain: ini adalah browser dengan mesin web inovatif Implementasinya mengikuti standar, dengan tujuan kompatibilitas dan ketangguhan. Keputusan untuk tidak meminjam kode dari mesin populer menetapkan standar yang tinggi, tetapi juga menawarkan kendali penuh atas setiap lapisan sistem, mulai dari penguraian HTML dan CSS hingga eksekusi JavaScript dan manajemen DOM.
Selain komitmen terhadap mesinnya sendiri, proyek ini menekankan bahwa mereka tidak akan mengadopsi mesin lain di masa mendatang. Ini bukan sekadar deklarasi niat; dalam praktiknya, ini berarti evolusi Ladybird akan bergantung pada mesinnya. kemampuan untuk menerapkan dan mengoptimalkan setiap spesifikasi web dan arsitektur yang memfasilitasi keamanan dan kinerja. Ini bukan jalan yang mudah, tetapi merupakan jalan yang menjamin independensi sejati.
Tim ini bertujuan agar peramban ini melampaui sekadar demo teknologi. Tujuan mereka adalah menghadirkan aplikasi yang lengkap dan dapat digunakan sehari-hari dengan antarmuka yang lancar, isolasi tab, dan fondasi yang kokoh untuk memutar media, menjalankan skrip, dan merender halaman yang kompleks. keandalanDengan tujuan tersebut, peninjauan standar dan pengujian dunia nyata secara terus-menerus adalah bagian inti dari pekerjaan, serta fungsi pengguna seperti sinkronisasi penanda browser yang memudahkan penggunaan sehari-hari.
Hubungan dengan SerenityOS dan evolusi proyek
Secara historis, Ladybird memiliki DNA yang sama dengan SerenityOS, sebuah sistem yang berfokus pada pengembangan hampir semua hal dari awal. Berkat warisan ini, peramban tersebut kini menggunakan beberapa pustaka dari ekosistem tersebut, yang memungkinkan kemajuan pesat dalam berbagai aspek seperti rendering web, eksekusi JavaScript, dan komunikasi antarproses. Dengan pemisahan yang sedang berlangsung (sebuah percabangan), Ladybird tidak lagi terikat pada filosofi “semuanya dari awal” dan telah dibuka untuk perpustakaan pihak ketiga untuk tugas-tugas umum yang bukan merupakan nilai diferensialnya.
Pergeseran pragmatis ini tidak bertentangan dengan independensinya sebagai mesin: ia hanya mengakui bahwa, untuk format gambar, audio atau video, kriptografi atau grafik, terdapat komponen-komponen matang yang layak diintegrasikan. Bahkan, proyek ini sudah menggunakan beberapa perpustakaan eksternal yang sama yang digunakan oleh peramban mapan lainnya, menyimpan konstruksi buatan sendiri untuk inti mesin web.
Di antara komponen SerenityOS yang saat ini menjadi bagian dari basis Ladybird adalah sebagai berikut, masing-masing mencakup bagian penting dari teka-teki:
- LibWeb: mesin rendering web.
- LibJS: Mesin JavaScript.
- LibWasm: Implementasi WebAssembly.
- LibCrypto/LibTLS: Primitif kriptografi dan keamanan transportasi (TLS).
- LibHTTP: Klien HTTP/1.1.
- LibGfx: Pustaka grafik 2D, decoding dan rendering gambar.
- LibUnicode: Dukungan Unicode dan lokal.
- LibMedia: pemutaran audio dan video.
- LibCore: Lapisan abstraksi sistem operasi dan loop peristiwa.
- LibIPC: Komunikasi antarproses.
Transisi ke proyek yang lebih independen tidak menghapus fondasi ini, tetapi memungkinkan evaluasi kasus per kasus untuk menentukan di mana pustaka pihak ketiga mungkin cocok untuk diintegrasikan. Dengan demikian, untuk format media, enkripsi, atau grafis, kompatibilitas dan keamanan yang disediakan oleh solusi yang telah terbukti diprioritaskan, sementara tim memfokuskan upayanya pada jantung mesin dan kepatuhan terhadap standar.
Arsitektur dan keamanan multi-proses
Ladybird mengadopsi arsitektur multi-proses sejak awal. Terdapat proses antarmuka utama (UI) yang mengatur pengalaman pengguna dan berkoordinasi dengan berbagai proses rendering WebContent. Setiap tab berjalan dalam proses renderer-nya sendiri, yang meningkatkan isolasi, stabilitas, dan keandalan. keamananBerkat desain ini, kegagalan pada satu halaman tidak akan menyeret halaman lainnya, dan browser dapat terapkan sandboxing per tab.
Selain proses rendering, terdapat proses khusus untuk tugas-tugas sensitif. Salah satunya menangani decoding gambar (ImageDecoder) dan yang lainnya menangani lalu lintas jaringan (RequestServer). Dengan menjalankan fungsi-fungsi ini di luar proses utama, Ladybird mengurangi permukaan serangan dan meningkatkan ketahanan terhadap serangan. konten berbahayaIdenya adalah bahwa kerentanan dalam decoding gambar atau dalam penanganan respons HTTP tidak membahayakan sisa sistem atau seluruh browser.
Pendekatan pemisahan tanggung jawab ini juga meningkatkan kinerja. Proses dapat dijadwalkan secara independen oleh sistem operasi, mengisolasi beban berat dan menghindari pemblokiran dari utas utama. Dalam praktiknya, hal ini menghasilkan antarmuka yang lebih responsif dan ketahanan yang lebih baik ketika tab atau situs tertentu mengalami masalah. Dengan demikian, arsitektur multiproses menjadi pilar keandalan dan kinerja berkelanjutan.
Platform yang didukung dan pengalaman pengguna
Dalam hal sistem yang didukung, Ladybird bekerja pada Linux, macOS dan Windows menggunakan WSL2, serta pada sistem operasi lainnya. UnixVariasi platform ini penting karena menghilangkan hambatan masuk bagi pengembang dan pengguna yang ingin menguji proyek di lingkungan mereka yang biasa. Baik Anda bekerja di Linux desktop, menggunakan macOS di laptop, atau mengembangkan di Windows dengan subsistem Linux, Anda akan dapat jalankan dan evaluasi Ladybird tanpa komplikasi yang berlebihan.
Pengalaman pengguna didasarkan pada pemisahan antara antarmuka dan proses konten. Hal ini memungkinkan jendela utama tetap lancar bahkan ketika situs yang kompleks membutuhkan banyak CPU atau memori. Pada saat yang sama, proyek ini bertujuan untuk mencapai kondisi "dapat digunakan" untuk web modern, sebuah tujuan yang membutuhkan penyempurnaan mesin, perluasan dukungan standar, dan penyempurnaan pemutaran media, penanganan font, tata letak, serta eksekusi. JavaScript IntensifBagian dari pengalaman itu termasuk mengelola elemen-elemen yang mengganggu seperti iklan pop-up yang memengaruhi navigasi.
Konstruksi dan kompilasi proyek
Jika Anda ingin membangun Ladybird sendiri, tim kami merujuk pada instruksi pembangunan proyek. Di sana Anda akan menemukan langkah-langkah dan dependensi yang diperlukan untuk mempersiapkan lingkungan, mengompilasi berbagai komponen, dan jalankan browserKarena ini adalah mesin milik perusahaan dengan beberapa bagian yang saling terhubung (UI, perender, dekoder gambar, server permintaan), sangat penting untuk mengikuti panduan tersebut guna memastikan semuanya berjalan sebagaimana mestinya.
Secara paralel, penggunaan pustaka pihak ketiga untuk fungsi umum (format gambar, audio, dan video; enkripsi; grafik, dll.) menyederhanakan dukungan untuk kasus penggunaan umum dan menghindari pengulangan proses. Keseimbangan ini penting: independensi mesin tetap terjaga, tetapi dukungan untuk teknologi tambahan yang membuat navigasi layak sejak awal dipercepat. Hasil yang diharapkan adalah kurva instalasi yang wajar dan dasar teknis yang lebih solid.
Dokumentasi dan sumber daya kode
Dokumentasi terkait kode terpusat di folder dokumentasi repositori. Dokumentasi ini menjelaskan komponen, alur internal, konvensi, dan detail lain yang diperlukan untuk memahami struktur proyek dan berkontribusi pada perubahan. Jika Anda baru mengenal proyek ini, sebaiknya tinjau materi ini untuk mendapatkan gambaran umum. lapisan browser dan interaksinya.
Komunikasi komunitas berpusat di server Discord, tempat keputusan teknis dibahas, pertanyaan dijawab, dan upaya dikoordinasikan. Berpartisipasi di sana akan memungkinkan Anda mempelajari langsung prioritas pengembangan, mencari panduan, dan mengusulkan perbaikan. Ini merupakan titik temu yang bermanfaat bagi mereka yang membuat kode mesin inti maupun mereka yang menguji peramban, melaporkan bug, atau memberikan saran. fitur baru.
Cara memulai kontribusi dan aturan untuk masalah
Jika ini kontribusi pertama Anda, ada baiknya membaca panduan Memulai Kontribusi. Dokumen ini menjelaskan cara mempersiapkan lingkungan, gaya kode yang harus diikuti, cara mengelola patch, dan ekspektasi kualitas kontribusi. Memulai melalui panduan ini akan menghemat waktu Anda dan membantu perubahan Anda ditinjau dan diterima lebih cepat, karena mengikuti kriteria yang ditetapkan oleh tim. berlaku dalam kehidupan sehari-hari.
Sebelum membuka masalah, proyek meminta Anda untuk meninjau kebijakan masalah dan panduan pelaporan bug yang terperinci. Hal ini memastikan bahwa laporan berisi informasi yang memadai (langkah-langkah reproduksi, lingkungan, log yang relevan) dan bahwa permintaan yang ada tidak terduplikasi. Mematuhi standar ini mengurangi gangguan dan mengoptimalkan respons tim, sehingga mereka dapat fokus pada bug dan masalah nyata lainnya. prioritas paling mendesak.
Untuk perubahan yang lebih luas, pedoman kontribusi lengkap didokumentasikan dalam berkas. CONTRIBUTING.md
Mereka menentukan proses peninjauan, cara menyusun komitmen, kriteria apa yang diterapkan dalam integrasi, dan cara mengoordinasikan upaya untuk menghindari bentrokan cabang atau duplikasi pekerjaan. Mengikuti panduan ini adalah cara paling efektif untuk mempercepat kontribusi Anda dan mempertahankan kualitas repositori.
Menggunakan perpustakaan pihak ketiga: pragmatisme dengan tujuan
Setelah memisahkan diri dari SerenityOS sebagai proyek independen, Ladybird telah mengambil kebebasan untuk menggabungkan pustaka pihak ketiga di tempat yang memberikan nilai tambah paling besar. Di bidang-bidang seperti dekode format gambar (PNG, JPEG, dll.), kontainer audio dan video, enkripsi modern, dan API grafis, komunitas sumber terbuka menawarkan komponen-komponen yang telah teruji. Mengintegrasikannya tidak mengorbankan tujuan membangun mesin proprietary; justru, hal ini memungkinkan kami untuk mendedikasikan sebagian besar upaya untuk mengimplementasikannya dengan tepat. HTML, CSS, JavaScript dan WebAssembly.
Tim juga mengakui bahwa mereka sudah menggunakan beberapa pustaka yang sama dengan yang digunakan oleh peramban lain. Hal ini positif: mereka berbagi perjuangan di area-area yang standarnya jelas dan masuk akal untuk menambahkan fondasi yang matang. Janji yang tetap sama adalah bahwa Ladybird tidak akan mengganti mesinnya dengan yang lain; independensi inti adalah ciri khas proyek ini, dan penggunaan sumber daya pihak ketiga terbatas pada apa yang melengkapi misi tersebut tanpa melemahkannya. Ini adalah keseimbangan yang menggabungkan ambisi teknis dan pragmatisme.
Sasaran: Peramban lengkap untuk web modern
Cakrawalanya tidaklah sederhana: membangun peramban yang lengkap dan dapat digunakan. Itu berarti menuntut kinerja yang tinggi di situs dengan skrip yang berat, dukungan untuk font dan tipografi yang kompleks, tata letak dengan spesifikasi modern, pemutaran audio dan video yang andal, serta perilaku yang stabil di bawah beban. Untuk mencapainya, Ladybird mengandalkan arsitektur multi-prosesnya dan fokus yang konstan pada kepatuhan terhadap standar web.
Secara paralel, proses pengujian, umpan balik komunitas, dan pelaporan masalah terstruktur berfungsi untuk mendeteksi hambatan, kesenjangan kompatibilitas, atau regresi. Dengan mesinnya sendiri, setiap kemajuan menggabungkan aset pembeda: pengetahuan internal tentang bagaimana dan mengapa setiap bagian diimplementasikan. Pada akhirnya, hal ini menghasilkan platform yang mampu berinovasi tanpa bergantung pada kecepatan dan keputusan mesin lain, sehingga tetap mempertahankan peta jalan otonom.
Lisensi dan filosofi proyek
Ladybird dirilis di bawah lisensi BSD 2-klausa. Pilihan ini memudahkan adopsi dan memungkinkan peramban atau bagian-bagian dari tumpukannya untuk diintegrasikan ke dalam proyek-proyek dengan model lisensi yang berbeda. Kombinasi keterbukaan, independensi mesin, dan komunitas aktif yang berdiskusi di Discord dan dokumen-dokumen di repositori menciptakan lingkungan yang kondusif bagi mereka yang ingin berkontribusi tanpa hambatan yang tidak perlu. Jika Anda menghargai proyek yang memprioritaskan kontrol inti, kepatuhan terhadap standar, dan sikap yang jelas terhadap keamanan, Lisensi ini sangat cocok.
Jalur Ladybird memang bukan yang terpendek, tetapi menawarkan kebebasan terbesar dalam jangka panjang. Mesin yang dirancang dari awal, arsitektur yang memisahkan proses-proses penting, penggunaan pustaka eksternal yang cerdas untuk pekerjaan tambahan, dan aturan kontribusi yang jelas memberikan jalur yang jelas bagi sebuah proyek. Jika Anda tertarik untuk mencobanya, lihat dokumentasinya, lihat instruksi kompilasi, dan kunjungi Discord proyek: di sana Anda dapat menjawab pertanyaan, mengusulkan ide, dan melihat langsung perkembangan proyek ini. peramban yang benar-benar independen.
Penulis yang bersemangat tentang dunia byte dan teknologi secara umum. Saya suka berbagi ilmu melalui tulisan, dan itulah yang akan saya lakukan di blog ini, menunjukkan kepada Anda semua hal paling menarik tentang gadget, perangkat lunak, perangkat keras, tren teknologi, dan banyak lagi. Tujuan saya adalah membantu Anda menavigasi dunia digital dengan cara yang sederhana dan menghibur.