<div><br></div><div dir="auto">Thank you so much! Qutebrowser is my default browser!</div><div dir="auto"><br></div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Wed, Dec 14, 2022 at 14:25 Florian Bruhin via qutebrowser <<a href="mailto:qutebrowser@lists.qutebrowser.org">qutebrowser@lists.qutebrowser.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">Hey!<br>
<br>
full version of this post with links on Reddit or GitHub Discussions:<br>
<a href="https://www.reddit.com/r/qutebrowser/comments/zm0x5c/happy_9th_birthday_qutebrowser/" rel="noreferrer" target="_blank">https://www.reddit.com/r/qutebrowser/comments/zm0x5c/happy_9th_birthday_qutebrowser/</a><br>
<a href="https://github.com/qutebrowser/qutebrowser/discussions/7526" rel="noreferrer" target="_blank">https://github.com/qutebrowser/qutebrowser/discussions/7526</a><br>
<br>
qutebrowser is turning 9 today! I’ll use the opportunity for a – perhaps<br>
slightly tl;dr – overview of how it all came to be. As you might notice<br>
by the length of this post, stopping to write once I started writing<br>
something like this… isn’t exactly my forte! Hopefully the wall of text<br>
will be interesting nevertheless :).<br>
<br>
The death of dwb<br>
<br>
Back in 2013, I was a happy user of dwb, but it became apparent that the<br>
project would die at some point. It was clear that dwb would need to<br>
make the switch to WebKit2, but the author (portix) didn’t have the<br>
bandwidth to do so – as far as I remember, they said it’d basically be a<br>
full rewrite, and it’s not going to happen.<br>
<br>
While dwb lived on for another 3 years or so, many dwb users – including<br>
me – were looking for alternatives. There were things like uzbl or<br>
luakit, and addons like Vimperator, but for some reason or another,<br>
those just didn’t fit the bill.<br>
<br>
Back then, WebKit – especially WebKit 1, still used by most of those<br>
projects – was plagued by frequent hangs and crashes (and it being a<br>
single-process model, a renderer crash meant that your whole browser did<br>
go down with it).<br>
<br>
A new browser on the horizon<br>
<br>
I toyed with the idea of taking over dwb maintenance – however, it was a<br>
C/GTK codebase. While I was writing microcontroller firmware for a<br>
living in C for a couple of years, it always seemed an odd choice to me<br>
for more OOP-like GUI programming. With projects like Wireshark or LXDE<br>
wanting to switch to Qt at the time, it also became clear that GTK<br>
wasn’t what I wanted things to be based on. The only real alternative to<br>
build a web browser was Qt (Electron was only 5 months old!).<br>
<br>
With plans about a new Chromium-based QtWebEngine already on the<br>
horizon, this seemed like a great choice. In terms of programming<br>
language, the choice was between Python and C++. C++ is the “native” Qt<br>
language, and Python bindings have been around since 1998 (!) and were<br>
maintained very well. Anything else was out of the question pretty much.<br>
Since I had some more Python knowledge than C++ knowledge, and C++ is…<br>
quite a beast, I decided to go with Python.<br>
<br>
And thus, with thoughts along the lines of “eh, there are good libraries<br>
for it, how hard can it be?”, exactly 9 years ago today, I started<br>
qutebrowser.<br>
<br>
It initially was focused on dwb “refugees”, and much of that is still<br>
visible today: The look of the UI, almost all keybindings, the split<br>
between book- and quickmarks (probably a bad idea), the idea of having<br>
external userscripts (probably a bad name), etc. etc. In other areas,<br>
qutebrowser most likely had a pioneering role: As far as I know, it was<br>
the first vim-like browser to introduce a more shell-like command<br>
interface, with things like :open -t or :open -w rather than separate<br>
:open, :winopen and :tabopen commands. Others like Tridactyl later<br>
followed suit.<br>
<br>
Towards the first release, and then some more<br>
<br>
It took a lot of work until, exactly a year later, v0.1 was finally<br>
released. Later, Vimperator died with Firefox dropping XUL extensions,<br>
and between 2014 and 2019 or so, more and more people switched to<br>
qutebrowser (up to around 10% of all Archlinux users participating in<br>
package statistics).<br>
<br>
More recently, I was able to work on qutebrowser during my study summer<br>
break in 2016, again in 2018, and finally for a longer time as a<br>
part-time job since 2019. I’m humbled by all the support, it’s what<br>
still keeps me going – it’s fair to say that I probably would have<br>
burned out and/or stopped by now if I was employed 100% still. Turns<br>
out, after all, a web browser isn’t exactly an easy thing to do as your<br>
first big open source project. Big kudos to all the other projects which<br>
have been going for years if not decades: It’s not easy, and the<br>
occasional entitled user who’s pushy or angry at you for their favourite<br>
feature™ still not being implemented certainly does not help.<br>
Thankfully, those cases are rare: All in all, I’m thankful for the<br>
qutebrowser community being so understanding, patient and helpful! <3<br>
<br>
Another big transition<br>
<br>
It’s probably fair to say that dwb died during the transition from<br>
WebKit 1 to 2. Such major upgrades – while often reasonable and needed –<br>
tend to use a lot of energy and effort.<br>
<br>
In 2016, qutebrowser had its own first big migration, when QtWebEngine<br>
finally was ready enough to add support for it. Nowadays, QtWebKit is<br>
still supported, though mostly for historical reasons. Chances are big<br>
it will be all gone for the v3.0.0 release.<br>
<br>
Nowadays, qutebrowser is in a somewhat similar big transition again: It<br>
desperately needs to migrate to Qt 6 to keep things up to date, but –<br>
while not quite a rewrite – doing so is a bunch of work. With<br>
qutebrowser getting older, more popular, and also getting lots and lots<br>
more contributions (often in slighly chaotic ways, as things go with<br>
open source), this transition is probably the most challenging of them<br>
all yet! There are many more things to take into consideration than<br>
there have been six years ago. Still, much of it has been going on ever<br>
since Qt 6.2 with QtWebEngine was released in September 2021, with a<br>
branch with almost 300 commits being nearly finished. If you haven’t<br>
yet, you should probably give it a try!<br>
<br>
Looking forward towards qutebrowser v3<br>
<br>
There are still some challenges to overcome on the development side of<br>
things, and some other stuff I’d like to at least look at for the v3.0.0<br>
release. Last year, my job situation changed as well: Instead of being<br>
employed 40% over the entire year (often taking a lot more energy and<br>
mind-space than those 40%), I’m now busy teaching between September and<br>
February. On the flip-side of the coin, that means I don’t have anything<br>
other than open source (qutebrowser, pytest, and the occasional paid<br>
pytest company training) to worry about between March and August. Last<br>
year has shown that this works out much better, especially for big<br>
chunks of work like this.<br>
<br>
Even though things are still very busy dayjob-wise now (and will be<br>
until March), I’m hoping we can still work on some of the remaining Qt 6<br>
blockers, and then I’m hoping to still be able to finish v3.0 early next<br>
year. Thanks also to everyone who keeps the ball rolling while I might<br>
be busy with other stuff for a while – especially @toofar, who has been<br>
doing amazing and steady work over the last couple of years!<br>
<br>
Onwards, and already looking forward to qutebrowser being a decade old<br>
in late 2023!<br>
<br>
Florian<br>
<br>
<br>
-- <br>
            <a href="mailto:me@the-compiler.org" target="_blank">me@the-compiler.org</a> | <a href="https://www.qutebrowser.org" rel="noreferrer" target="_blank">https://www.qutebrowser.org</a> <br>
       <a href="https://bruhin.software/" rel="noreferrer" target="_blank">https://bruhin.software/</a> | <a href="https://github.com/sponsors/The-Compiler/" rel="noreferrer" target="_blank">https://github.com/sponsors/The-Compiler/</a><br>
       GPG: 916E B0C8 FD55 A072 | <a href="https://the-compiler.org/pubkey.asc" rel="noreferrer" target="_blank">https://the-compiler.org/pubkey.asc</a><br>
             I love long mails! | <a href="https://email.is-not-s.ms/" rel="noreferrer" target="_blank">https://email.is-not-s.ms/</a><br>
</blockquote></div></div>