There are multiple ways to build a web browser. You don’t need to do everything from scratch, but if you want to do that you should check this tutorial out first. For those who would like to follow the beaten path, the open-source communities have already provided several high quality browser engines: WebKit (Safari), Blink (Chromium), Gecko (Firefox), Servo (Mozilla’s experimental project). You can even read an overview about their architecture design here.
There are some other popular “out-of-the-box” solutions: CEF, NW.js (previously node-webkit), Awesomium, OpenFin, QtWebEngine. They are all based on Chromium’s framework, which is the Content API. Each of them are using their own UI, callbacks and ecosystem to support different purposes. If you find here what you are looking for, stick with it. Otherwise we can show the capacity of the Content API to build up your custom ecosystem.
The Yandex Browser (and of course Google Chrome) could be a great example, what you can achieve with the Content API.
For the following tutorial we will use the Content API to build our browser, like Chrome does, but only with basic functionality.
You can read about the Chromium Content API and modules here: Content API, Content Module
If you are interested in how Chromium is built together and how it works, you can check out our Chromium Architecture overview.
There are lots of very good standalone and embedded browsers on the market, but each one of them is connected to and based on their separate ecosystems. In general it is a good strategy to join an already existing system, but sometimes there is a need to build up a totally different one. Our guide is about to show how to do this, “How to build a Web Browser”.
In the beginning we started with ideas from already existing embedder implementations. Although the concept of already existing browsers are fine, we felt our hands were tied. So, we dropped everything and went to the beginning to build up our ideas from scratch. This is the way how Sprocket was born.
Sprocket has three branches currently: master, core and testing. Core Sprocket is about to be as minimal as possible compared to the existing implementations. In this branch the code size is reduced to a minimum, and unnecessary requirements were dropped. Now - after the bases have been done - we are continuously extending Sprocket with well-documented new features. You can read more about our branches later in this documentation.
For those who cannot wait, the source code can be found on GitHub. You will also see a guide there about how to compile and execute the browser. You can find some sneak peek pictures here.