/turtlebrowser

Primary LanguageQMLMIT LicenseMIT

TurtleBrowser

CI-Release CI-Debug

Online is Real

Introduction

** NOT READY FOR USE. PRE-ALPHA **

TurtleBrowser is intended to become a full featured browser on at least Linux, MacOS, Windows, iOS and Android. Currently it should build on Linux, MacOS and Windows.

The foundation will be: privacy, security, user is the customer, open source, data minimization

Tricky bits

  • WebView updating: The browser needs to follow the upstream webview releases, on platforms where this likely will be the platform webview this is not an issue (iOS and Android), but on desktop the QtWebEngine is probably too far behind Chromium/Blink to be considered secure. An update process needs to be in place that is "lightweight" enough to be preformed every month more or less.

  • Sandboxing: It is unclear how well the Chromium sandbox works on the different platforms.

  • Diverse browser space: Chromium/Blink is dominating the browser space and that makes a web designed by an ad company. Google needs the web, but their incentives might not always align with the end user. More competition would probably be healthier than what we have today. It would be good to try to support another WebView implementation (Servo or WebKit?)

Qt WebView

The goal is to use Qt WebView as the abstraction for the webview, on iOS and Android it will wrap the platform webview, on Linux, MacOS and Windows it will be powered by QtWebEngine, at least initially. Issue 11: Make a Proof of Concept Servo implementation of QtWebView is looking to investigate making an alternative implementation of Qt WebView using Servo.

Qt WebView provides a way to display web content in a QML application without necessarily including a full web browser stack by using native APIs where it makes sense.

This is useful on mobile platforms such as Android, iOS, and UWP (Universal Windows Platform); especially on iOS, where policy dictates that all web content is displayed using the operating system's web view.

On Windows, Linux, and macOS, Qt WebView depends on the Qt WebEngine module to render content.

Qt docs on Qt WebView

Licences

Tracked in issue 16

Using Qt and Chromium comes with a wide range of licences that all have to be taken into account. Not exactly sure what that means for TurtleBrowser yet.

Qt WebEngine Licensing

Icons: Material icons licence: Apache license version 2.0

Contributions: "inbound=outbound"

Development

Development notes

See Qt Dependencies to build Qt locally, either through Conan or stand alone

https://wiki.qt.io/Building_Qt_5_from_Git

Using the prebuilt conan cache to avoid building Qt

Clone the appropriate branch of conan-cache-turtlebrowser according to the instructions here.

Windows Conan Cache build settings

Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=Visual Studio
compiler.runtime=MD
compiler.version=16
os=Windows
os_build=Windows
[options]
[build_requires]
[env]

Linux Conan Cache build settings

Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++11
compiler.version=7
os=Linux
os_build=Linux
[options]
[build_requires]
[env]

Build new Windows Conan Cache

Use the script in conan-cache

./update_cache_windows.sh <path to TurtleBrowser checkout>

Build new Linux Conan Cache

Use the script in conan-cache

./update_cache_linux.sh <path to TurtleBrowser checkout>

Using conan install

  • Conan needs Python 3 - so make sure to install it with pip3
  • Chromium needs Python greater than equal to 2.7.5 and less than 3
  • Chromium generates very long filenames/paths - put .conan at the root of the filesystem [https://docs.conan.io/en/latest/mastering/custom_cache.html]
  • git config --system core.longpaths true (probably not needed)

GitBash Windows

$ pip3 install conan --upgrade
$ python --version
Python 2.7.17

Linux

$ sudo pip3 install conan --upgrade
$ python --version
Python 2.7.17
$ export CONAN_USER_HOME=/Code/
$ conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
$ conan install . -s build_type=Debug -s compiler=gcc -s compiler.version=7 -s compiler.libcxx=libstdc++11 -g=cmake --build=missing

Might be needed

See Qt dependencies for help in what you need to build Qt

sudo apt-get install libxcb-xinput0 xorg-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-xinerama0-dev 

Test conan-qt branch

If you need to test conan-qt changes locally.

conan export /path/to/conan-qt qt/5.15.0@user/channel

Style

  • Options for palette, syntax
  • Options for font
  • QT_QUICK_CONTROLS_IMAGINE_PATH=imagine-assets
  • Command line: ./app -style material
  • Environment: QT_QUICK_CONTROLS_STYLE=universal ./app
  • Icon Themes