Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f20e5ca7b1 | ||
|
|
b987685d89 |
@@ -1,108 +0,0 @@
|
|||||||
# Add a privacy policy
|
|
||||||
|
|
||||||
Status: design approved on 2026-10-21. The policy isn't written yet, and it
|
|
||||||
will be published after the release that fixes #16. Researched, but not legal
|
|
||||||
advice.
|
|
||||||
|
|
||||||
## Problem
|
|
||||||
|
|
||||||
- The AMO listing has no privacy policy. On 2026-10-21 the API reported
|
|
||||||
`has_privacy_policy: false`.
|
|
||||||
- The README has a short "Privacy Policy" section. The website's page for the
|
|
||||||
extension says only "Extension collects zero user information."
|
|
||||||
- The owner wants a policy that says the extension collects nothing and that
|
|
||||||
data will never be sold: "basically the most privacy respecting as possible".
|
|
||||||
|
|
||||||
## Goals
|
|
||||||
|
|
||||||
1. Say in plain English what happens to data, with every claim checkable
|
|
||||||
against the code.
|
|
||||||
2. Make clear that Zavage Software receives nothing and will never sell data.
|
|
||||||
3. Make clear that ChatGPT is a separate service under OpenAI's own privacy
|
|
||||||
policy.
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- **Plain English, organised by where data goes.** A one-line "we collect
|
|
||||||
nothing" would hide the hand-off to ChatGPT. A formal GDPR-style template is
|
|
||||||
the legalese Mozilla advises against (Extension Workshop, "Create an appealing
|
|
||||||
listing").
|
|
||||||
- **The extension only.** One line says the policy doesn't cover the website or
|
|
||||||
email, although the options page links to the website and its contact form.
|
|
||||||
The policy ends with mat@zavage.net for questions. The owner chose this over
|
|
||||||
also covering messages or the whole website.
|
|
||||||
- **The current version only.** The policy describes the current version and
|
|
||||||
says so.
|
|
||||||
- **#16 is fixed first.** Up to 1.3, a chat started in a private window can open
|
|
||||||
in a normal window. The owner chose to fix that before publishing rather than
|
|
||||||
disclose it, so the policy doesn't mention it.
|
|
||||||
- **Promises.** Nothing is ever sold. Any future collection would be opt-in, and
|
|
||||||
the policy is updated before any version that changes how data is handled.
|
|
||||||
- **No "can't".** Nothing in the code sends data to Zavage Software, but that is
|
|
||||||
a fact about the current code. The policy says so and points to the public
|
|
||||||
source instead of claiming the extension is unable to send data.
|
|
||||||
- **No claim that Mozilla agreed.** #17 asks whether the manifest's "no data
|
|
||||||
collection" declaration covers the hand-off to ChatGPT, and it is still open.
|
|
||||||
The policy describes what happens and doesn't say Mozilla confirmed anything.
|
|
||||||
- **`PRIVACY.md` is the only copy.** It is pasted into AMO unchanged. The README
|
|
||||||
section shrinks to a summary and a link. AGENTS.md names `PRIVACY.md` as the
|
|
||||||
file every data-handling change must update.
|
|
||||||
- **Not packaged.** `web-ext-config.mjs` ignores `PRIVACY.md`, so AMO and the
|
|
||||||
repository hold it.
|
|
||||||
- **Its own pull request,** separate from the license change in #33.
|
|
||||||
- **Review.** Three readers: one checks each claim against the code, one checks
|
|
||||||
Mozilla's policies and privacy law, and one reads it cold for plain English.
|
|
||||||
|
|
||||||
## What each claim rests on
|
|
||||||
|
|
||||||
| Claim | Evidence |
|
|
||||||
| --- | --- |
|
|
||||||
| Zavage Software receives nothing | The code has no `fetch`, `XMLHttpRequest`, `sendBeacon`, `WebSocket` or `EventSource`, and the manifest has no `favicon_url`. |
|
|
||||||
| Settings stay in Firefox and sync only through Firefox Sync | `lib/settings.js:37-60` uses `storage.sync`, the only storage API in the code. |
|
|
||||||
| Three permissions, and no host access | `manifest.json:25`: `storage`, `menus` and `activeTab`. |
|
|
||||||
| The manifest declares no data collection | `manifest.json:18` |
|
|
||||||
| The selection is read only when the toolbar button or shortcut is used | `background/background.js:41-50`: `activeTab` and `tabs.executeScript`. |
|
|
||||||
| The right-click menu gets the selection, link or page address from Firefox at the click | `lib/actions.js:16-21` |
|
|
||||||
| ChatGPT receives the text in the address of the page the extension opens | `lib/build-url.js:11` and `:45-47`; `background/open-chat.js:1-9` |
|
|
||||||
| Temporary chat and web search are only hints in that address | `lib/build-url.js:32-37` |
|
|
||||||
| Dialogs hold pending text in memory only | `background/dialogs.js:1` and `:20` |
|
|
||||||
| The `gpt` search sends nothing until Enter | `manifest.json:58-61` has no `suggest_url`. |
|
|
||||||
| No remote code | Manifest V2's default content security policy runs only the extension's own scripts. |
|
|
||||||
| Links to other sites open only when clicked | `options/options.html` |
|
|
||||||
|
|
||||||
## AMO's privacy policy field
|
|
||||||
|
|
||||||
- Unlike the license field, it renders a restricted Markdown. The field is
|
|
||||||
`privacy_policy = PurifiedMarkdownField(...)` in addons-server's
|
|
||||||
`addons/models.py`, as Mozilla's blog post of 3 March 2025 describes.
|
|
||||||
- The allowed tags are `a`, `abbr`, `acronym`, `b`, `blockquote`, `code`, `em`,
|
|
||||||
`i`, `li`, `ol`, `strong` and `ul`. Headings are dropped, so section labels
|
|
||||||
are bold lines.
|
|
||||||
- Tags are stripped before the Markdown is rendered, so anything in angle
|
|
||||||
brackets disappears.
|
|
||||||
- Bare URLs become links through Mozilla's redirector. The email address may
|
|
||||||
link to AMO's home page, as it does in the license.
|
|
||||||
|
|
||||||
## Publishing on AMO (untested, 2026-10-21)
|
|
||||||
|
|
||||||
Publish after the release that fixes #16.
|
|
||||||
|
|
||||||
1. In the Developer Hub, open the add-on's **Manage Authors & License** page,
|
|
||||||
where the license is set too.
|
|
||||||
2. Tick "This add-on has a Privacy Policy" and paste `PRIVACY.md` unchanged.
|
|
||||||
3. Save, then check:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl -s https://addons.mozilla.org/api/v5/addons/addon/search-with-chatgpt/ | jq .has_privacy_policy
|
|
||||||
curl -s https://addons.mozilla.org/api/v5/addons/addon/search-with-chatgpt/eula_policy/ | jq .privacy_policy
|
|
||||||
```
|
|
||||||
|
|
||||||
The policy then appears at
|
|
||||||
https://addons.mozilla.org/firefox/addon/search-with-chatgpt/privacy/.
|
|
||||||
|
|
||||||
## Outside the policy
|
|
||||||
|
|
||||||
- Point the website's "Extension collects zero user information" at the new
|
|
||||||
policy.
|
|
||||||
- #17 is still open.
|
|
||||||
- The Chrome repository has no privacy policy.
|
|
||||||
Reference in New Issue
Block a user