MentorFlorian Bruhin (The-Compiler)
Project Websitehttp://www.qutebrowser.org/
Project Repositoryhttps://github.com/The-Compiler/qutebrowser
Suitable for Beginners?yes
Tagspython qt pyqt javascript browser web vim webkit chromium
Applications (1st Choice)1 (1 submitted | 0 in-progress)
Applications (2nd Choice)4 (4 submitted | 0 in-progress)
Code of Conduct/projects/120-qutebrowser

Project Description

qutebrowser is a keyboard-focused browser, inspired by the vim text editor.

It has a minimalistic user-interface, and can be controlled entirely using the keyboard (though clicking links using a mouse does work as well!).

It has a built-in commandline, with those commands bound to keybindings resembling those of vim where appropriate.

It's based on the Qt library and Python (with some Javascript), and thus runs on Windows, Linux and OS X.

While there are existing browser addons such as Vimperator/Pentadactyl, they struggle to keep up with changes to Firefox' addon platform, and unfortunately it's unlikely they'll able to continue working with Firefox' planned switch to WebExtensions.

qutebrowser's goal is to be the most future-proof standalone vim like-browser.

I'm always happy when I recieve contributions from first-timers to either the project, or even opensource in general. I dislike the way some projects handle first-timers, and try to set a better example. Be Cordial or Be on Your Way describes my thoughts on the topic pretty accurately.

From June to September I'll most likely work on qutebrowser and giving pytest (the test framework it uses) trainings full-time, so on most days I'll have as much time as needed for mentoring and helping out.

Project's Requirements

Tasks And Features

Easy issues

There are various issues marked as easy which are ideal to get started, and also work well for less experienced students.

For the past year, I've almost exclusively worked (in my free time) on improving qutebrowser's test coverage, but there are still a lot of low-hanging fruits there - both for unit-tests using pytest and end-to-end tests using the Gherkin language via pytest-bdd. Related issue/overview.

Bigger ideas

Support for the new QtWebEngine/Chromium backend

Currently, qutebrowser is using QtWebKit as its backend and rendering engine.

However, QtWebKit is now unmaintained and replaced by QtWebEngine, which is a Qt layer over Chromium, the open-source part of Chrome.

QtWebEngine will come with a lot of stability-, functionality- and security-improvements for qutebrowser, but requires a major part of the code to be refactored, abstracted, and reimplemented - some parts in Javascript, due to missing Qt APIs because of Chromium's multiprocess model.

Note: If you plan to contribute Javascript code, I'd appreciate a more experienced student, as I'm rather new to Javascript myself.

Related issue

Rewriting the config code

The current config parsing/management code is probably the worst part of qutebrowser, and largely needs a rewrite from scratch. Together with that, I plan to change the format of the user configuration (probably to YAML).

Main issue /
All related issues

Implementing per-domain settings

After the config is revamped to allow for hierarchical data, the ability to set settings per domain/URL is a much requested feature to be tackled.

This will make the implementation of many often-requested features much easier, such as NoScript (allowing javascript per-domain) or RequestPolicy (not allowing third-party requests).

Related issue

Adding a plugin API

This would make it possible for users to write browser plugins in Python, and at some later point in Javascript as well.

After a plugin API exists, some internal features can be moved to core-plugins. This will also make it easier for users to contribute to plugins independently without having to understand the core.

At a later point, a user-interface to manage plugins inside the browser could be added.

Related issue


You must be logged in to comment on this project.

Florian Bruhin, Friday, March 25, 00:02 UTC

Wheee, thanks! :)

Laura RGSoC, Wednesday, March 23, 10:48 UTC

Hey Florian, thank you for your submission! we're very happy to have you on board, especially as we really like your philosophy with first-time contributors. That's super great ✨ I will send out an email on the weekend to give you some details about the program and some infos regarding the timeline and the next steps. Feel free to reach out before if you have any questions!