Not serious (yet) browser built on Servo
  • Rust 99.7%
  • Shell 0.3%
Find a file
2020-05-31 16:52:00 +12:00
src PARTIAL stuff towards getting it to compile again 2020-05-31 16:52:00 +12:00
.gitignore Initial stuff, very basic stuff for using libservo 2019-06-21 11:08:49 +12:00
ARCHITECTURE.md ARCHITECTURE filtering notes 2019-11-11 09:41:05 +13:00
cargo-tree Update servo to 1d2c0ba0bc71e34495accde61f58443f0f18c28c 2019-06-23 19:48:35 +12:00
Cargo.lock PARTIAL stuff towards getting it to compile again 2020-05-31 16:52:00 +12:00
Cargo.toml Updates for upstream changes affecting upstream compilation 2020-05-31 16:26:47 +12:00
README.md Updates for upstream changes affecting upstream compilation 2020-05-31 16:26:47 +12:00
resources Initial stuff, very basic stuff for using libservo 2019-06-21 11:08:49 +12:00
run.sh fix run.sh 2019-06-25 08:34:18 +12:00
rust-toolchain Updates for upstream changes affecting upstream compilation 2020-05-31 16:26:47 +12:00

Play Browser

This is a learning experience and an experiment.

I am interested in browsing privacy and security, and I'm not happy with any of the current browsers including Firefox, Brave, or Pale Moon. Firefox has way too much cruft and complexity to be secure (but uMatrix helps). The others have their own issues.

What I'm interested in eventually is a browser that

  • Has a URL blacklist
  • Does what uMatrix does (blacklisting partial content based on source and type, on a per domain basis)
  • Allows you to configure many settings on a per-domain basis, such as the User Agent string, fingerprinting, cookie acceptance, 3rd party cookie acceptance, etc. If you configure firefox to be strict on these, there is no easy way to remember per-domain overrides.
  • Doesn't run a whole bunch of protocols that I don't want run (e.g. webrtc, DRM, etc)
  • Doesn't send data back to Mozilla.
  • etc, etc (this list can get very long)

I'd rather have borked functionality than security/privacy violations, usually. Sometimes I really need the functionality. Thus, I need per-domain settings.

I'd rather not come up with a catchy name at this point. Playbrowser means it's what I'm playing with at the moment.

Servo

This browser will be based on Servo. Servo is mainly written in rust (some libraries it uses link to C). Servo isn't "there yet", even though some components of Servo are stable and shipping in Firefox. It will be a few years at least before Servo is usable as a browser engine w/o all the other Firefox stuff.

How To Build

WARNING: this can easily require 50 GB of disk space. Check that you have space first.

To compile the project, you need servo along side of it (we do it this way rather than using a cargo dependency in order to have easiler access to the servo source code. Besides, servo isn't versioned yet). That comes from https://github.com/servo/servo.

$ git clone https://github.com/servo/servo
$ git clone https://github.com/mikedilger/playbrowser
$ cd playbrowser

Clean up if you've been here before (and not very recently):

$ cargo clean

Use the same rust toolchain as servo does:

$ cp ../servo/rust-toolchain .
$ RUSTVER=$(cat rust-toolchain)
$ rustup override set $RUSTVER

Copy servo's recent Cargo.lock, so we use the same versions (once we compile, Cargo will fix this for us):

$ cp ../servo/Cargo.lock .
$ cargo update

Link to servo resources (if link does not already exist)

$ ln -s ../servo/resources

And see if it would compile

$ cargo check

Update Cargo.toml versions to match what is now in Cargo.lock and run

$ cargo update

Servo updates may break playbrowser from time to time, so expect occasional updates to the code to be necessary.

Once you want to try it, build it for reals

$ cargo build --release

And run it like this (pass in whatever URL you want):

$ RUST_LOG=playbrowser=info ./target/release/playbrowser https://mikedilger.com/scratch.html