Modifications to Google Chromium for removing Google integration and enhancing privacy, control, and transparency (mirror)

xsmile 72343dade1 Update version.ini to 72.0.3626.109 5 years ago
.github fa4fcb8619 Move Pull Request template inside .github/ 5 years ago
buildkit 47c6164c3b buildkit.downloads: Simplify progress reporting and re-add round() 5 years ago
config_bundles e25b1f2fa7 Update for 72.0.3626.109 5 years ago
devutils c68b9f4916 Fix bug in solution to PR #445 and update file paths 5 years ago
docs 82b1194615 docs/building.md: Add note about Python 3 for macOS 5 years ago
packaging 3d461ec7ab Archlinux: dependencies update 5 years ago
patches e25b1f2fa7 Update for 72.0.3626.109 5 years ago
.cirrus.yml 05c645148d Cirrus CI: Fix wrong name for PyPI GitPython module 5 years ago
.gitignore f0ab2b90d1 Revert ignore download_cache 5 years ago
.style.yapf 4d527713d1 Format code using yapf 5 years ago
LICENSE 0404ae83e7 Switch license from GPLv3 to BSD-3-clause 7 years ago
README.md 6c8f59c9e1 README.md: Document implicit HTTPS scheme feature 5 years ago
SUPPORT.md 9bd021519c Split up contributing section into GitHub's format 5 years ago
get_package.py 3e990cf67d Fix get_package.py usage outside of git repos 5 years ago
run_buildkit_cli.py ef7354d05a Add run_buildkit_cli.py 5 years ago
version.ini 72343dade1 Update version.ini to 72.0.3626.109 5 years ago

README.md

ungoogled-chromium

Bringing back the "Don't" in "Don't be evil"

ungoogled-chromium is Google Chromium, sans integration with Google. It also features some tweaks to enhance privacy, control, and transparency (almost all of which require manual activation or enabling).

ungoogled-chromium retains the default Chromium experience as closely as possible. Unlike other Chromium forks that have their own visions of a web browser, ungoogled-chromium is essentially a drop-in replacement for Chromium.

Help is always welcome! See the docs/contributing.md document for more information.

Content Overview

Motivation and Philosophy

A number of features or background services communicate with Google servers despite the absence of an associated Google account or compiled-in Google API keys. Furthermore, the normal build process for Chromium involves running Google's own high-level commands that invoke many scripts and utilities, some of which download and use pre-built binaries provided by Google. Even the final build output includes some pre-built binaries. Fortunately, the source code is available for everything.

From a technical standpoint, ungoogled-chromium is a set of configuration flags, patches, and custom scripts. These components altogether strive to accomplish the following:

  • Disable or remove offending services and features that communicate with Google or weaken privacy
  • Strip binaries from the source tree, and use those provided by the system or build them from source
  • Disable features that inhibit control and transparency, and add or modify features that promote them (these changes will almost always require manual activation or enabling).

Since these goals and requirements are not precise, unclear situations are discussed and decided on a case-by-case basis.

Feature Overview

This section overviews the features of ungoogled-chromium. For more detailed information, it is best to consult the source code.

Contents of this section:

Key Features

These are the core features introduced by ungoogled-chromium.

  • Replace many web domains in the source code with non-existent alternatives ending in qjz9zk (known as domain substitution; see docs/design.md for details)
  • Strip binaries from the source code (known as binary pruning; see docs/design.md for details)
  • Disable functionality specific to Google domains (e.g. Google Host Detector, Google URL Tracker, Google Cloud Messaging, Google Hotwording, etc.)
  • Add many new command-line switches and chrome://flags entries to configure disabled-by-default features. See docs/flags.md for the exhaustive list.

Enhancing Features

These are the non-essential features introduced by ungoogled-chromium.

  • Use HTTPS by default when a URL scheme is not provided (e.g. Omnibox, bookmarks, command-line)
  • Add Suggestions URL text field in the search engine editor (chrome://settings/searchEngines) for customizing search engine suggestions.
  • Add menu item under "More tools" to clear the HTTP authentication cache on-demand
  • Add more URL schemes allowed to save page schemes.
  • Add Omnibox search provider "No Search" to allow disabling of searching
  • Add a custom cross-platform build configuration and packaging wrapper for Chromium. It currently supports many Linux distributions, macOS, and Windows. (See docs/design.md for details on the system.)
  • Force all pop-ups into tabs
  • Disable automatic formatting of URLs in Omnibox (e.g. stripping http://, hiding certain parameters)
  • Disable intranet redirect detector (extraneous DNS requests)
    • This breaks captive portal detection, but captive portals still work.
  • (Iridium Browser feature change) Prevent URLs with the trk: scheme from connecting to the Internet
    • Also prevents any URLs with the top-level domain qjz9zk (as used in domain substitution) from attempting a connection.
  • (Iridium and Inox feature change) Prevent pinging of IPv6 address when detecting the availability of IPv6. See the --set-ipv6-probe-false flag above to adjust the behavior instead.
  • (Windows-specific) Do not set the Zone Identifier on downloaded files

Borrowed Features

In addition to the features introduced by ungoogled-chromium, ungoogled-chromium selectively borrows many features from the following projects (in approximate order of significance):

Supported Platforms and Distributions

Currently, only desktop platforms are supported. Functionality of specific desktop platforms may vary across different releases. For more details, see Statuses in the Wiki.

Other platforms are discussed and tracked in GitHub's Issue Tracker. Learn more about using the Issue Tracker under the section Contributing, Reporting, Contacting.

Downloads

To download and run ungoogled-chromium:

To build ungoogled-chromium, see Source Code.

Software Repositories

Install and run ungoogled-chromium from a software repository:

Contributor Binaries

Download, install, and run ungoogled-chromium from machine code provided by volunteers.

IMPORTANT: These binaries are provided by anyone who are willing to build and submit them. Because these binaries are not necessarily reproducible, authenticity cannot be guaranteed; In other words, there is always a non-zero probability that these binaries may have been tampered with. In the unlikely event that this has happened to you, please report it in a new issue.

Download from the contributor binaries website

The release versioning scheme follows that of the tags. Please see Getting the source code section for more details.

To contribute binaries, consult the instructions in the ungoogled-chromium-binaries repository

Source Code

Picking the version to download: You are encouraged to download one of the tags. The latest tag may not be the applicable for all platforms. To determine the tag to use, please see the Status page in the Wiki. Tags are versioned in the following format: {chromium_version}-{release_revision} where

  • chromium_version is the version of Chromium used in x.x.x.x format, and
  • release_revision is a number indicating the version of ungoogled-chromium for the corresponding Chromium version.

Not all tags are stable for all platforms. See the Statuses in the Wiki to determine the tag to use.

Building the source code: See docs/building.md

FAQ

See the frequently-asked questions (FAQ) on the Wiki

Building Instructions

See docs/building.md

Design Documentation

See docs/design.md

Contributing, Reporting, Contacting

  • For reporting and contacting, see SUPPORT.md
  • For contributing (e.g. how to help, submitting changes, criteria for new features), see docs/contributing.md

Credits

License

BSD-3-clause. See LICENSE