Hi,
Well this is quite the coincidence. It just so happens that I too have ported Webkit to FLTK a few weeks ago!
I wasn't going to announce it until I had a browser ready, but seeing another, we're clearly duplicating work here. I'll take a look at your port soon, see where they differ and so on.
The main points of my port:
- Linux-exclusive
- as light as possible. No Qt, Gtk, soup. It uses curl and cairo, with the biggest offender being icu
- slightly different philosophy with SSL, audio, video, and tracking
- aiming for performance and low RAM use
(warning: every version of gcc able to build webkit has a bug where it miscompiles the hash function using -O2 or higher; reported to gcc bugzilla, but until it's fixed or a workaround is found, don't do an optimized build)
@Ingwie
Webkit is by definition lighter than Chromium, as when you embed Chromium you get the whole browser logic, with Webkit you get a web widget to build upon. Chromium also includes a ton of modified libraries in its codebase, while webkit prefers to use system copies.
@Ian, George
Now you see why I need ctrl-tab in my application ;) It's the most often used shortcut in a browser.
@Sanel
I can only speak for my port. The widget toolkit is not a drawing backend, cairo is. The toolkit is only used to render un-css-styled widgets to the drawing surface, giving that "default look" for a platform, but is not really visible in many modern webpages.
The remainder is of course all the integration: making it a nice FLTK widget, and exposing all methods needed to build a browser.
As for how hard, it took me three weeks of work to do the grunt of the port. Webkit is a 5.6 million line codebase, and almost completely uncommented. I did more head-meet-desk on the first week than I'd like. It's not really made any easier by the sheer size of the thing, with a non-debug build requiring gigabytes of space and taking hours to build.
The parts I wanted to use, curl and cairo, had some amounts of bitrot, as no major platform uses either. The curl module is only used by some hobbyists on Windows, and so it was fairly broken on Linux when I started. The cairo module is used by gtk+, but no gtk-webkit browser has much market share, and it too had some bugs. Safari uses Apple's frameworks on all platforms, and Google is long gone with their Blink engine and Aura toolkit.
After that I've now spent another three weeks on the browser application. It's looking pretty nice, but still missing a lot of functionality before I can release a first alpha.
Re startup speed, the binary is close to 100mb, so first start from HD takes something like 0.8s. Warm caches it starts in < 100ms, which is quite acceptable to me. I've not yet targeted its size in any major way, but I estimate the final version may be able to reach 60mb or lower. Webkit alone takes 40mb, icu close to 20mb, the browser app a pittance in comparison.
- Lauri