Observed on the operator's machine 2026-10-30 while reinstalling to put the app to use. Four months after the package was purged, a fresh install found ~/.config/Signal/sql/db.sqlite (54,214,656 bytes, mtime 2026-06-21), tried to open it, and aborted before the linking screen: MainSQL: sqlite(SQLITE_NOTADB): file is not a database in PRAGMA journal_mode = WAL MainSQL: migrateDatabase: Migration without cipher change failed sql.initialize was unsuccessful; returning early The SQLCipher key in config.json no longer resolved. The UI named nothing and offered only 'Delete data and restart', which discards the history. Moving the config directory aside fixes it; nothing in the product says so. Recorded as a medium finding, status open. The score does not move: 76.4 / B. local_data_exposure was already 5 for exactly this behaviour, and a finding is evidence, not a point. What changes is that the number now has a receipt instead of a rationale. Artifact: Servetus/00-Artifacts/2026/10-Oct/30/clu-signal-startup-failure/ main.log.excerpt - the failing run, verbatim 00-provenance.txt - package version, file sizes, sha256 of the retained db Retained state moved to ~/Signal-backup-2026-10-30-0026, not deleted.
1163 lines
No EOL
39 KiB
HTML
1163 lines
No EOL
39 KiB
HTML
<!doctype html>
|
|
<html lang="en"><head><meta charset="utf-8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>The software rating list — BigTech.sucks</title>
|
|
<style>
|
|
:root{--ink:#0d0f0e;--bone:#e8e2d4;--dim:#8a8272;--amber:#d9a441;--good:#7fae7a;--bad:#c9563f;--rule:#2a2d2a}
|
|
*{box-sizing:border-box}
|
|
body{margin:0;padding:3rem 1.25rem 7rem;background:var(--ink);color:var(--bone);
|
|
font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-size:15px;line-height:1.7;
|
|
-webkit-font-smoothing:antialiased}
|
|
.wrap{max-width:58rem;margin:0 auto}
|
|
nav{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-bottom:3rem;display:flex;gap:1.5rem;flex-wrap:wrap}
|
|
nav a{color:var(--dim);text-decoration:none;border-bottom:1px solid transparent}
|
|
nav a:hover{color:var(--amber);border-bottom-color:var(--amber)}
|
|
h1{font-size:clamp(1.3rem,3.6vw,2.1rem);font-weight:400;line-height:1.2;margin:0 0 .6rem;letter-spacing:-.01em}
|
|
h2{font-size:.78rem;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);font-weight:400;
|
|
margin:3.5rem 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule)}
|
|
.sub{color:var(--dim);font-size:.85rem;margin:0 0 2.5rem}
|
|
.score{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;margin:0 0 .5rem}
|
|
.score .n{font-size:clamp(2.6rem,9vw,4.4rem);line-height:1;color:var(--amber);letter-spacing:-.03em}
|
|
.score .g{font-size:1rem;color:var(--dim);letter-spacing:.2em}
|
|
.lede{font-size:1.02rem;margin:1.5rem 0 0;padding-left:1rem;border-left:2px solid var(--amber);color:var(--bone)}
|
|
table{width:100%;border-collapse:collapse;font-size:.84rem;margin:0}
|
|
th{text-align:left;color:var(--dim);font-weight:400;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;
|
|
padding:.5rem .6rem;border-bottom:1px solid var(--rule)}
|
|
td{padding:.55rem .6rem;border-bottom:1px solid #1b1e1b;vertical-align:top}
|
|
td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
|
|
.bar{display:inline-block;height:7px;background:var(--amber);vertical-align:middle;border-radius:1px}
|
|
.bar.low{background:var(--bad)}
|
|
.weak td{background:rgba(201,86,63,.07)}
|
|
tr.cathead td{background:#151815;color:var(--dim);font-size:.7rem;letter-spacing:.18em;
|
|
text-transform:uppercase;padding:.9rem .6rem .45rem;border-bottom:1px solid var(--rule)}
|
|
.sev{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;padding:.1rem .4rem;border:1px solid var(--rule)}
|
|
.sev.high{border-color:var(--bad);color:var(--bad)}
|
|
.sev.medium{border-color:var(--amber);color:var(--amber)}
|
|
.sev.low,.sev.info{color:var(--dim)}
|
|
.tier{color:var(--dim);font-size:.72rem}
|
|
a{color:var(--amber);text-decoration:none;border-bottom:1px solid rgba(217,164,65,.35)}
|
|
a:hover{border-bottom-color:var(--amber)}
|
|
.note{color:var(--dim);font-size:.8rem;line-height:1.65;margin:1rem 0 0}
|
|
pre{overflow-x:auto;background:#111413;border:1px solid var(--rule);padding:1rem;font-size:.76rem;line-height:1.5;color:var(--bone)}
|
|
code{font-size:.86em;color:var(--bone)}
|
|
footer{margin-top:4rem;padding:1.25rem 0 2rem;border-top:1px dashed var(--rule);color:var(--dim);font-size:.78rem}
|
|
footer a{color:var(--dim);border-bottom:1px solid var(--rule)}
|
|
footer a:hover{color:var(--amber);border-color:var(--amber)}
|
|
.frow{display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap;margin-bottom:.6rem}
|
|
.frow>div{flex:1 1 22rem;min-width:16rem}
|
|
.fmeta{font-size:.72rem;letter-spacing:.02em}
|
|
</style></head>
|
|
<body><div class="wrap"><nav>
|
|
<a href="/">The list</a>
|
|
<a href="/method.html">Method</a>
|
|
<a href="/badges.html">Badge</a>
|
|
<a href="/oath.html">The Oath</a>
|
|
<a href="/game.html">Game</a>
|
|
<a href="https://forge.binaryranch.com/bunkhouse/bigtech-sucks">Source</a>
|
|
</nav>
|
|
<h1>The software rating list</h1>
|
|
<p class="sub">1 rated of 137 listed.
|
|
Every score is a measurement with an evidence trail, not an opinion with a number attached.</p>
|
|
|
|
<p class="lede">A rating is published only when a product has been audited, its evidence saved,
|
|
and its total recomputed by the build. Anything without that is listed as <em>not rated</em>,
|
|
which is a fact about our work, not about the software.</p>
|
|
|
|
<h2>Rated</h2>
|
|
<table>
|
|
<tr><th>Product</th><th>Vendor</th><th>Category</th><th class="num" style="text-align:right">Score</th><th class="num" style="text-align:right">Grade</th><th>Weakest</th></tr>
|
|
<tr>
|
|
<td><a href="/report/signal-desktop.html">Signal Desktop</a></td>
|
|
<td class="tier">Signal</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num"><strong>76.4</strong></td>
|
|
<td class="num">B</td>
|
|
<td class="tier">local_data_exposure</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h2>Not yet rated</h2>
|
|
<p class="note">Ordered by category. Ask for any of these at the bottom and it moves up the queue.</p>
|
|
<table>
|
|
<tr><th>Product</th><th>Vendor</th><th>Category</th><th class="num" style="text-align:right">Score</th><th class="num" style="text-align:right">Status</th><th></th></tr>
|
|
|
|
<tr class="cathead"><td colspan="6">ai <span class="tier">12</span></td></tr>
|
|
<tr>
|
|
<td>Alpaca</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>ChatGPT</td>
|
|
<td class="tier">OpenAI</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>ChatQT</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Gai</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Google Gemini</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>GPT4ALL</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>LM Studio</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>MindMate</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Moose</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Reins: Chat for Ollama</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>TarotCaster</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Writing Tools</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">ai</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">browser <span class="tier">11</span></td></tr>
|
|
<tr>
|
|
<td>Chromium Web Browser</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>FireDragon</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Firefox</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Google Chrome</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>LibreWolf</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Microsoft Edge</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Mullvad Browser</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Waterfox</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Web</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Web Apps</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Yandex Browser</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">browser</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">calendar <span class="tier">3</span></td></tr>
|
|
<tr>
|
|
<td>Google Calendar</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">calendar</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Calendar</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">calendar</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Contacts</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">calendar</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">crm <span class="tier">1</span></td></tr>
|
|
<tr>
|
|
<td>Salesforce</td>
|
|
<td class="tier">Salesforce, Inc.</td>
|
|
<td class="tier">crm</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">dev <span class="tier">2</span></td></tr>
|
|
<tr>
|
|
<td>GitHub</td>
|
|
<td class="tier">Microsoft Corporation</td>
|
|
<td class="tier">dev</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Vercel</td>
|
|
<td class="tier">Vercel Inc.</td>
|
|
<td class="tier">dev</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">email <span class="tier">16</span></td></tr>
|
|
<tr>
|
|
<td>Aerion</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Betterbird</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Convey</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Geary</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Gmail</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Kanmail</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Mail</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Mailspring</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Meli</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Meron</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Mail</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Outlook</td>
|
|
<td class="tier">Microsoft Corporation</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Proton Mail</td>
|
|
<td class="tier">Proton AG</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Thunderbird</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Thunderbird ESR</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Tuta (Experimental)</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">email</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">files <span class="tier">13</span></td></tr>
|
|
<tr>
|
|
<td>Dropbox</td>
|
|
<td class="tier">Dropbox, Inc.</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Google Drive</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Lazyrsync</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud (self-hosted)</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Dropbox Migration</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Files</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Google Drive Migration</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Server</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Ocis</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>OneDrive</td>
|
|
<td class="tier">Microsoft Corporation</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>OxiCloud</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Seafile</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Syncthing Macos</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">files</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">health <span class="tier">2</span></td></tr>
|
|
<tr>
|
|
<td>23andMe</td>
|
|
<td class="tier">23andMe Holding Co.</td>
|
|
<td class="tier">health</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Fitbit</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">health</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">messaging <span class="tier">17</span></td></tr>
|
|
<tr>
|
|
<td>Bitchat</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Chat</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Discord</td>
|
|
<td class="tier">Discord Inc.</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Flare</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Fluxer</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Gajim</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>GNUnet Messenger</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Kaidan</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Karere</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Lightning</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Mumble</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Spreed Signaling (HPB)</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Talk</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Parla</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Simplex Chat</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Slack</td>
|
|
<td class="tier">Salesforce, Inc.</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Whatsie</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">messaging</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">money <span class="tier">2</span></td></tr>
|
|
<tr>
|
|
<td>Mint (Intuit)</td>
|
|
<td class="tier">Intuit Inc.</td>
|
|
<td class="tier">money</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Plaid</td>
|
|
<td class="tier">Plaid Inc.</td>
|
|
<td class="tier">money</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">notes <span class="tier">12</span></td></tr>
|
|
<tr>
|
|
<td>Beaver Notes</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Evernote</td>
|
|
<td class="tier">Evernote</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Notes</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Notes</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Notesnook</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Notion</td>
|
|
<td class="tier">Notion Labs</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Obsidian Sync</td>
|
|
<td class="tier">Dynalist Inc.</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Scrivano for Handwritten Notes</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Standard Notes</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Sticky Notes</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Swifty Notes</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Trilium Notes</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">notes</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">os <span class="tier">2</span></td></tr>
|
|
<tr>
|
|
<td>Google Android</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">os</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Windows 11</td>
|
|
<td class="tier">Microsoft Corporation</td>
|
|
<td class="tier">os</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">passwords <span class="tier">13</span></td></tr>
|
|
<tr>
|
|
<td>1Password</td>
|
|
<td class="tier">AgileBits Inc.</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Key Rack</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>LastPass</td>
|
|
<td class="tier">LastPass</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Password Client</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Passwords</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nitrokey App2</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>OneKeePass</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Password</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Password Generator</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Password Safe</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Password Secure</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Passwords and Keys</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Proton Pass</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">passwords</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">photos <span class="tier">13</span></td></tr>
|
|
<tr>
|
|
<td>A Photo Tool (Libre)</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Camera</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Ente Photos</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>GNU Image Manipulation Program</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Google Photos</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>iCloud Photos</td>
|
|
<td class="tier">Apple Inc.</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Photos</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Photobooth</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>PhotoCollage</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Photoflare</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Photometry</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>PhotoQt</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Photos</td>
|
|
<td class="tier">Unknown vendor</td>
|
|
<td class="tier">photos</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">productivity <span class="tier">3</span></td></tr>
|
|
<tr>
|
|
<td>Google Workspace</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">productivity</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Microsoft 365</td>
|
|
<td class="tier">Microsoft Corporation</td>
|
|
<td class="tier">productivity</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Office</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">productivity</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">project <span class="tier">3</span></td></tr>
|
|
<tr>
|
|
<td>Asana</td>
|
|
<td class="tier">Asana, Inc.</td>
|
|
<td class="tier">project</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Nextcloud Deck</td>
|
|
<td class="tier">Nextcloud GmbH</td>
|
|
<td class="tier">project</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Trello</td>
|
|
<td class="tier">Atlassian Corporation</td>
|
|
<td class="tier">project</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">smarthome <span class="tier">2</span></td></tr>
|
|
<tr>
|
|
<td>Google Nest</td>
|
|
<td class="tier">Google LLC</td>
|
|
<td class="tier">smarthome</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Ring (Amazon)</td>
|
|
<td class="tier">Amazon.com, Inc.</td>
|
|
<td class="tier">smarthome</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">social <span class="tier">2</span></td></tr>
|
|
<tr>
|
|
<td>Facebook</td>
|
|
<td class="tier">Meta Platforms</td>
|
|
<td class="tier">social</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>X (Twitter)</td>
|
|
<td class="tier">X Corp.</td>
|
|
<td class="tier">social</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">streaming <span class="tier">1</span></td></tr>
|
|
<tr>
|
|
<td>Netflix</td>
|
|
<td class="tier">Netflix, Inc.</td>
|
|
<td class="tier">streaming</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">video <span class="tier">4</span></td></tr>
|
|
<tr>
|
|
<td>Kino</td>
|
|
<td class="tier">Kino AI</td>
|
|
<td class="tier">video</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Microsoft Teams</td>
|
|
<td class="tier">Microsoft Corporation</td>
|
|
<td class="tier">video</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Otter.ai</td>
|
|
<td class="tier">Otter.ai</td>
|
|
<td class="tier">video</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr><tr>
|
|
<td>Zoom</td>
|
|
<td class="tier">Zoom Communications</td>
|
|
<td class="tier">video</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">voice <span class="tier">1</span></td></tr>
|
|
<tr>
|
|
<td>OpenAI Whisper API</td>
|
|
<td class="tier">OpenAI</td>
|
|
<td class="tier">voice</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="cathead"><td colspan="6">vpn <span class="tier">1</span></td></tr>
|
|
<tr>
|
|
<td>NordVPN</td>
|
|
<td class="tier">Nord Security</td>
|
|
<td class="tier">vpn</td>
|
|
<td class="num tier">—</td>
|
|
<td class="num tier">not rated</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h2>Ask for something to be rated</h2>
|
|
<p class="note">No account. No email required. If enough people ask for the same thing, it gets
|
|
rated next. If you leave a contact we will tell you when it ships.</p>
|
|
|
|
<form id="suggest" style="margin-top:1.25rem;max-width:34rem">
|
|
<label style="display:block;margin-bottom:.6rem">
|
|
<span class="tier">Product name</span>
|
|
<input name="product_name" required maxlength="120"
|
|
style="display:block;width:100%;margin-top:.3rem;padding:.55rem .6rem;background:#111413;
|
|
border:1px solid var(--rule);color:var(--bone);font:inherit;font-size:.9rem">
|
|
</label>
|
|
<label style="display:block;margin-bottom:.6rem">
|
|
<span class="tier">Category, if you know it (optional)</span>
|
|
<input name="category_hint" maxlength="60"
|
|
style="display:block;width:100%;margin-top:.3rem;padding:.55rem .6rem;background:#111413;
|
|
border:1px solid var(--rule);color:var(--bone);font:inherit;font-size:.9rem">
|
|
</label>
|
|
<label style="display:block;margin-bottom:.6rem">
|
|
<span class="tier">Why it matters (optional)</span>
|
|
<input name="note" maxlength="280"
|
|
style="display:block;width:100%;margin-top:.3rem;padding:.55rem .6rem;background:#111413;
|
|
border:1px solid var(--rule);color:var(--bone);font:inherit;font-size:.9rem">
|
|
</label>
|
|
<label style="display:block;margin-bottom:1rem">
|
|
<span class="tier">Contact, if you want a reply (optional)</span>
|
|
<input name="contact" maxlength="160"
|
|
style="display:block;width:100%;margin-top:.3rem;padding:.55rem .6rem;background:#111413;
|
|
border:1px solid var(--rule);color:var(--bone);font:inherit;font-size:.9rem">
|
|
</label>
|
|
<button type="submit" style="padding:.6rem 1.2rem;background:var(--amber);color:#14110a;
|
|
border:0;font:inherit;font-weight:600;cursor:pointer">Send it</button>
|
|
<p id="msg" class="note" style="min-height:1.4rem"></p>
|
|
</form>
|
|
<script>
|
|
(() => {
|
|
const form = document.getElementById('suggest');
|
|
const msg = document.getElementById('msg');
|
|
form.addEventListener('submit', async (e) => {
|
|
e.preventDefault();
|
|
const data = Object.fromEntries(new FormData(form).entries());
|
|
msg.textContent = 'Sending…';
|
|
try {
|
|
const r = await fetch('/api/suggest', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(data),
|
|
});
|
|
if (!r.ok) throw new Error('HTTP ' + r.status);
|
|
msg.textContent = 'Got it. It is on the list now, and it goes up the queue as more people ask.';
|
|
form.reset();
|
|
} catch (err) {
|
|
msg.innerHTML = 'The suggestion endpoint is not live yet. ' +
|
|
'<a href="https://forge.binaryranch.com/bunkhouse/bigtech-sucks/issues/new">Open it as an issue instead</a> ' +
|
|
'and it will not get lost.';
|
|
}
|
|
});
|
|
})();
|
|
</script>
|
|
<footer>
|
|
<div class="frow">
|
|
<div>
|
|
Built in the open at the
|
|
<a href="https://forge.binaryranch.com/bunkhouse">Binary Ranch Bunkhouse</a>.
|
|
Every repository there is one you can read, clone, and leave with.
|
|
</div>
|
|
<div class="fmeta">
|
|
Generated from <code>bigtech.db</code> on 2026-10-30.
|
|
Method btr-0.1. Every number recomputes from its evidence or the build fails.
|
|
</div>
|
|
</div>
|
|
<div class="frow">
|
|
<div class="fmeta">
|
|
<a href="https://forge.binaryranch.com/bunkhouse/bigtech-sucks">Source for this site</a> ·
|
|
<a href="https://forge.binaryranch.com/bunkhouse/vitals">vitals</a> ·
|
|
<a href="https://forge.binaryranch.com/bunkhouse/otter-dark-mode">otter-dark-mode</a>
|
|
</div>
|
|
<div class="fmeta">
|
|
<a href="https://binaryranch.com">Binary Ranch</a> · Venice, Florida
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</div></body></html> |