# Frequently asked questions

The Compiler
`<mail@qutebrowser.org>`

1. What is qutebrowser based on?

   qutebrowser uses Python, Qt and PyQt.

   The concept of it is largely inspired by dwb and Vimperator. Many actions and keybindings are similar to dwb.

2. Why another browser?

   It might be hard to believe, but I didn’t find any browser which I was happy with, so I started to write my own. Also, I needed a project to get into writing GUI applications with Python and Qt/PyQt.

   Read the next few questions to find out why I was unhappy with existing software.

3. What’s wrong with dwb/vimprobable/luakit/jumanji/… (projects based on WebKitGTK)?

   Most of them are based on the WebKitGTK+ WebKit1 API, which causes a lot of crashes. As the GTK API using WebKit1 is deprecated, these bugs are never going to be fixed.

   The newer WebKit2 API seems to lack basic features like proxy support, and almost no projects seem to have started porting to WebKit2 (I only know of uzbl).

   qutebrowser uses Qt and QtWebKit instead, which suffers from far less such crashes. It might switch to QtWebEngine in the future, which is based on Google’s Blink rendering engine.

4. What’s wrong with Firefox and Pentadactyl/Vimperator?

   Firefox likes to break compatibility with addons on each upgrade, gets slower and more bloated with every upgrade, and has some horrible ideas lately.

   Also, developing addons for it is a nightmare.

5. What’s wrong with Chromium and Vimium?

   The Chrome plugin API doesn’t seem to allow much freedom for plugin writers, which results in Vimium not really having all the features you’d expect from a proper minimal, vim-like browser.

6. Why Python?

   I enjoy writing Python since 2011, which made it one of the possible choices. I wanted to use Qt because of QtWebKit so I didn’t have many other choices. I don’t like C++ and can’t write it very well, so that wasn’t an alternative.

7. But isn’t Python too slow for a browser?

   No. I believe efficency while coding is a lot more important than efficency while running. Also, most of the heavy lifting of qutebrowser is done by Qt and WebKit in C++, with the GIL released.

8. Is there an adblocker?

   There is a host-based adblocker which takes /etc/hosts-like lists. A "real" adblocker has a big impact on browsing speed and RAM usage, so implementing it properly might take some time and won’t be done for v0.1 if at all.