ferus-web / ferus

A toy web engine written in Nim
GNU General Public License v3.0
115 stars 4 forks source link

The Ferus Web Engine

The Ferus web engine is a tiny web engine written in Nim which aims to be a full replacement for something like Chromium's Blink, Safari's WebKit or Firefox's Gecko. \ It has rudimentary support for layout and JavaScript. A screenshot of Ferus rendering nim-lang.org

Features

Contributing

I'm always looking for contributors. Every small improvement matters, even if you can't work on the web engine internals itself. \ If you're interested, join our Discord server in order to start off. I'll try my best to help you get familiar with this stuff. :^)

Ferus is getting redesigned!

For the past few months, I've been writing a CSS3 parser, a HTTP client, a bytecode interpreter, and a renderer for Ferus. It's about time to start assembling everything into one (if you want to be accurate, two) binaries! Everything's getting reworked.

There's also a Nix shell available with all the foreign dependencies Ferus needs.

So far,

Roadmap for the overall project

Reality check on the progress

I started this project when I was 14 to learn how the web works. It took me a while to learn a lot of things about the web (and I appreciate that!). I'm not some ex-WebKit/Blink/Gecko contributor or anything like that. My experience is currently fairly limited in web engine development. \ I'm a student (currently 15) and I have tons of other things to do aside from this little pet project of mine. I'm trying my best to do everything, but I have my limits as well. \ I hope to be able to devote the vast majority of my time to this project from next year onwards as this year's pretty important for my academics.

Attributions

Most of the HTML/DOM logic is taken from Chawan. Without them, this project wouldn't be possible (or atleast not in this state!) :) \ You can check ATTRIBUTIONS.md for more credits.

Hacking on Ferus

For details on building/hacking on Ferus, consult the BUILDING.md document.