Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add privacy policy #2187

Open
wants to merge 1 commit into
base: trunk
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions website_and_docs/content/blog/2025/selenium-privacy-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
title: "Selenium Privacy Policy"
linkTitle: "Selenium Privacy Policy"
date: 2025-02-19
tags: [ "selenium", "manager", "privacy", "telemetry" ]
categories: [ "Privacy" ]
author: Titus Fortner [@titusfortner](https://titusfortner.com)
description: >
Selenium has introduced a Privacy Policy to clarify our data collection practices, why telemetry exists, and how we ensure compliance with GDPR and CCPA.
---

Selenium has always been committed to open-source transparency and user privacy, but we recognize that
we could have done a better job communicating the details of Selenium Manager's telemetry collection.

To address this, we have published a comprehensive [Privacy Policy](/privacy) that
clearly explains:
* What data is collected (and what isn’t)
* How we ensure compliance with GDPR and CCPA
* Why Selenium Manager includes opt-out telemetry
* How users can easily disable telemetry

The bottom line is that Selenium Manager collects only anonymous technical information to help us improve Selenium.

Additionally, starting in Selenium 4.30, Selenium Manager displays a one-time console message the first time
telemetry is sent. This obviously and proactively informs users about telemetry, their right to opt out,
and provides a direct link to the Privacy Policy.

**Quick Recap of what Selenium Manager collects:**

✔ Selenium version (to ensure compatibility across versions)
✔ Programming language (Java, Python, JavaScript, .NET)
✔ Operating system and CPU architecture (to prioritize OS support)
✔ Browser and version (to understand browser usage trends)
✔ Approximate geolocation (city-level), temporarily inferred from the IP (IP is discarded after processing)

❌ No usernames, emails, or personal identifiers
❌ No browser history or test execution data
❌ No full IP addresses (only used temporarily for location inference, then discarded)
❌ No cookies or persistent tracking

See everything for yourself: [Selenium Manager Public Analytics](https://plausible.io/manager.selenium.dev)


## Opting Out of Telemetry

Like many other open-source projects, we use opt-out telemetry to ensure we receive representative, anonymous data that
helps improve Selenium. We understand that some people prefer opt-in telemetry,
and we explain our reasoning in detail in the [Privacy Policy](https://www.selenium.dev/privacy/#opt-out)

Regardless, it is quite easy to disable telemetry by either:

1. Setting an environment variable

```sh
SE_AVOID_STATS=true
```

2. Using a configuration file

```ini
avoid-stats = true
```

Please see the [Selenium Manager documentation](https://www.selenium.dev/documentation/selenium_manager/) for further
details on how to do this.

## Insights

**Interesting tidbits we’ve learned from having opt-out telemetry over the past year:**

* Selenium gets over 1 million unique users a week
* The number of unique users is growing at a rate of 10% per month
* Over 80% of sessions are on Windows
* Almost 90% of sessions use Chrome
* Fewer than 1% of sessions are with Safari or Internet Explorer
* A lot more sessions are with C# and Python than Java, and very few people are using Ruby and JavaScript

<em>Note 1: The data only represents users who have updated to Selenium 4.19 or greater</em><br />
<em>Note 2: A unique user represents a unique session from a given IP address for that day</em><br />
238 changes: 238 additions & 0 deletions website_and_docs/content/privacy/_index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
---
title: Privacy Policy
linkTitle: privacy
aliases:
[
"/pt-br/privacy/",
"/zh-cn/privacy/",
"/ja/privacy/",
"/other/privacy/",
]
---

{{< blocks/section color="selenium-green" height="min" >}}
<div class="mx-auto text-center p-4">
<h1 class="d-1">Selenium Privacy Policy</h1>
</div>
{{< /blocks/section >}}

<div class="row p-5">
<div class="alert alert-green bg-transparent ps-lg-5" role="alert">
<h2 class="alert-heading pb-3">Selenium's Commitment to Privacy</h2>
<div class="w-lg-75">
<p>
Selenium is committed to protecting user privacy and ensuring transparency in how we collect and use
data.
This policy explains what data we collect, why we collect it, and how users can control their privacy
preferences.
</p>
<p>
The Selenium project collects anonymous data from visitors to our website
as well as usage data through <a href="https://www.selenium.dev/documentation/selenium_manager">Selenium
Manager</a>.
Selenium uses <a href="https://plausible.io/privacy-focused-web-analytics">Plausible Analytics</a>
to manage this data due to its focus on privacy.
</p>
</div>
</div>
</div>

<div class="row td-box--100 p-5">
<div class="alert alert-orange bg-transparent ps-lg-5" role="alert">
<h2 class="alert-heading pb-3">Website Analytics (selenium.dev)</h2>
<div class="w-lg-75">
<p>
Selenium uses <a href="https://plausible.io">Plausible's</a> hosted solution to track information
about visitors to our website (<a href="https://www.selenium.dev">selenium.dev</a>).
The following information is collected:
</p>
<ul>
<li>Number of visitors to the site</li>
<li>Most viewed pages</li>
<li>General geographic distribution (country-level)</li>
<li>Referral sources (e.g., search engines, social media, direct visits)</li>
</ul>
<p>
Plausible does not use cookies, does not track users across sites, and does not collect personal
information.
</p>
<p>
All information we collect is publicly available on the
<a href="https://plausible.io/selenium.dev">Selenium Website Plausible Dashboard</a>
</p>
<p>
This data helps us understand how users engage with the Selenium website to improve our
documentation and content.
</p>
</div>
</div>
</div>

<div class="row p-5">
<div class="alert alert-cyan bg-transparent ps-lg-5" role="alert">
<h2 class="alert-heading pb-3">Selenium Manager Telemetry</h2>
<div class="w-lg-75">
<p>
Selenium Manager, a tool for managing browser drivers, collects anonymous usage data to
help us understand which platforms and configurations need the most support.
</p>
<p>
Data Collected:
</p>
<ul>
<li>Selenium version</li>
<li>Programming language (Java, Python, JavaScript, .NET)</li>
<li>Operating system and CPU architecture</li>
<li>Browser and version (managed by Selenium Manager)</li>
<li>Approximate geolocation (city-level), derived temporarily from the IP address (IP is discarded after
processing)
</li>
</ul>
<p>
What is NOT collected:
</p>
<ul>
<li>Personal information (e.g., usernames, emails)</li>
<li>Browser history or test execution details</li>
<li>Full IP addresses (only used temporarily for location inference, then discarded)</li>
<li>Cookies or persistent tracking identifiers</li>
</ul>
<p>
All information we collect is publicly available on the
<a href="https://plausible.io/manager.selenium.dev">Selenium Manager Plausible Dashboard</a>
</p>
</div>
</div>
</div>

<div class="row td-box--100 p-5">
<div class="alert alert-orange bg-transparent ps-lg-5" role="alert">
<h2 class="alert-heading pb-3">GDPR & CCPA Compliance</h2>
<div class="w-lg-75">
<p>
Selenium Manager’s telemetry is designed to comply with GDPR and CCPA by collecting only anonymized,
non-personal data and providing users full control over their participation.
Below is a detailed breakdown of compliance with key GDPR provisions.
</p>

<h4>Lawfulness & Transparency (Articles 5, 6, 12)</h4>
<ul>
<li>Selenium Manager processes anonymized, non-personal data under legitimate interest
(Article 6(1)(f)), allowing data collection for product improvement while respecting user privacy.
</li>
<li>Users are informed about telemetry collection through:
<ul>
<li>Change logs and documentation updates</li>
<li>Blog posts</li>
<li>A one-time console message when telemetry is first sent</li>
</ul>
</li>
</ul>

<h4>Data Minimization & Purpose Limitation (Articles 5, 25)</h4>
<ul>
<li>Only essential, anonymous usage data is collected to guide project improvements.</li>
<li>IP addresses are not stored; they are used temporarily to derive city-level geolocation before being
discarded.
</li>
<li>Data is not used for advertising, profiling, or tracking individual users.</li>
</ul>

<h4>User Rights (Articles 12-23)</h4>
<ul>
<li>Right to Object (Article 21): Users have the right to object to the processing of
their data under legitimate interest. Selenium Manager respects this right by providing:
<ul>
<li>clear and accessible opt-out mechanisms, allowing users to disable telemetry at any time.
</li>
<li>information regarding the user's right to opt out via the measures detailed in the
Lawfulness & Transparency section above.
</li>
</ul>
</li>
<li>Right to Access, Rectification, and Erasure (Articles 15-17): These rights apply when personal data
is collected and stored. Since Selenium Manager only processes anonymous, non-personal data and does
not retain user information, these rights are not applicable.
</li>
</ul>

<h4>Storage & Security (Articles 5, 32)</h4>
<ul>
<li>Data is aggregated and anonymized, ensuring no link to individual users.</li>
<li>No long-term storage of raw data; all processing is done within GDPR-compliant
<a href="https://plausible.io/privacy-focused-web-analytics#hosted-in-the-eu-powered-by-european-owned-cloud-infrastructure">EU infrastructure</a>
</li>
Everything Selenium Manager collects is publicly accessible in the
<a href="https://plausible.io/manager.selenium.dev">Selenium Manager Plausible Dashboard</a> for full
transparency.
</li>
</ul>
</div>
</div>
</div>

<div class="row td-box--100 p-5">
<div class="alert alert-blue bg-transparent ps-lg-5" role="alert">
<h2 class="alert-heading pb-3">Selenium Manager Telemetry is Opt-Out</h2>
<div class="w-lg-75">
<p>
While some open-source projects use opt-in telemetry, Selenium requires a representative dataset to
accurately assess project usage and prioritize improvements. With multiple language implementations and
distribution methods, opt-in telemetry would not provide meaningful insights, particularly for
cross-language comparisons.
</p>
<p>
Many well-known open-source projects, such as <a
href="https://learn.microsoft.com/en-us/dotnet/core/tools/telemetry">.NET CLI</a>, <a
href="https://docs.brew.sh/Analytics">Homebrew</a>, <a
href="https://nextjs.org/telemetry">Next.js</a>, and <a
href="https://docs.gitlab.com/ee/user/admin_area/usage_statistics.html">GitLab</a>, use opt-out
telemetry for similar reasons. </p>
<p>Additionally, Selenium faces unique challenges in even providing an
opt-in mechanism — there is no universal way to prompt users across all language bindings and package
distribution methods. An unrepresentative dataset would prevent us from accurately assessing project
usage and making informed improvements. For Selenium, the real choice is not
between opt-in and opt-out, but between opt-out and no telemetry at all.
</p>
</div>
</div>
</div>

<div class="row p-5">
<div class="alert alert-green bg-transparent ps-lg-5" role="alert">
<h2 id="opt-out" class="alert-heading pb-3">How to Opt Out of Selenium Manager Telemetry</h2>
<div class="w-lg-75">
<p>
If you prefer not to share anonymous usage data, you can disable telemetry, the detailed instructions
can be found in the <a href="../documentation/selenium_manager">Selenium Manager Documentation</a>,
but broadly consists of
methods:
</p>
<h4>Option 1: Use an Environment Variable</h4>
<pre><code>SE_AVOID_STATS=true</code></pre>

<h4>Option 2: Use a Configuration File</h4>
<pre><code>avoid-stats = true</code></pre>

<p>
Once disabled, Selenium Manager will not send any telemetry data.
</p>
</div>
</div>
</div>

<div class="row p-5">
<div class="alert alert-cyan bg-transparent ps-lg-5" role="alert">
<h2 id="feedback" class="alert-heading pb-3">Feedback</h2>
<div class="w-lg-75">
<p>
If you have suggestions for how we can improve out implementations, please reach out to the Selenium
team:
</p>
<ul>
<li><a href="/support">Selenium Support</a></li>
<li><a href="mailto:[email protected]">[email protected]</a></li>
</ul>
</div>
</div>
</div>
8 changes: 7 additions & 1 deletion website_and_docs/hugo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ section = ["HTML", "print"]

[params]
copyright = "Software Freedom Conservancy"
# privacy_policy = "https://policies.google.com/privacy"
privacy_policy = "/privacy"

# First one is picked as the Twitter card image if not set on page.
images = ["images/selenium_4_logo.png"]
Expand Down Expand Up @@ -326,6 +326,12 @@ parent = "About"
url = "/sponsor"
weight = 70

[[menus.main]]
name = "Privacy Policy"
parent = "About"
url = "/privacy"
weight = 80

[[menus.main]]
identifier = "Downloads"
name = "Downloads"
Expand Down
2 changes: 1 addition & 1 deletion website_and_docs/layouts/partials/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
</div>
<div class="col-12 col-sm-4 text-center py-2 order-sm-2">
{{ with .Site.Params.copyright }}<small class="text-white">&copy; {{ now.Year}} {{ .}} {{ T "footer_all_rights_reserved" }}</small>{{ end }}
{{ with .Site.Params.privacy_policy }}<small class="ml-1"><a href="{{ . }}" target="_blank" rel="noopener">{{ T "footer_privacy_policy" }}</a></small>{{ end }}
{{ with .Site.Params.privacy_policy }}<p class="mt-2"><a href="{{ . }}">{{ T "footer_privacy_policy" }}</a></p>{{ end }}
{{ if not .Site.Params.ui.footer_about_disable }}
{{ with .Site.GetPage "about" }}<p class="mt-2"><a href="{{ .RelPermalink }}">{{ .Title }}</a></p>{{ end }}
{{ end }}
Expand Down
Loading