<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.quippd.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.quippd.com/" rel="alternate" type="text/html" /><updated>2026-04-10T14:14:52+00:00</updated><id>https://www.quippd.com/feed.xml</id><title type="html">Youssuff Quips</title><subtitle>Blogging since 2021.</subtitle><entry><title type="html">AI Code is Hollowing Out Open Source, and Maintainers are Looking the Other Way</title><link href="https://www.quippd.com/writing/2026/04/08/ai-code-is-hollowing-out-open-source-and-maintainers-are-looking-the-other-way.html" rel="alternate" type="text/html" title="AI Code is Hollowing Out Open Source, and Maintainers are Looking the Other Way" /><published>2026-04-08T06:41:00+00:00</published><updated>2026-04-08T06:41:00+00:00</updated><id>https://www.quippd.com/writing/2026/04/08/ai-code-is-hollowing-out-open-source-and-maintainers-are-looking-the-other-way</id><content type="html" xml:base="https://www.quippd.com/writing/2026/04/08/ai-code-is-hollowing-out-open-source-and-maintainers-are-looking-the-other-way.html"><![CDATA[<p><strong>TL;DR</strong>: The advent of AI based, LLM coding applications like Anthropic’s Claude and ChatGPT have prompted maintainers to experiment with integrating LLM contributions into open source codebases.</p>

<p>This is a fast path to open source irrelevancy, since the US copyright office has deemed LLM outputs to be uncopyrightable. This means that as more uncopyrightable LLM outputs are integrated into nominally open source codebases, value leaks out of the project, since the open source licences are not operative on public domain code.</p>

<p>That means that the public domain, AI generated code can be reused without attribution, and in the case of copyleft licences - can even be used in closed source projects.</p>

<p>I made <a href="https://www.youtube.com/watch?v=ARhxmRgLETM">a video</a> if you want to watch instead.</p>

<div class="video-container">
  <lite-youtube videoid="ARhxmRgLETM" playlabel="AI Code Is Breaking Open Source (Here’s How)" style="background-image: url('https://i.ytimg.com/vi/ARhxmRgLETM/hqdefault.jpg');">
    <a href="https://youtube.com/watch?v=ARhxmRgLETM" class="lty-playbtn" title="Play Video">
      <span class="lyt-visually-hidden">Play Video: AI Code Is Breaking Open Source (Here’s How)</span>
    </a>
  </lite-youtube>
</div>

<hr />

<ul id="markdown-toc">
  <li><a href="#copyleft-history" id="markdown-toc-copyleft-history">Copyleft History</a>    <ul>
      <li><a href="#license-choice" id="markdown-toc-license-choice">License Choice</a></li>
    </ul>
  </li>
  <li><a href="#llm-code-is-uncopyrightable" id="markdown-toc-llm-code-is-uncopyrightable">LLM Code is Uncopyrightable</a>    <ul>
      <li><a href="#the-monkey-selfie-copyright-dispute" id="markdown-toc-the-monkey-selfie-copyright-dispute">The Monkey Selfie Copyright Dispute</a>        <ul>
          <li><a href="#copyright-and-llms" id="markdown-toc-copyright-and-llms">Copyright and LLMs</a></li>
        </ul>
      </li>
      <li><a href="#llm-code-and-open-source" id="markdown-toc-llm-code-and-open-source">LLM Code and Open Source</a></li>
    </ul>
  </li>
  <li><a href="#chardet" id="markdown-toc-chardet">chardet</a></li>
  <li><a href="#malus" id="markdown-toc-malus">Malus</a></li>
  <li><a href="#llm-contributions" id="markdown-toc-llm-contributions">LLM Contributions</a></li>
</ul>

<p>Last year, I wrote that <a href="/writing/2025/12/17/AIs-unpaid-debt-how-llm-scrapers-destroy-the-social-contract-of-open-source.html">big tech AI’s gobbling of data was particularly damaging to open source and free culture communities</a>, since by taking advantage of those who share freely, they destroy the bargain that made free software spread like wildfire.</p>

<p>While back then I talked about the <em>communities</em> surrounding open source, the damage has now arrived to the open source projects themselves.</p>

<p>With tools like Anthropic’s Claude and other coding LLMs, contributors are hollowing out open source – and often, the maintainers are gleeful partners in their destruction.</p>

<p>Like in that last post, I’m focusing on projects that use <a href="https://en.wikipedia.org/wiki/Copyleft">copyleft</a> or weak copyleft licenses like the <a href="https://en.wikipedia.org/wiki/GNU_General_Public_License">GPL</a>, <a href="https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License">LGPL</a>, and <a href="https://en.wikipedia.org/wiki/Mozilla_Public_License">MPL</a>. That is because copyleft licenses require <a href="https://en.wikipedia.org/wiki/Copyleft#Reciprocity">reciprocity</a> – they require that derivative works are distributed under the same license terms.</p>

<p>As you know, derivative works are works that use parts of an original work in a new work.</p>

<h2 id="copyleft-history">Copyleft History</h2>

<p>The concept of copyleft was described in Richard Stallman’s <a href="https://www.gnu.org/gnu/manifesto.html">GNU Manifesto</a> in 1985, where he <a href="https://www.gnu.org/gnu/manifesto.html#available">wrote</a>:</p>

<blockquote>
  <p>GNU is not in the public domain. Everyone will be permitted to modify and redistribute GNU, but no distributor will be allowed to restrict its further redistribution. That is to say, proprietary modifications will not be allowed. I want to make sure that all versions of GNU remain free.</p>
</blockquote>

<p>Stallman worked within the framework of existing law to promote this idea, and formalized it in the <a href="https://www.free-soft.org/gpl_history/emacs_gpl.html">Emacs General Public License</a>, which later evolved to the GNU GPL - now one of the most popular free-software licenses.</p>

<p>Copyleft or weak copyleft licences are used for many of the best known open source projects - like Linux, Git, WordPress, VLC, MySQL and Firefox.</p>

<p>Copyleft licenses differ from <a href="https://en.wikipedia.org/wiki/Permissive_software_license">permissive licenses</a> like the BSD, MIT and Apache licenses. Under permissive licenses, there is no requirement for derivative works to be reciprocally licensed. This means that permissive licenses allow derivative works to be closed source.</p>

<p>There is real disagreement in the open source world around license choice. The schism between copyleft and permissive licences is a real one, and there have been years of discussion about which type of license is the right one for a particular project.</p>

<p>Copyleft licenses are sometimes derisively called “viral” - former Microsoft CEO Steve Ballmer <a href="https://web.archive.org/web/20011115003306id_/http://www.suntimes.com/output/tech/cst-fin-micro01.html">famously called Linux a cancer</a>, saying that:</p>

<blockquote>
  <p>Open source is not available to commercial companies. The way the license is written, if you use any open-source software, you have to make the rest of your software open source.</p>
</blockquote>

<p>and</p>

<blockquote>
  <p>Linux is not in the public domain. Linux is a cancer that attaches itself in an intellectual property sense to everything it touches. That’s the way that the license works.</p>
</blockquote>

<p>While <a href="https://www.zdnet.com/article/ballmer-i-may-have-called-linux-a-cancer-but-now-i-love-it/">Ballmer was wrong about Linux</a>, many businesses prefer to avoid copyleft licenses, since they want to be able to not share alike – they want to be able to close their products.</p>

<h3 id="license-choice">License Choice</h3>

<p>While I’m getting into the weeds around license choice, it is interesting to observe the progression of two major open source operating system families - the BSD derivatives and GNU/Linux distributions. BSD developers have prized quality and reliability, and have long felt that they stood apart from the Linux developer community as be being more “free” – since they are more permissively licensed.</p>

<p>As NetBSD explains in <a href="https://www.netbsd.org/about/redistribution.html">Why the NetBSD Project uses a Berkeley-style license</a>:</p>

<blockquote>
  <p>One thing that some people don’t realize about Berkeley-style licenses is that they allow licensees (the users of the licensed work) to sell the code, in any form, with or without modification, and that they make no requirement that licensees give away the source code, even if they’re selling binaries. This provides a striking contrast to the license terms granted by the GNU General Public License, because the GPL requires that, if you’re distributing binaries, you must be willing to give away the sources to build those binaries.</p>

  <p>Those of us working on the NetBSD Project are aware of this distinction, and some even value it. As stated above, we want anyone to be able to use the NetBSD operating system for whatever they want, just as long as they follow the few restrictions made by our license terms. Additionally, we don’t think it’s right to require people who add to our work and want to distribute the results (for profit or otherwise) to give away the source to their additions; they made the additions, and they should be free to do with them as they wish.</p>
</blockquote>

<p>Since commercial vendors can close-source BSD code, it has been used in closed source products like Apple’s macOS and Sony’s Orbis OS (used in its PlayStation consoles since the PS3).</p>

<p>The open source BSD desktop has not progressed as quickly as the Linux desktop has, however. Linux advocates have long argued that the viral nature of the GPL promoted sharing beyond what the BSD license asks. While BSD licenses <em>allow</em> you to share, copyleft licenses <em>enforce</em> sharing. This ends up ensuring that more code is kept open in the Linux world.</p>

<p>As David Wheeler <a href="https://dwheeler.com/blog/2006/09/01/#gpl-bsd">commented</a>:</p>

<blockquote>
  <p>I think there is one primary reason Linux-based systems completely dominate the *BSDs’ market share - Linux uses the protective GPL license, and the *BSDs use the permissive (“BSD-style”) licenses. The BSD license has been a lot of trouble for all the *BSDs, even though they keep protesting that it’s good for them. But look what happens. Every few years, for many years, someone has said, “Let’s start a company based on this BSD code!” BSD/OS in particular comes to mind, but Sun (SunOS) and others have done the same. They pull the *BSD code in, and some of the best BSD developers, and write a proprietary derivative. But as a proprietary vendor, their fork becomes expensive to self-maintain, and eventually the company founders or loses interest in that codebase (BSD/OS is gone; Sun switched to Solaris). All that company work is then lost forever, and good developers were sucked away during that period. Repeat, repeat, repeat. That’s enough by itself to explain why the BSDs don’t maintain the pace of Linux kernel development.</p>
</blockquote>

<p>…</p>

<blockquote>
  <p>BSD license advocates claim that the BSD is more “business friendly”, but if you look at actual practice, that argument doesn’t wash. The GPL has created a “safe” zone of cooperation among companies, without anyone having to sign complicated legal documents. A company can’t feel safe contributing code to the BSDs, because its competitors might simply copy the code without reciprocating. There’s much more corporate cooperation in the GPL’ed kernel code than with the BSD’d kernel code. Which means that in practice, it’s actually been the GPL that’s most “business-friendly”.</p>
</blockquote>

<h2 id="llm-code-is-uncopyrightable">LLM Code is Uncopyrightable</h2>

<p>Some people who use coding LLMs may not know that the output of LLMs are not copyrightable. While commenters will retort that this applies to the American notion of copyright, it is worth remembering that the open source licenses in common use are based on the American notion of copyright.</p>

<p>In the US context, the copyright office has <a href="https://www.copyright.gov/ai/Copyright-and-Artificial-Intelligence-Part-2-Copyrightability-Report.pdf">rightly concluded that LLM outputs cannot be copyrighted</a> as they are not the creative output of a human. They compare LLM outputs to being comparable to work for hire, where you may ask an employee to create some work for you.</p>

<blockquote>
  <p>As the Third Circuit explained, when a person hires someone to execute their expression, “that process must be rote or mechanical transcription that does not require intellectual modification or highly technical enhancement” for the delegating party to claim copyright authorship in the final work. Although entering prompts into a generative AI system can be seen as similar to providing instructions to an artist commissioned to create a work, there are key differences. In a human-to-human collaboration, the hiring party is able to oversee, direct, and understand the contributions of a commissioned human artist. Depending on the nature of each party’s contributions, the artist may be the sole author, or the outcome may be a joint work or work made for hire.</p>
</blockquote>

<p>…</p>

<blockquote>
  <p>Prompts do not appear to adequately determine the expressive elements produced, or control how the system translates them into an output.</p>
</blockquote>

<p>The copyright office says that when an employer directs an artist to create a work, the employer is able to “oversee, direct, and understand the contributions”. Based on the how they each contributed to the work, the artist may be the sole author, or it may end up becoming a joint work, or a work for hire.</p>

<blockquote>
  <p>The Office concludes that, given current generally available technology, prompts alone do not provide sufficient human control to make users of an AI system the authors of the output. Prompts essentially function as instructions that convey unprotectible ideas. While highly detailed prompts could contain the user’s desired expressive elements, at present they do not control how the AI system processes them in generating the output.</p>
</blockquote>

<p>They conclude by saying that there isn’t enough expressive input in the prompts used by humans to instruct the LLMs to generate output that would make it copyrightable. The apparent “creativity” is attributable to the LLM, which is not a human.</p>

<p>Programmers may believe that they have a way out - they can simply test the code, or review it and commit it under their own name - that is certainly creative enough. Unfortunately, not according to the copyright office. The only portions of the work that can be copyrighted are the actual creative work the person has put into the work. If the person changes 10 lines in a 1,000 line changeset, that person holds copyright only to the 10 lines they modified. Everything else is uncopyrightable slop.</p>

<p>A lot of programmers are going to struggle with this, since clearly the code compiles, and it may even be of high quality. The problem is, copyright is not based on whether something works or is desirable, but rather if it is creative - and created by a human.</p>

<h3 id="the-monkey-selfie-copyright-dispute">The Monkey Selfie Copyright Dispute</h3>

<p>We can see this clearly in the case of the <a href="https://en.wikipedia.org/wiki/Monkey_selfie_copyright_dispute">monkey selfie copyright dispute</a>.</p>

<p>In the late 2000s, British wildlife photographer <a href="http://www.djsphotography.co.uk/">David J. Slater</a> traveled to Indonesia, befriended a group of wild macaques, and set up his camera equipment in a way that a monkey selfie might happen. He then reviewed the photos the monkeys took and licensed them commercially. He believed that his action of arranging the scene in a way that that a selfie might be made had imbued the work with enough creative input from him to claim the copyright to the work.</p>

<p>It is a little confusing, so I’m going to say it directly. Mr. Slater didn’t take the photos. Monkeys did.</p>

<p>Unfortunately for Mr. Slater, in August of 2014, the US Copyright office published an opinion to clarify that “only works created by a human can be copyrighted under United States law,” - this “excludes photographs and artwork created by animals or by machines without human intervention”. They went on to say that the [copyright] office would “refuse to register a claim if it determines that a human being did not create the work. The Office will not register works produced by nature, animals, or plants.”</p>

<h4 id="copyright-and-llms">Copyright and LLMs</h4>

<p>If we apply this logic to code produced by LLMs, the human orders the LLM to generate some output. They then examine the output, and consider it to be desirable. They show the code to other people, who also like it – this would be something like code review. If everyone is on the same page that the LLM output was desirable, they are free to use the code for whatever purposes they want.</p>

<p>The one thing they can’t do is copyright it. The only thing they can copyright are the creative inputs they made to the work. If during code review, a human changes a few lines of code, those lines would be copyright the human that wrote or modified the code. If on the other hand, another LLM is doing the code review and modifies some code, it’s all still slop.</p>

<p>Simply examining the code and deciding it is good is like examining the photo that a monkey took – it might be good code, or a good photo, but it wasn’t creative output from a human. Thus, it is uncopyrightable.</p>

<p>What does that mean for the code in question?</p>

<p>If the code is uncopyrightable, it is in the public domain. Since it is in the public domain, anyone is free to use it for any purpose they wish.</p>

<h3 id="llm-code-and-open-source">LLM Code and Open Source</h3>

<p>Unfortunately, this presents a real challenge for open source.</p>

<p>Since the foundations of open source are the copyright regime, people can only release their code under an open source license if they hold the copyright. If the code in question was generated by an LLM with no further creative input (remember that testing isn’t creative input into the work), the code cannot be licensed as anything but public domain. People cannot bind others from using that output for whatever purposes they wish, and people can’t expect that they will abide by terms like reciprocity for derivative works.</p>

<p>This fundamentally destroys the bargain of copyleft licenses – without the requirement of reciprocity, the LLM code acts more like BSD licensed code – people can take it and use it for whatever purpose they wish.</p>

<p>Permissive license aficionados may see no problem here - they pride themselves as being more free then copyleft advocates, and while those licenses often require attribution - letting people know that the code is being used - ignoring that requirement may not bother them a whole lot.</p>

<p>Not so for the copyleft licenses. Those licences specifically bind derivative works to reciprocity – a requirement that cannot be enforced if the code is not copyrightable.</p>

<p>This means that as LLM generated code is incorporated into codebases that call themselves copyleft, value leaks out of the project. Maintainers cannot prevent the LLM code from being incorporated into closed source projects without reciprocity - the license might <em>read</em> GPL, but the code is public domain.</p>

<p>Some open source maintainers either don’t believe this to be true, or don’t understand the law, and have taken it upon themselves to try to avoid the binding strictures of copyleft licenses, and come up with a brilliant solution. They’ll simply command an LLM to produce a nominally “clean room” permissively licensed version of copyleft code.</p>

<h2 id="chardet">chardet</h2>

<p>That is exactly what happened to chardet.</p>

<p>chardet is a library that lets programmers detect the character encoding of content.</p>

<p>The primary contributor and maintainer of chardet for the last 12 years, dan-blanchard used Claude Code with Opus 4.6 (and <a href="https://github.com/chardet/chardet/pull/322">superpowers</a>!) to <a href="https://github.com/chardet/chardet/pull/322">rewrite chardet</a> in less than a week.</p>

<p>As part of the update to version 7.0.0, Blanchard announced that he relicensed the project as MIT, changing from the LGPL license. The LGPL is a copyleft license, and the MIT license is a permissive license.</p>

<p>chardet’s original author (Mark Pilgrim) came out of the woodwork and <a href="https://github.com/chardet/chardet/issues/327">informed the project maintainers that they had no right to relicense the project</a>.</p>

<p>He says:</p>

<blockquote>
  <p>However, it has been brought to my attention that, in the release 7.0.0, the maintainers claim to have the right to “relicense” the project. They have no such right; doing so is an explicit violation of the LGPL. Licensed code, when modified, must be released under the same LGPL license. Their claim that it is a “complete rewrite” is irrelevant, since they had ample exposure to the originally licensed code (i.e. this is not a “clean room” implementation). Adding a fancy code generator into the mix does not somehow grant them any additional rights.</p>

  <p>I respectfully insist that they revert the project to its original license.</p>
</blockquote>

<p><a href="https://github.com/chardet/chardet/issues/327#issuecomment-4005195078">The current maintainer responded to Pilgrim</a> by asserting that they had the right to relicense, since this was not a derivative work of the original chardet - he claimed that the Claude generated code is a so-called “clean-room” implementation.</p>

<p>We’ll come back to that later.</p>

<p>Blanchard also <a href="https://github.com/chardet/chardet/issues/327#issuecomment-4005324385">explained why he tried to relicense the project</a> under a more permissive license – he wanted to be able to include chardet in the Python standard library. The Python standard library needs to be permissively licensed, so chardet’s existing license didn’t qualify. Beyond that, after years of working virtually alone, he wanted some help.</p>

<blockquote>
  <p>About a decade ago, there was talk of trying to include chardet in the Python standard library, because it is a dependency of nearly every Python project. (I would dig up the Twitter thread but I deleted my account since then. I would be happy for anyone to point me to it if they have it.) Anyway, we couldn’t move forward with it because the standard library code has to be a more lenient license like MIT or BSD.</p>

  <p>As the years of maintaining this project have gone on, the more and more I’ve added to it and made major changes to it, the more I’ve wanted it to become more than just a one-man shop. My main goal with relicensing is to encourage more contribution either through trying to submit it to the standard library, or just by having more people work on it who might avoid LGPL projects for whatever reason.</p>
</blockquote>

<p>GitHub user Ratfink pointed out a teensy problem with that second motivation, <a href="https://github.com/chardet/chardet/issues/327#issuecomment-4005674356">saying</a>:</p>

<blockquote>
  <p>Now that the project has eradicated all past contributions from human developers, why would I ever decide to start contributing? I can only assume my efforts would be similarly disrespected at some future date.</p>
</blockquote>

<p>I said the same thing a while back about the <a href="/writing/2025/12/08/mozillas-betrayal-of-open-source-googles-gemini-ai-is-overwriting-volunteer-work-on-support-mozilla.html" title="Mozilla's Betrayal of Open Source: Google's Gemini AI is Overwriting Volunteer Work on Support Mozilla">the way Mozilla disrespected their volunteer localization community</a>.</p>

<p>Blanchard explained his thoughts on why the newly licensed code was a “clean-room” implementation.</p>

<p>To catch you up, a clean-room design is where a team will copy a design by reverse engineering it and recreating it without infringing on the copyrights associated with the original design. This usually means that the people doing the reverse engineering can’t have ever seen the original, copyrighted design.</p>

<p>For example, the Wine project <a href="https://gitlab.winehq.org/wine/wine/-/wikis/Developer-FAQ#who-cant-contribute-to-wine">disallows</a> “anyone who has seen Microsoft Windows source code (either stolen, under an NDA, disassembled, or otherwise)” to work on the project. They have a set of <a href="https://gitlab.winehq.org/wine/wine/-/wikis/Clean-Room-Guidelines">clean room guidelines</a> to help contributors understand the types of techniques they can use to reverse engineer Windows features - all to ensure that they are in a legally defensible place.</p>

<p>Clean-room designs are a legally defensible way to copy a work, so it makes sense that Blanchard would argue that the new code was developed in a clean room.</p>

<p>While I’m not going to get into weeds about whether or not it makes sense to talk about a clean-room design when Claude is virtually guaranteed to have the original chardet corpus in its training data, others have figured out that they can provide a clean-room design as a service.</p>

<h2 id="malus">Malus</h2>

<p>Enter <a href="https://malus.sh">Malus</a>.</p>

<p>Malus offers a clean room as a service.</p>

<p>They claim that their “proprietary AI robots independently recreate any open source project from scratch”, resulting in new code with corporate-friendly licensing. As stated by their tagline, they “Liberate Open Source” from obligations like attribution or copyleft.</p>

<p>There’s a bunch of detail on the site about how the “liberation” works, complete with a bunch of testimonials from companies successfully generating clean-room, non-copyleft versions of open source projects.</p>

<p>Some of their FAQ entries are openly hostile to open source developers, like this one:</p>

<blockquote>
  <p>What about the original developers?</p>

  <p>They made their choice when they released their code as “open source.” We’re simply exercising our right to independently implement the same functionality. If they wanted compensation, they should have worked for a corporation.</p>
</blockquote>

<p>and in another one, where they claim to be able to free code from any license:</p>

<blockquote>
  <p>What licenses can you eliminate?</p>

  <p>All of them. MIT, Apache, GPL, AGPL, LGPL, BSD, MPL—if it has terms, we can liberate you from them. Special rush pricing available for AGPL emergencies.</p>
</blockquote>

<p>Back to reality.</p>

<p>Malus is a parody, but its homonym describes perfectly what LLM contributions or recreations of copyleft projects do to the original projects - pure malice. Hobbyists and practitioners released copyleft code with the expectation that their contributions would remain free forever, with the stipulation that modifications to their code would also remain free forever.</p>

<h2 id="llm-contributions">LLM Contributions</h2>

<p>If copyleft codebases accept public domain AI generated code into their codebases, they are signing up to hollow out their projects from the inside out. The provisions of the copyleft license listed in the repository are no longer operative for the LLM generated code, so projects can no longer enforce attribution or reciprocity.</p>

<p>That leaves the license to be a lie, and every contributor who contributed under the original license is being robbed, as those contributions were released under the stipulation that derivative works based on their work would also remain free. With LLM contributions, that is no longer the case.</p>

<p>While everyone may not feel strongly that they are being wronged, many will – contributors could have chosen to contribute to permissively licensed codebases, but instead decided to contribute to copyleft codebases. For many, the license is an incentive, and they feel strongly that copyleft is enforced. With the acceptance of AI generated slop into copyleft codebases, maintainers are changing the terms of the project - sometimes decades after people originally contributed.</p>

<p>As Malus shows us, this is not good for open source. If the reciprocal provisions of copyleft licenses can no longer be enforced, it may mean that people will share less. People may not bother contributing to a project that says it is copylefted, but devalues its own contributors by being willing to violate the license to accept AI slop.</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can
<a href="https://mastodon.social/@yoasif">message me</a> or follow
<a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="ai" /><category term="open-source" /><category term="llm" /><summary type="html"><![CDATA[TL;DR: The advent of AI based, LLM coding applications like Anthropic’s Claude and ChatGPT have prompted maintainers to experiment with integrating LLM contributions into open source codebases.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/AI-CODE.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/AI-CODE.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Link Preview Manifest: A Proposal for the Fediverse</title><link href="https://www.quippd.com/writing/2026/03/09/link-preview-manifest-a-proposal-for-the-fediverse.html" rel="alternate" type="text/html" title="Link Preview Manifest: A Proposal for the Fediverse" /><published>2026-03-09T00:40:00+00:00</published><updated>2026-03-09T00:40:00+00:00</updated><id>https://www.quippd.com/writing/2026/03/09/link-preview-manifest-a-proposal-for-the-fediverse</id><content type="html" xml:base="https://www.quippd.com/writing/2026/03/09/link-preview-manifest-a-proposal-for-the-fediverse.html"><![CDATA[<p><strong>TL;DR</strong>: Starting in Firefox version 142, Mozilla released a “Link Previews” <a href="/writing/2026/01/06/architecting-consent-for-ai-deceptive-patterns-in-firefox-link-previews.html">feature whose main purpose is to push AI onto its users</a>.</p>

<p>While the feature is <a href="/writing/2026/01/06/architecting-consent-for-ai-deceptive-patterns-in-firefox-link-previews.html#deceptive-patterns">problematic</a>, commenters pointed out that some previews are helpful – e.g. on Wikipedia, <a href="https://www.reddit.com/r/firefox/comments/1quzqli/firefox_users_can_block_generative_ai_features_in/o3f9eao/">where a preview will appear when people hover over a wiki-linked page</a>.</p>

<figure>
  <picture>
    <source srcset="https://www.quippd.com/assets/images/preview-Wikipedia.webp" type="image/webp" />
    <img src="https://www.quippd.com/assets/images/preview-Wikipedia.png" alt="Screenshot of a link preview of the Fediverse page on Wikipedia" />
  </picture>
  <figcaption>A wiki-native link preview on Wikipedia</figcaption>
</figure>

<p>Other commenters <a href="https://fosstodon.org/@krosylight/116009035665007564">pondered about some minimal way to replicate this elsewhere</a>, and it seemed to be worth investigation. Read on as I propose an enhancement to the Fediverse (and maybe even web standards) to make Link Previews great: the <em>Link Preview Manifest</em>.</p>

<p>No video for this post, since I was boring <em>myself</em> as I recorded.</p>

<hr />

<ul id="markdown-toc">
  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
  <li><a href="#link-preview-manifest" id="markdown-toc-link-preview-manifest">Link Preview Manifest</a>    <ul>
      <li><a href="#discovery-mechanism" id="markdown-toc-discovery-mechanism">Discovery Mechanism</a>        <ul>
          <li><a href="#http-headers" id="markdown-toc-http-headers">HTTP Headers</a></li>
          <li><a href="#guessed-fallback" id="markdown-toc-guessed-fallback">Guessed Fallback</a></li>
          <li><a href="#link-in-html" id="markdown-toc-link-in-html">Link in HTML</a></li>
        </ul>
      </li>
      <li><a href="#preview-file" id="markdown-toc-preview-file">Preview File</a></li>
      <li><a href="#examples" id="markdown-toc-examples">Examples</a>        <ul>
          <li><a href="#article-with-preview-image" id="markdown-toc-article-with-preview-image">Article With Preview Image</a></li>
          <li><a href="#image-gallery" id="markdown-toc-image-gallery">Image Gallery</a></li>
          <li><a href="#video" id="markdown-toc-video">Video</a></li>
          <li><a href="#storage" id="markdown-toc-storage">Storage</a></li>
        </ul>
      </li>
      <li><a href="#client-flow" id="markdown-toc-client-flow">Client Flow</a>        <ul>
          <li><a href="#step-1-header-based-discovery" id="markdown-toc-step-1-header-based-discovery">Step 1: Header-based Discovery</a></li>
          <li><a href="#step-2-fallback-discovery" id="markdown-toc-step-2-fallback-discovery">Step 2: Fallback Discovery</a></li>
          <li><a href="#step-3-fetch-the-link-preview-manifest" id="markdown-toc-step-3-fetch-the-link-preview-manifest">Step 3: Fetch the Link Preview Manifest</a></li>
          <li><a href="#step-4-verify-integrity" id="markdown-toc-step-4-verify-integrity">Step 4: Verify Integrity</a></li>
          <li><a href="#step-5-cache" id="markdown-toc-step-5-cache">Step 5: Cache</a></li>
          <li><a href="#step-6-parse-and-render" id="markdown-toc-step-6-parse-and-render">Step 6: Parse and Render</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><a href="#conclusion" id="markdown-toc-conclusion">Conclusion</a></li>
</ul>

<h2 id="introduction">Introduction</h2>

<p>Link previews are seemingly one of those web features that mostly work – until they they start to scale, and you need to figure out how the sausage is made.</p>

<p>The Firefox implementation shows why. There, generating a preview means <a href="https://blog.mozilla.org/en/firefox/firefox-ai/ai-link-previews-firefox/">retrieving a page’s HTML and parsing it</a>, discarding most of what was downloaded. Firefox is just one client, though.</p>

<p>In federated systems, where a single link can fan out across thousands of timelines and clients, this behavior can <a href="https://en.wikipedia.org/wiki/ActivityPub#Accidental_denial-of-service_attacks">accidentally lead to distributed denial-of-service (DDOS) attacks</a>, as <a href="https://itsfoss.com/news/mastodon-link-problem/">observed by publishers using Mastodon</a>.</p>

<p>In a 2024 article, It’s FOSS <a href="https://itsfoss.com/news/mastodon-link-problem/">asked people to not share their links on Mastodon</a>, explaining that:</p>

<blockquote>
  <p>When you share a link on Mastodon, a link preview is generated for it, right?</p>

  <p>With Mastodon being a federated platform (a part of the Fediverse), the request to generate a link preview is not generated by just one Mastodon instance. There are many instances connected to it who also initiate requests for the content almost immediately.</p>

  <p>And, this “fediverse effect” increases the load on the website’s server in a big way.</p>

  <p>Sure, some websites may not get overwhelmed with the requests, but Mastodon does generate numerous hits, increasing the load on the server. Especially, if the link reaches a profile with more followers (and a broader network of instances).</p>
</blockquote>

<p>Things have not improved much since then.</p>

<p>Link Previews as generated by most user agents are expensive to create, since many of the pages being previewed are generated dynamically, increasing resource usage and page generation time.</p>

<p>There’s got to be a better way, and in this post, I am proposing one: Link Preview Manifest.</p>

<p>Please steal this idea if it is good!</p>

<h2 id="link-preview-manifest">Link Preview Manifest</h2>

<p>A <em>Link Preview Manifest</em> is a small, cacheable resource that provides preview-specific metadata for a URL without requiring clients to fetch or parse the full HTML document.</p>

<p>Publishing software can generate this resource whenever the previewed document is created or updated <em>once</em> and it can be stored as a static file that does not need to be regenerated for each link preview request.</p>

<h3 id="discovery-mechanism">Discovery Mechanism</h3>

<h4 id="http-headers">HTTP Headers</h4>

<p>User agents can request a preview for a URI via a call to <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/HEAD">get the HEAD</a> of a URI:</p>

<div class="language-http highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">HEAD https://example.com/posts/hello-world/
</span></code></pre></div></div>

<p>User agents would receive some headers in response.</p>

<div class="language-http highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Link</span><span class="p">:</span> <span class="s">&lt;https://example.com/posts/hello-world/index.preview.json&gt;; rel="link-preview"</span>
<span class="na">Link-Preview</span><span class="p">:</span> <span class="s">available</span>
<span class="na">Cache-Control</span><span class="p">:</span> <span class="s">max-age=86400</span>
</code></pre></div></div>

<p>Upon receipt of the URI’s HTTP headers, user agents should inspect the headers for a <code class="language-plaintext highlighter-rouge">Link</code> relation advertising a preview resource. If a resource is advertised, the user agent can <code class="language-plaintext highlighter-rouge">GET</code> the preview resource, rather than the URI being previewed.</p>

<p>This separates discovery from retrieval and avoids the expense of page generation and transfer. This differs from the existing solutions, which require user agents to GET the entire page to parse link preview metadata.</p>

<p>The <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Link"><code class="language-plaintext highlighter-rouge">Link</code> header</a> is used since it already provides a standardized mechanism for advertising related resources.</p>

<h4 id="guessed-fallback">Guessed Fallback</h4>

<p>While the primary discovery mechanism for link previews is Link header metadata, user agents can also look for previews in the page URI + <code>.preview.json</code></p>

<h4 id="link-in-html">Link in HTML</h4>

<p>If publishers can’t set headers, they can instead define link previews as <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/link">external resources</a>:</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"link-preview"</span> <span class="na">href=</span><span class="s">"index.preview.json"</span> <span class="na">type=</span><span class="s">"application/link-preview+json"</span><span class="nt">&gt;</span>
</code></pre></div></div>

<p>This is a secondary fallback, in situations where the publisher is on shared hosting or cannot update web server behavior to support updating Link headers.</p>

<h3 id="preview-file">Preview File</h3>

<p>The preview JSON file is a small, cacheable and verifiable representation of a web resource, intended for link previews in clients. Its purpose is to allow clients to render previews without needing to download the actual resource, and supports identity verification for safe caching and federation.</p>

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Required</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">version</code></td>
      <td>integer</td>
      <td>✅</td>
      <td>Version of the link preview spec.</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">title</code></td>
      <td>string</td>
      <td>✅</td>
      <td>Human-readable headline or title of the content.</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">description</code></td>
      <td>string</td>
      <td>✅</td>
      <td>Short, plain-text summary of the resource.</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">url</code></td>
      <td>string</td>
      <td>✅</td>
      <td>Canonical URL of the resource; clients use this as the primary link target.</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">site</code></td>
      <td>object</td>
      <td>✅</td>
      <td>Information about the site hosting the content. Contains: <br />• <code class="language-plaintext highlighter-rouge">name</code> (string, required) — site or provider name<br />• <code class="language-plaintext highlighter-rouge">url</code> (string, optional) — link to site home</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">type</code></td>
      <td>string</td>
      <td>✅</td>
      <td>Resource type (<code class="language-plaintext highlighter-rouge">article</code>, <code class="language-plaintext highlighter-rouge">video</code>, <code class="language-plaintext highlighter-rouge">photo</code>, <code class="language-plaintext highlighter-rouge">link</code>, <code class="language-plaintext highlighter-rouge">rich</code>) - helps clients render appropriately.</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">published</code></td>
      <td>string (ISO 8601)</td>
      <td>❌</td>
      <td>Publication date of the resource. Useful for displaying timestamps.</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">images</code></td>
      <td>array of objects</td>
      <td>❌</td>
      <td>Array of preview images. Each object may include:<br />• <code class="language-plaintext highlighter-rouge">url</code> (string, required)<br />• <code class="language-plaintext highlighter-rouge">width</code> (integer, optional)<br />• <code class="language-plaintext highlighter-rouge">height</code> (integer, optional)<br />• <code class="language-plaintext highlighter-rouge">integrity</code> (string, optional, SRI hash)</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">video</code></td>
      <td>object</td>
      <td>❌</td>
      <td>Optional video preview. May include:<br />• <code class="language-plaintext highlighter-rouge">url</code> (string, required)<br />• <code class="language-plaintext highlighter-rouge">width</code> / <code class="language-plaintext highlighter-rouge">height</code> (integers)<br />• <code class="language-plaintext highlighter-rouge">duration</code> (integer, seconds)<br />• <code class="language-plaintext highlighter-rouge">integrity</code> (string, optional)</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">cache</code></td>
      <td>object</td>
      <td>❌</td>
      <td>Caching hints for clients and CDNs. Example: <code class="language-plaintext highlighter-rouge">{"max_age": 86400}</code> (seconds).</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">integrity</code></td>
      <td>string</td>
      <td>❌</td>
      <td>SRI hash of resource, allowing clients to verify authenticity. Applies to:<br />• <code class="language-plaintext highlighter-rouge">images</code> (string, optional)<br />• entire file (string, optional)</td>
    </tr>
  </tbody>
</table>

<h3 id="examples">Examples</h3>

<h4 id="article-with-preview-image">Article With Preview Image</h4>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"version"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
  </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"article"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Why Link Previews Should Be Explicit"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"An argument for a lightweight web standard that avoids HTML scraping and supports federation."</span><span class="p">,</span><span class="w">
  </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/blog/explicit-link-previews"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"site"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example Blog"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"published"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2026-02-09T12:00:00Z"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"images"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/media/explicit-previews.jpg"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">1200</span><span class="p">,</span><span class="w">
      </span><span class="nl">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">630</span><span class="p">,</span><span class="w">
      </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa="</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">],</span><span class="w">
  </span><span class="nl">"cache"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"max_age"</span><span class="p">:</span><span class="w"> </span><span class="mi">86400</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb="</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h4 id="image-gallery">Image Gallery</h4>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"version"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
  </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"photo"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Weekend in Kyoto"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A short photo set from a weekend trip to Kyoto."</span><span class="p">,</span><span class="w">
  </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/photos/kyoto-weekend"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"site"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example Photos"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"images"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/media/kyoto-1.jpg"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">1080</span><span class="p">,</span><span class="w">
      </span><span class="nl">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1080</span><span class="p">,</span><span class="w">
      </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-ccccccccccccccccccccccccccccccccccccccccccc="</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/media/kyoto-2.jpg"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">1080</span><span class="p">,</span><span class="w">
      </span><span class="nl">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1080</span><span class="p">,</span><span class="w">
      </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-ddddddddddddddddddddddddddddddddddddddddddd="</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/media/kyoto-3.jpg"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">1080</span><span class="p">,</span><span class="w">
      </span><span class="nl">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1080</span><span class="p">,</span><span class="w">
      </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee="</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">],</span><span class="w">
  </span><span class="nl">"cache"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"max_age"</span><span class="p">:</span><span class="w"> </span><span class="mi">43200</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-fffffffffffffffffffffffffffffffffffffffffff="</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h4 id="video">Video</h4>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"version"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
  </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"video"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Federation Without Scraping"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A short talk on making link previews cheaper and safer for the fediverse."</span><span class="p">,</span><span class="w">
  </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/videos/federation-without-scraping"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"site"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example Videos"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"images"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/media/video-poster.jpg"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">1280</span><span class="p">,</span><span class="w">
      </span><span class="nl">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">720</span><span class="p">,</span><span class="w">
      </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-1111111111111111111111111111111111111111111="</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">],</span><span class="w">
  </span><span class="nl">"video"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/media/federation-talk.mp4"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">1280</span><span class="p">,</span><span class="w">
    </span><span class="nl">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">720</span><span class="p">,</span><span class="w">
    </span><span class="nl">"duration"</span><span class="p">:</span><span class="w"> </span><span class="mi">315</span><span class="p">,</span><span class="w">
    </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-2222222222222222222222222222222222222222222="</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"cache"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"max_age"</span><span class="p">:</span><span class="w"> </span><span class="mi">86400</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"integrity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sha256-3333333333333333333333333333333333333333333="</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h4 id="storage">Storage</h4>

<p>Preview files can be generated statically as separate <code class="language-plaintext highlighter-rouge">.preview.json</code> files per page. These files can be generated at build time, alongside HTML.</p>

<p>On disk, this would look like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/article/index.html
/article/index.preview.json
</code></pre></div></div>

<h3 id="client-flow">Client Flow</h3>

<h4 id="step-1-header-based-discovery">Step 1: Header-based Discovery</h4>

<p>When a client wants to get link preview metadata:</p>

<ul>
  <li>Perform a <code class="language-plaintext highlighter-rouge">HEAD</code> request to the URL.</li>
  <li>Look for a Link header with rel=”link-preview”.</li>
</ul>

<p>Example:</p>

<div class="language-http highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">Link: &lt;https://example.com/article/index.preview.json&gt;;
      rel="link-preview";
      type="application/link-preview+json"
</span></code></pre></div></div>

<p>If found, proceed to step 3.</p>

<h4 id="step-2-fallback-discovery">Step 2: Fallback Discovery</h4>

<p>If a link header is not present in <code class="language-plaintext highlighter-rouge">HEAD</code>, user agents can try (in order):</p>

<ul>
  <li>Predictable adjacent file
    <ul>
      <li>Example: <code class="language-plaintext highlighter-rouge">https://example.com/article/index.preview.json</code></li>
    </ul>
  </li>
  <li>HTML <kbd>&lt;link&gt;</kbd> element
    <ul>
      <li>Example: <code class="language-plaintext highlighter-rouge">&lt;link rel="link-preview" href="index.preview.json"&gt;</code></li>
    </ul>
  </li>
</ul>

<p>Clients should stop once they successfully discover the manifest file.</p>

<h4 id="step-3-fetch-the-link-preview-manifest">Step 3: Fetch the Link Preview Manifest</h4>

<p>Now that we know where the manifest is located, we can download it.</p>

<ul>
  <li>Do a <code class="language-plaintext highlighter-rouge">GET</code> on the discovered link preview manifest</li>
  <li>Output:
    <ul>
      <li>Content-Type: application/link-preview+json</li>
      <li>a small JSON file</li>
    </ul>
  </li>
</ul>

<h4 id="step-4-verify-integrity">Step 4: Verify Integrity</h4>

<p>If present, clients can verify the <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Defenses/Subresource_Integrity">Subresource Integrity</a> hash. If fetching media resources, individual hashes can be verified.</p>

<p>If verification fails, clients may fall back to parsing the page.</p>

<h4 id="step-5-cache">Step 5: Cache</h4>

<p>Clients should respect HTTP caching headers to minimize load on publishers.</p>

<h4 id="step-6-parse-and-render">Step 6: Parse and Render</h4>

<p>At this point, the client has the Link Preview Manifest containing the information that would previously have been manually parsed from page HTML. As we now have a manifest that encapsulates this data in a verifiable way, we can avoid parsing of page data.</p>

<h2 id="conclusion">Conclusion</h2>

<p>The way that web developers currently do link previews are inefficient and wasteful, and advantages big tech players like Facebook and X, since they are centralized and can easily absorb the costs associated with scraping pages.</p>

<p>The web deserves a better way: preview data that is explicit, lightweight, cacheable, and verifiable. By separating preview metadata from page content, clients can get and share metadata without forcing web servers into expensive page generation.</p>

<p>This proposal extends the web incrementally - advanced hosts can advertise Link Preview Manifests via page headers, while simpler setups can rely on predictible locations and fallbacks linked from HTML. Clients can adopt the standard incrementally without needing to throw away their existing functionality. The standard itself can be versioned to meet forthcoming needs.</p>

<p>It doesn’t make sense for publishers to not want their content posted on Mastodon because it causes their web servers to buckle under the strain. As more and more clients generate link previews, we can help scale the federated web by making link metadata cheap to advertise, transfer and consume.</p>

<p>Importantly, this approach does not require new infrastructure. It works with static site generators, shared hosting, CDNs, and existing HTTP semantics. Advanced hosts can benefit from cheap discovery via headers, while simpler setups can rely on predictable file locations and HTML fallbacks. Clients can adopt it incrementally and fall back to legacy scraping when necessary.</p>

<p>Subresource Integrity makes it possible to federate previews without centralized trust or authentication, allowing instances to cache and redistribute previews confidently. Combined with aggressive caching and small payloads, this shifts link previews from a repeated scraping problem into a solved distribution problem.</p>

<p>If link previews are going to remain a foundational part of the federated web, they should be treated as first-class resources. Making them explicit is a small change, but one that moves us toward a more resilient and scalable web.</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can
<a href="https://mastodon.social/@yoasif">message me</a> or follow
<a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="firefox" /><category term="mozilla" /><summary type="html"><![CDATA[TL;DR: Starting in Firefox version 142, Mozilla released a “Link Previews” feature whose main purpose is to push AI onto its users.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/link-preview-manifest.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/link-preview-manifest.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Firefox’s AI Kill Switch is a Trap: How Mozilla Made AI Your Problem</title><link href="https://www.quippd.com/writing/2026/02/09/firefoxs-ai-kill-switch-is-a-trap-how-mozilla-made-ai-your-problem.html" rel="alternate" type="text/html" title="Firefox’s AI Kill Switch is a Trap: How Mozilla Made AI Your Problem" /><published>2026-02-09T15:55:00+00:00</published><updated>2026-02-09T15:55:00+00:00</updated><id>https://www.quippd.com/writing/2026/02/09/firefoxs-ai-kill-switch-is-a-trap-how-mozilla-made-ai-your-problem</id><content type="html" xml:base="https://www.quippd.com/writing/2026/02/09/firefoxs-ai-kill-switch-is-a-trap-how-mozilla-made-ai-your-problem.html"><![CDATA[<p><strong>TL;DR</strong>: Mozilla recently released <strong>AI controls</strong> for Firefox: a single
control panel that lets people disable AI features in the browser or pick and
choose which to leave on. On the surface, this sounds like a win for user choice
in an era of AI-everything.</p>

<p>If we dig deeper, you can start to see that the kill switch isn’t the whole
story. This feature acts like an <em>accountability sink</em>. By giving you an
off-switch, Mozilla’s leadership shifts the ethical burden of AI onto the user -
turning their design choices into your responsibility.</p>

<p>I made <a href="https://www.youtube.com/watch?v=51hXnOi8G4g">a video</a> if you
want to watch instead.</p>

<div class="video-container">
  <lite-youtube videoid="51hXnOi8G4g" playlabel="Firefox's AI Kill Switch is a Trap: How Mozilla Made AI Your Problem" style="background-image: url('https://i.ytimg.com/vi/51hXnOi8G4g/hqdefault.jpg');">
    <a href="https://youtube.com/watch?v=51hXnOi8G4g" class="lty-playbtn" title="Play Video">
      <span class="lyt-visually-hidden">Play Video: Firefox's AI Kill Switch is a Trap: How Mozilla Made AI Your Problem</span>
    </a>
  </lite-youtube>
</div>

<hr />

<ul id="markdown-toc">
  <li><a href="#the-ai-kill-switch" id="markdown-toc-the-ai-kill-switch">The AI Kill Switch</a>    <ul>
      <li><a href="#why" id="markdown-toc-why">Why</a></li>
    </ul>
  </li>
  <li><a href="#ai-powered-translations" id="markdown-toc-ai-powered-translations">AI Powered Translations</a></li>
  <li><a href="#a-distraction---by-design" id="markdown-toc-a-distraction---by-design">A Distraction - By Design</a></li>
  <li><a href="#reframing-the-debate-on-ai" id="markdown-toc-reframing-the-debate-on-ai">Reframing the Debate on AI</a></li>
  <li><a href="#mozillas-betrayal-of-open-source" id="markdown-toc-mozillas-betrayal-of-open-source">Mozilla’s Betrayal of Open Source</a></li>
  <li><a href="#opportunity-costs" id="markdown-toc-opportunity-costs">Opportunity Costs</a></li>
  <li><a href="#mozillas-ai-future" id="markdown-toc-mozillas-ai-future">Mozilla’s AI Future</a></li>
</ul>

<h2 id="the-ai-kill-switch">The AI Kill Switch</h2>

<p>Mozilla’s AI controls launch in Firefox 148. It consists of a “Block AI
enhancements” toggle that promises to disable current and future AI features in
the browser. The options can also be toggled individually, to allow people to
enable some but not all AI features. I tested the kill switch as soon as it
appeared in Nightly, and it works pretty much like you might expect.</p>

<p>That is supposed to be the end of the conversation – it does what it was
designed to do.</p>

<p>Mozilla frames the feature as giving users control over their browsing
experience. In doing so, Mozilla is trying to reframe the debate around AI in
Firefox as a question of optionality - are the features opt-in? Are they
opt-out? Do users have choice?</p>

<h3 id="why">Why</h3>

<p>Mozilla introduced the kill switch to sidestep the concerns the Firefox
community has voiced over AI and large language models.</p>

<p>Just two days after new Mozilla CEO Anthony Enzor-DeMeo’s
<a href="https://blog.mozilla.org/en/mozilla/leadership/mozillas-next-chapter-anthony-enzor-demeo-new-ceo/" title="Mozilla Blog: Mozilla’s next chapter: Building the world’s most trusted software company">introductory post announcing that Firefox would evolve into a modern AI browser</a>
(as they focus on becoming “the trusted software company”), Mozilla quickly
tried to change the topic, with the
<a href="https://mastodon.social/@firefoxwebdevs/with_replies"><em>Firefox for Web Developers</em></a>
Mastodon account promising that
“<a href="https://mastodon.social/@firefoxwebdevs/115740500373677782">Firefox will have an option to completely disable all AI features</a>”.</p>

<p>By shifting the conversation away from whether Firefox should become an AI
browser at all to questions about user choice, Mozilla staff now spends a lot of
time pontificating about
<a href="https://mastodon.social/@firefoxwebdevs/116056951079877949">whether features are truly opt-in or not</a>,
and whether
<a href="https://mastodon.social/@firefoxwebdevs/116003456570390661">certain types of LLMs count as AI</a>.</p>

<p>It is obvious what is happening here - Mozilla is shifting the burden of
responsibility of choice to its users, and is excusing itself of it entirely.</p>

<p>What Mozilla is telling us is that AI is good actually, and while isn’t great
that a large portion of their userbase doesn’t like it, it is up to them to
avoid it.</p>

<h2 id="ai-powered-translations">AI Powered Translations</h2>

<p>As part of the community outreach around the kill switch, Mozilla staff
<a href="https://mastodon.social/@firefoxwebdevs/115849251057488746">surveyed the Mastodon community</a>,
asking whether translation features in Firefox ought to be affected by the kill
switch.</p>

<p>Mozilla staff said that the on-device translation models shipped in Firefox were
trained on open data, and 49% of voters responded that Firefox should allow
users to re-enable translations, even if other AI features were disabled.</p>

<p>It’s easy to understand the rationale here. If you know about how the AI models
are made,
<a href="https://committees.parliament.uk/writtenevidence/126981/html/" title="OpenAI written evidence for UK House of Lords Communications and Digital Select Committee inquiry: Large language models">you know that they are built on large-scale piracy</a>.
Big Tech companies have gone out and scraped as much content as they can get
their hands on - legally or illegally (and it is mostly illegally). By saying
that the translation models are trained on open data, Mozilla is in effect
saying that this is “good AI” – not the AI that is built on piracy.</p>

<p>In just one recent example, Claude owner Anthropic
<a href="https://www.npr.org/2025/09/05/g-s1-87367/anthropic-authors-settlement-pirated-chatbot-training-material" title="Anthropic to pay authors $1.5B to settle lawsuit over pirated chatbot training material">recently agreed to pay $1.5 billion to settle a lawsuit</a>
over their piracy of books. Incidentally, Anthropic is also one of the vendors
featured in Firefox’s AI chatbot sidebar feature.</p>

<p>So the concerns are real and known, so Mozilla is taking people’s concerns
seriously when they engage both in the kill switch and in conversations about
the ethics of LLM piracy.</p>

<p>Right?</p>

<p>That would be accurate, if it were true that Mozilla’s translation models were
trained on open data. Given how
<a href="https://youtu.be/51hXnOi8G4g?t=217">Mozilla has been talking up open source AI</a>,
it would make sense if Mozilla was practicing what it preached.</p>

<p>After all, Mozilla is the same company that garnered community contributions for
<a href="https://commonvoice.mozilla.org">Common Voice</a>. Common Voice is an open source
data set of speech data of over 130 languages, all contributed by members of the
community, including myself. That data is available to download on Mozilla’s
<a href="https://datacollective.mozillafoundation.org/datasets" title="Mozilla Data Collective: Datasets">Data Collective</a>.</p>

<p>Given that history, I first looked at Mozilla’s Data Collective to find the open
data that Mozilla staff was referring to.</p>

<p>I wasn’t able to find it, so I looked closer at the
<a href="https://mozilla.github.io/translations/docs/" title="Mozilla Translations: Training Pipeline">public docs for translations</a>.
Mozilla states that they use <a href="https://opus.nlpl.eu/">OPUS</a> as their
<a href="https://mozilla.github.io/translations/docs/contributing/" title="Mozilla Translations: How to Contribute">main resource</a>
for translation datasets.</p>

<p>A quick look at the <a href="https://opus.nlpl.eu/corpora">Opus Corpora</a> reveals that
most of the datasets are not permissively licensed. Instead, they are scraped
from copyrighted web sources, exactly like the big tech AI companies.</p>

<p>Why is Mozilla claiming that their models are open when they know that they
aren’t? It isn’t as if Mozilla doesn’t know that open data exists – they
actually host a repository of it.</p>

<h2 id="a-distraction---by-design">A Distraction - By Design</h2>

<p>It isn’t just that Mozilla is lying to us about the provenance of the data used
in the translation engine - they are using the lie to sideline community members
concerned about Mozilla co-signing the theft of the commons.</p>

<p>Mozilla says that
<a href="https://mastodon.social/@firefoxwebdevs/115849316325143364">there is uncertainty about whether the translation engine is AI</a> -
as if people are having a discussion about semantics.</p>

<p>Mozilla seems to imagine that people don’t like AI because what it is called,
not because of how it works.</p>

<p>In their post, Mozilla specifically says that the translation engine is trained
on open data. This is untrue. They then use this lie to convince people that
Mozilla is somehow doing “good AI” like they are promoting elsewhere – this
isn’t the bad pirated AI, this is good, homegrown AI.</p>

<p>Mozilla is saying “Hey, if you hate AI so much that even pure and good (and
optional) AI isn’t good enough for you, we’ll let you disable it. We don’t
really understand why you would want to, since it is clearly so good, but we’ll
let you opt-out anyway.”</p>

<p>The implication is that the AI kill switch exists to protect the sensibilities
of whiny Luddites, rather than to distract from Mozilla’s own failings.</p>

<p>When people later pointed out that the Mozilla’s translation models don’t
qualify as open data, Mozilla
<a href="https://mastodon.social/@firefoxwebdevs/115854287318814153">apologized</a> but
says that they “don’t think it impacts the results”.</p>

<p>Right.</p>

<h2 id="reframing-the-debate-on-ai">Reframing the Debate on AI</h2>

<p>With the AI kill switch, Mozilla is attempting to reframe the debate on AI as a
question of user choice, rather than a positive vision of Mozilla’s space in the
industry.</p>

<p>While Mozilla has long claimed to help people break free from big tech, their
latest moves have the company joining with big tech to work against their
community.</p>

<p>While features like AI powered tab grouping and link previews might have limited
utility, their uselessness help to limit the damage they do to the browser and
the broader web ecosystem.</p>

<p>AI powered assistive image descriptions and translations are features that are
useful to at least some segment of the userbase, but their usefulness are borne
from the fact that they are reliant on pirated data sets.</p>

<p>The model for Firefox’s AI powered image description generator was
<a href="https://blog.mozilla.org/en/firefox/firefox-ai/help-us-improve-our-alt-text-generation-model/" title="Mozilla Blog: Help us improve our alt text generation model">partially trained by OpenAI’s GPT4-o</a>,
which itself is trained on pirated datasets.</p>

<p>Mozilla Translations is also trained on non-public domain data sets.</p>

<p>The fact that LLMs based on pirated data sets are useful is not an accident, or
surprising. It would have been commendable if Mozilla had managed to train new
translation models without needing to steal from the commons, like big tech has.</p>

<p>By obfuscating the source of the training data in shipping Mozilla products,
Mozilla is trying to convince ordinary people to support the <a href="/writing/2025/12/17/AIs-unpaid-debt-how-llm-scrapers-destroy-the-social-contract-of-open-source.html" title="AI's Unpaid Debt: How LLM Scrapers Destroy the Social Contract of Open
Source">theft of the
commons</a>. After all, it is useful, and are people really against accessibility
improvements?</p>

<p>The problem is, Mozilla isn’t being upfront about what is going on.</p>

<p>Mozilla is speaking out of both sides of its mouth – it’s talking about how
important it is to
<a href="https://blog.mozilla.org/en/mozilla/mozilla-open-source-ai-strategy/" title="Mozilla Blog: Owners, not renters: Mozilla’s open source AI strategy">own your stack</a>
in the world of proprietary AI – even as they themselves partake in the same
piracy being practiced by the proprietary vendors.</p>

<p>Yes, Mozilla started their Data Collective, and I have personally contributed to
Common Voice, but when it comes to Firefox (their flagship product), they are
willing to ship closed AI.</p>

<p>That is the debate that Mozilla is trying to avoid.</p>

<p>In their post detailing their
<a href="https://blog.mozilla.org/en/mozilla/mozilla-open-source-ai-strategy/" title="Mozilla Blog: Owners, not renters: Mozilla’s open source AI strategy">strategy on open source AI</a>,
Mozilla hearkens back to 25 years ago in describing “what we did for the web”:</p>

<blockquote>
  <p>Twenty-five years ago, Microsoft Internet Explorer controlled 95% of the
browser market, which meant Microsoft controlled how most people experienced
the internet and who could build what on what terms. Mozilla was born to
change this, and Firefox succeeded beyond what most people thought possible —
dropping Internet Explorer’s market share to 55% in just a few years and
ushering in the Web 2.0 era.</p>
</blockquote>

<p>Back then, Mozilla was formed from the ashes of Netscape, and what Mozilla did
for the web was to fund and build a free, open source web browser that served as
real competition to the big tech companies of the era.</p>

<p>In trying to reclaim the mantle of
“<a href="https://www.cnbc.com/2026/01/27/mozilla-building-an-ai-rebel-alliance-to-take-on-openai-anthropic-.html" title="Mozilla is building an AI ‘rebel alliance’ to take on industry heavyweights OpenAI, Anthropic">leading a rebel alliance</a>”
to take on proprietary AI, Mozilla is hoping that we ignore that Firefox itself
is becoming infected with big tech AI, even as they pour money into projects
destined for failure.</p>

<p>It would mean something if Mozilla was actually building what they were claiming
to build - in the past, Mozilla built Firefox as a competitor to Microsoft’s
Internet Explorer. Today, Mozilla ships with chatbot integrations with multiple
proprietary big tech AI providers, including the Microsoft-partnered OpenAI.</p>

<p>Mozilla’s $1.4bn investment in open AI is not in Firefox - Mozilla is instead
investing in other companies to do what Mozilla itself doesn’t seem equipped to
do. Mozilla itself will instead be partnering directly with big tech and
partaking in piracy when it builds its own AI products.</p>

<p>Mozilla seems to believe that by simply reminding the industry that it once did
great things, that we will be convinced that everything Mozilla is doing around
AI is part of the same tradition.</p>

<p>Unfortunately, it isn’t.</p>

<h2 id="mozillas-betrayal-of-open-source">Mozilla’s Betrayal of Open Source</h2>

<p>We should have seen this coming, even before the announcement from Mozilla’s new
CEO. A few months ago, <a href="/writing/2025/12/08/mozillas-betrayal-of-open-source-googles-gemini-ai-is-overwriting-volunteer-work-on-support-mozilla.html" title="Mozilla's Betrayal of Open Source: Google's Gemini AI is Overwriting Volunteer
Work on Support Mozilla">Mozilla began to overwrite volunteer contributions on
Support Mozilla with
slop</a> from Google’s Gemini.</p>

<p>That caused the Japanese translation group to disband, including the locale
leader, who went by marsf and had
<a href="https://support.mozilla.org/en-US/user/marsf/documents" title="Support Mozilla: Documents edited or translated: marsf">contributed edits to over 1000</a>
articles over
<a href="https://support.mozilla.org/en-US/user/marsf/" title="Support Mozilla: marsf">20 years</a>.</p>

<p>In case you thought Gemini was open source, it isn’t. Upon the introduction of
Gemini, the UK based Society of Authors wrote an open letter to Google saying:</p>

<blockquote>
  <p>The Society of Authors was greatly concerned to hear that, at the launch of
Gemini pro, ‘Google repeatedly refused to answer questions from reporters
about how it collected Gemini’s training data, where the training data came
from and whether any of it was licensed from a third party’. Given the
reportedly extensive infringement of copyright protected works that took place
to build existing Large Language Models (LLMs), this continued lack of
transparency is alarming and leads us to assume that Google has used creators’
works unlawfully and unfairly, without consent or any kind of remuneration.</p>
</blockquote>

<p>Mozilla’s moves represent a double betrayal: first, they reject the community’s
contributions to SUMO’s knowledgebase, then to add insult to injury, they reject
the very idea of open source by implementing a closed source model based on
stolen data.</p>

<p>The message Mozilla is sending when choosing to overwrite human contributions
with stolen ones is that while Mozilla will gladly take your contributions, it
is also willing to steal them.</p>

<h2 id="opportunity-costs">Opportunity Costs</h2>

<p>Some of you may be reading and saying “So what? If you don’t like it, just use
the kill switch!”</p>

<p>That is clearly the response Mozilla wants us to have, and why the kill switch
exists. Don’t get me wrong, I appreciate that the option exists for Firefox
users that don’t want to be nagged to try AI features - like the <a href="/writing/2026/01/06/architecting-consent-for-ai-deceptive-patterns-in-firefox-link-previews.html" title="Architecting Consent for AI: Deceptive Patterns in Firefox Link Previews">nags
associated with the Link
Previews</a>
feature.</p>

<p>That doesn’t change the fact that by partnering with pirating AI vendors, and
indulging in piracy itself, Mozilla helps to foreclose the introduction of the
open source AI they claim to care about.</p>

<p>Imagine if back in 2009, when Google introduced
<a href="https://en.wikipedia.org/wiki/Google_Chrome_Frame" title="Wikipedia: Google Chrome Frame">Chrome Frame</a>,
Mozilla rushed to integrate it. If you don’t remember Chrome Frame, it was a
<a href="https://youtu.be/51hXnOi8G4g?t=795">plugin for Internet Explorer that allowed you to run Chrome’s engine in a tab</a>.</p>

<p>Mozilla could have told Firefox users that the introduction of Chrome Frame in
Firefox proved how far Microsoft’s Intenet Explorer had fallen, and Mozilla
could take advantage of the high quality and open source web engine that Google
was building.</p>

<p>Why bother investing in Gecko when Mozilla developers could instead work on user
facing features, leaving engine work to Google? That is the path that
<a href="https://www.extremetech.com/computing/148312-opera-drops-presto-switch-to-google-and-apples-webkit-rendering-engine" title="Opera admits defeat, switches to Google's Chromium">Opera</a>
and
<a href="https://blogs.windows.com/msedgedev/2021/03/09/microsoft-edge-legacy-end-of-support/" title="Windows Blogs: Microsoft Edge Legacy desktop application support ends today">Microsoft</a>
have gone in recent years - both have given up on developing their own web
engines in order to instead develop browsers that rely on the work Google
invests into Chromium. That relationship gives Google a whole lot of influence
over the web platform, since their web platform is being shipped by multiple
vendors - including other massive big tech companies.</p>

<p>Why then did it make sense for Mozilla to continue to invest in Gecko?</p>

<p>The obvious reason is that Gecko still exists, and since the majority of Gecko
development is paid, it is Mozilla’s continued investment that has granted web
users with an option to browse the web that isn’t fully owned by big tech.</p>

<p>That isn’t what is happening this time around.</p>

<p>Perhaps Mozilla doesn’t believe that they can build an open alternative to big
tech AI, as they aren’t trying. Instead, they are doing what Opera, Microsoft,
Vivaldi, and others are doing when they develop products on top of Chromium –
they are putting a different face on the same big tech platform.</p>

<p>Instead of building the open AI that they exhort others to join and invest in -
and shipping it, like they had with Gecko and Firefox 25 years ago, they are
instead becoming just another distribution platform for the closed AI companies
they claim to be against.</p>

<p>That isn’t an exaggeration - one of the AI features that are disabled by the
kill switch is the
<a href="https://support.mozilla.org/en-US/kb/ai-chatbot" title="Support Mozilla: Access AI chatbots in Firefox">chatbot integration in Firefox’s sidebar</a>.
The products featured here are Anthropic Claude, OpenAI ChatGPT, Google Gemini,
Le Chat Mistral, and Microsoft Copilot. None of these are open source - not a
single one.</p>

<p>You are likely familar with the concept of
<a href="https://en.wikipedia.org/wiki/Opportunity_cost">opportunity costs</a> - the idea
that by choosing one option, you lose out on the benefits of choosing an
alternative option. That is the “cost” you pay for not taking the alternative
opportunity.</p>

<p>We can think about this in the context of Chrome Frame. If Mozilla had
integrated Chrome Frame, web developers may have more quickly decided to stop
supporting both Internet Explorer <em>and</em> Firefox, since they could simply target
Chrome, and their sites would work on every browser that had Chrome Frame.</p>

<p>Mozilla could have spent their resources on features to differentiate themselves
from the competition - like what Microsoft and Vivaldi do today.</p>

<p>There would be little point in integrating Chrome Frame if Mozilla continued to
be interested in developing Gecko, so the cost the web would pay would likely be
the eventual disappearance of Gecko. We might still have Firefox, but investing
in Chrome Frame would likely mean disinvestment in Gecko.</p>

<p>Mozilla investing $1.4 billion in non-Firefox AI projects while also integrating
closed source, big tech AI is sending the signal that Mozilla isn’t interested
in developing an open source AI, and instead is looking to get paid by big tech.</p>

<p>Mozilla’s pronouncements around AI are incredibly confusing if you take what
they say at face value. Mozilla is telling us to not trust big tech AI and to
not rent our models, all while they do exactly that. Mozilla doesn’t have an
instance of Gemini running on Mozilla servers, overwriting human contributions -
they are paying Google to rent their model.</p>

<p>Mozilla says that Mozilla Translations are open source, but they are built
exactly the same way that Google’s models are built - scraping of copyrighted
content without payment or permission.</p>

<p>Mozilla says that they are building a rebel alliance to take on industry
heavyweights, all while integrating them directly in the browser, complete with
nags to send them user data.</p>

<p>In an
<a href="https://www.theguardian.com/technology/2025/oct/28/firefox-ai-internet-anthony-enzor-demeo" title="‘A good moment in time for us’: Firefox head on AI browsers and what’s next for the web">interview with the Guardian</a>,
CEO Enzor-DeMeo declined to be transparent about how much the partnerships with
AI companies are worth to Mozilla.</p>

<p>I’m not a betting man, but if I were, I’d guess that Mozilla is expecting to get
back more than the $1.4 billion they are pouring into AI.</p>

<p>Given that context, Mozilla’s investment in the so-called rebel alliance seems
more like the biblical concept of
<a href="https://en.wikipedia.org/wiki/Indulgence">indulgences</a> – a way to reduce the
punishment from committed sins. Mozilla can partner with as many big tech
companies that do as much damage to the world as they want, as long as they take
some of that
<a href="https://www.youtube.com/watch?v=9o0rAvZtM7w" title="YouTube: Adventures Of Stevie V - Dirty Cash">dirty cash</a>
and put it towards some meaningless “good” projects.</p>

<p>It doesn’t matter that the investment is unlikely to be fruitful - the point of
the investment is to forgive Mozilla for doing bad things.</p>

<p>Mozilla wouldn’t need to pour good money after bad around open source AI if they
were actually implementing open AI solutions in-house. What seems to be
happening instead is that they are partnering with the closed source big tech AI
pirates, and spending some of the proceeds to wash themselves clean of the stain
of copyright theft.</p>

<h2 id="mozillas-ai-future">Mozilla’s AI Future</h2>

<p>While Mozilla pitches the AI kill switch as an exercise in user choice, it
reveals itself to be a Hobson’s choice – take it or leave it.</p>

<p>If we accept that Firefox becoming an AI browser will necessarily mean that
Mozilla will focus less on web platform or even browser features that don’t rely
on copyright theft, users have no choice but to leave it. The kill switch
doesn’t change that Mozilla is partnering with copyright pirates, thereby
endorsing their behavior (and getting paid for it). It doesn’t change that
Mozilla is shipping AI models built on piracy in Firefox proper - no matter if
it is optional or not.</p>

<p>The kill switch also doesn’t change the betrayal of loyal community members
whose contributions are being removed in favor of big tech AI slop.</p>

<p>In all of these cases, Mozilla had choices.</p>

<p>They could have chosen to allow community members to opt into translation
suggestions,
<a href="https://blog.mozilla.org/l10n/2024/05/28/transforming-translations-how-llms-can-help-improve-mozillas-pontoon/" title="Mozilla L10N: Transforming Translations: How LLMs Can Help Improve Mozilla’s Pontoon">like exists for Firefox in Mozilla Pontoon</a>,
instead of forcing community members to play catch up as slop overwrites human
contributions.</p>

<p>They could have partnered with their community to help develop an open corpus
like they had for Common Voice, in order to power their translation engine. The
existing localizations on Support Mozilla could have been used to kickstart
model creation, and volunteers could have worked with developers to tune models
to ease localization work for contributors. Rather than needing to correct the
same errors over and over (since paid Gemini queries don’t train the model),
contributors could have been actively assisting in training an open model.
Instead, Mozilla ignored their community and partnered with slop generating
pirates.</p>

<p>Mozilla didn’t need to choose to get paid by AI vendors and to try to distract
us by investing in AI projects that – let’s face it – will go nowhere. They
could have instead taken that money and spent it on anything else – even home
grown AI.</p>

<p>If AI is as amazing as advertised, Mozilla should be able to take that $1.4
billlion they are planning on pouring down the drain and instead turn it into
hundreds of billions. Just think – in just 5 short years, Anthopic went from
not existing to being worth over
<a href="https://www.anthropic.com/news/anthropic-raises-30-billion-series-g-funding-380-billion-post-money-valuation" title="Anthropic raises $30 billion in Series G funding at $380 billion post-money valuation">$300 billion dollars</a>.</p>

<p>Is Mozilla taking home nearly that much money to secure its future, or is AI
simply another way to sell the Firefox audience to big tech?</p>

<p>The kill switch exists as a way to distract us from the larger questions
surrounding AI in Firefox. By building it, Mozilla makes AI your
responsibility - <em>you</em> choose to use it. Mozilla’s agency never enters the
picture.</p>

<p>We aren’t going to ask how much the AI companies are paying Mozilla for the
privilege of advertising to Firefox users and gathering their data. We won’t
deign to question whether Mozilla shipping pirated models in Firefox is
something we ought to be concerned about – Firefox users can disable it, so
Mozilla is off the hook.</p>

<p>AI products seem to generally serve as an
<a href="https://aworkinglibrary.com/writing/accountability-sinks">accountability sink</a> -
a way to absorb or obscure the consequences of a decision such that no one can
be held directly accountable for it.</p>

<p>The kill switch is a fantastic example of such, since by providing users with
the option, the users are now the ones accountable. Mozilla can point to the
switch and wash themselves of accountability and responsibility.</p>

<p>Mozilla isn’t responsible for your use of its AI. And that is the point.</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can
<a href="https://mastodon.social/@yoasif">message me</a> or follow
<a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="firefox" /><category term="mozilla" /><summary type="html"><![CDATA[TL;DR: Mozilla recently released AI controls for Firefox: a single control panel that lets people disable AI features in the browser or pick and choose which to leave on. On the surface, this sounds like a win for user choice in an era of AI-everything.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/itsatrap.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/itsatrap.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Fifteen Years of Waterfox: Alex Kontos on Independence, AI, and the Future of Browsers</title><link href="https://www.quippd.com/writing/2026/02/02/fifteen-years-of-waterfox-alex-kontos-on-independence-ai-and-the-future-of-browsers.html" rel="alternate" type="text/html" title="Fifteen Years of Waterfox: Alex Kontos on Independence, AI, and the Future of Browsers" /><published>2026-02-02T15:55:00+00:00</published><updated>2026-02-02T15:55:00+00:00</updated><id>https://www.quippd.com/writing/2026/02/02/fifteen-years-of-waterfox-alex-kontos-on-independence-ai-and-the-future-of-browsers</id><content type="html" xml:base="https://www.quippd.com/writing/2026/02/02/fifteen-years-of-waterfox-alex-kontos-on-independence-ai-and-the-future-of-browsers.html"><![CDATA[<p><strong>TL;DR</strong>: As Mozilla moves to make Firefox an AI browser, people are looking at other options. Some people are rediscovering Waterfox, a browser that has been around for a decade from independent developer BrowserWorks. In this post, I interview the founder of Waterfox - Alex Kontos, and we discuss Waterfox’s history and look towards its future. We also talk about how Waterfox thinks about AI in the browser.</p>

<p>I made <a href="https://www.youtube.com/watch?v=Babxhs2WYMk">a video</a> if you
want to watch instead.</p>

<div class="video-container">
  <lite-youtube videoid="Babxhs2WYMk" playlabel="An Interview with Waterfox Founder Alex Kontos: History, Revenue and Drawing the Line on AI" style="background-image: url('https://i.ytimg.com/vi/Babxhs2WYMk/hqdefault.jpg');">
    <a href="https://youtube.com/watch?v=Babxhs2WYMk" class="lty-playbtn" title="Play Video">
      <span class="lyt-visually-hidden">Play Video: An Interview with Waterfox Founder Alex Kontos: History, Revenue and Drawing the Line on AI</span>
    </a>
  </lite-youtube>
</div>

<hr />

<ul id="markdown-toc">
  <li><a href="#interview" id="markdown-toc-interview">Interview</a>    <ul>
      <li><a href="#history" id="markdown-toc-history">History</a></li>
      <li><a href="#sustainability-and-governance" id="markdown-toc-sustainability-and-governance">Sustainability and Governance</a></li>
      <li><a href="#waterfox-features" id="markdown-toc-waterfox-features">Waterfox Features</a></li>
      <li><a href="#ai" id="markdown-toc-ai">AI</a></li>
      <li><a href="#gecko-ecosystem" id="markdown-toc-gecko-ecosystem">Gecko Ecosystem</a></li>
    </ul>
  </li>
</ul>

<p>With Mozilla <a href="https://blog.mozilla.org/en/mozilla/leadership/mozillas-next-chapter-anthony-enzor-demeo-new-ceo/">announcing plans to turn Firefox into an “AI browser,”</a> people are taking stock of browser options. People new to the Firefox community may be looking back towards Chromium-based options. Others are wary about helping Google extend its hegemony over the web platform and are looking to Firefox offshoots like <a href="https://librewolf.net/">LibreWolf</a> and <a href="https://floorp.app/">Floorp</a>, or further afield with projects like <a href="https://servo.org/">Servo</a> and <a href="https://ladybird.org/">Ladybird</a>.</p>

<p>As people look for alternatives, they are rediscovering options that didn’t appear overnight. <a href="https://www.waterfox.com/">Waterfox</a> has been around for more than a decade, built on Mozilla’s work in Firefox but bringing it to people without data collection and some user focused niceties.</p>

<p>As Mozilla goes off to <a href="https://stateof.mozilla.org/roadmap/">explore the world of AI</a>, I thought it would be interesting to catch up with Alex Kontos, the founder of Waterfox. I wanted to discuss with him what it means to build and sustain an independent browser over the long term, how Waterfox’s philosophy diverges from Mozilla’s current direction, and why there’s still value in software that doesn’t treat you like a lab rat.</p>

<p>I’m also taking the time to test-drive Waterfox on my own, and I’ll be following up with a review in the coming weeks.</p>

<h2 id="interview">Interview</h2>

<h3 id="history">History</h3>

<p><strong>QUIPPD</strong>
You started Waterfox when you were 16 years old. Most people at that age are just trying to keep up with homework, and you were out there trying to outcompete Mozilla at 64bit. Looking back to that 16 year version of yourself, did you think you’d still be working on Waterfox 15 years later?</p>

<p><strong>ALEX</strong>
Hah, I think it’s generous calling what I started out doing as competing with Mozilla! I remember struggling at the time to find a 64-bit version of Firefox - I was enamoured with it, it was (and still is) a great bit of software. Some people were pushing out sporadic builds, but that wasn’t good enough - and here we are! I definitely thought I’d be involved with computers and software in some capacity, but maybe not still with Waterfox!</p>

<p><strong>QUIPPD</strong>
You sold Waterfox to System1 in 2020 and then bought it back to become independent again in 2023. Can you tell us more about what happened there?</p>

<p><strong>ALEX</strong>
As it happens, the System1 I joined and the System1 I left were different companies. There wasn’t much scope of a browser vision anymore, and I still felt there was untapped potential, so we went our separate ways.</p>

<h3 id="sustainability-and-governance">Sustainability and Governance</h3>

<p><strong>QUIPPD</strong>
Now that you are independent, how are you building a sustainable business model? How secure is Waterfox’s funding?</p>

<p><strong>ALEX</strong>
Up until the last year, things were great. But unfortunately with <a href="https://www.theregister.com/2025/05/15/bing_search_apis_retired/">Microsoft terminating all Bing partnerships and API calls</a> (to stop AI companies scraping the web with their services), it’s been much more difficult. Without a big player like Microsoft on the scene, other search engines are much more aggressive with their partnership agreements.</p>

<p>So we get okay revenue, not much, and I’ve launched <a href="https://search.waterfox.com/">Waterfox Private Search</a>, a <a href="https://www.waterfox.com/blog/waterfox-private-search/">subscription based meta search</a> as a way to try and be completely independently funded. I’d like to launch an <a href="https://en.wikipedia.org/wiki/Oblivious_HTTP">Oblivious</a> proxy too - but the whole “VPN” market (proxies is how people really use them) seems insanely saturated and I don’t want to spread myself too thin.</p>

<p><strong>QUIPPD</strong>
Tell me about your structure. You reference it on your recent <a href="https://www.waterfox.com/blog/no-ai-here-response-to-mozilla/">blog post</a>, but readers will want to know more.</p>

<p><strong>ALEX</strong>
Yes I’m conscious I bring that up frequently and I’m currently building out some pages to add on the website. It will be something as follows:</p>

<p>A “Governance” page that:</p>

<ul>
  <li>Links to Companies House registration</li>
  <li>Names directors and their roles (only me)</li>
  <li>Explains revenue model transparently</li>
  <li>States our privacy commitments in plain language</li>
  <li>Provides contact for governance questions</li>
  <li>Provide information and link to our ICO Registration certificate (to show we’re beholden to things such as the UK GDPR)</li>
</ul>

<p>There’s much more I want to flesh out and have easily accessible as well, such as security disclosure policies, partnerships guidelines etc.</p>

<p><strong>QUIPPD</strong>
How large is the team?</p>

<p><strong>ALEX</strong>
It’s just me at the moment! With the odd contributors here and there.</p>

<p><strong>QUIPPD</strong>
Do you have any plans for expansion?</p>

<p><strong>ALEX</strong>
I have dreams, but without a large revenue stream nothing that is currently feasible.</p>

<h3 id="waterfox-features">Waterfox Features</h3>

<p><strong>QUIPPD</strong>
How do you choose what to develop? What is the core vision for Waterfox as a product?</p>

<p><strong>ALEX</strong>
A difficult one to answer, but at its core I’d like Waterfox to be as privacy friendly as possible while not breaking the web. A hard line to balance! I want people to feel as if they are in control of their experience and getting real use out of their browser as a productivity tool.</p>

<h3 id="ai">AI</h3>

<p><strong>QUIPPD</strong>
You’ve been vocal about Waterfox staying ‘AI-free’ while Mozilla is becoming an AI browser. I recently learned that Mozilla’s <a href="https://github.com/mozilla/translations">translation engine</a> (that you referenced in your blog post) is not trained on open data, but from <a href="https://paracrawl.eu/moredata">crawled copyright content</a>. Does that change your perspective on inclusion within Waterfox?</p>

<p><strong>ALEX</strong>
I think ‘AI-free’ isn’t my exact stance - “AI” is too broad a term to make blanket statements about. I’m cautious about LLMs specifically, and definitely against including them by default in the context of a web browser. If users want to use external AI services via extensions, their own setup (or re-enabling via toggles in Waterfox), they’re free to do so - user choice is core to Waterfox’s ethos.</p>

<p>My biggest concern is the unknown Mozilla has thrown out there, where it sounds like a complete pivot to AI control within the browser. Browsers like <a href="https://www.perplexity.ai/comet">Comet</a> and <a href="https://www.diabrowser.com/">Dia</a> seem like a recipe for disaster. I’m not downplaying the convenience, but these things aren’t perfect and putting one in the drivers seat seems wrong. On the flip side, AI has also been revolutionary for those with disabilities, so judgment shouldn’t be made in just black and white.</p>

<p>I was actually unaware of ParaCrawl’s data sources. Arguably it doesn’t respect the spirit of creator consent, but it seems that it’s legal in many jurisdictions and follows standard practices for research corpora. I’d need to do more research myself to form a better opinion as I believe this warrants a much more nuanced response.</p>

<p><strong>QUIPPD</strong>
Can you explain more about how you think about inclusion of AI features in Waterfox?</p>

<p><strong>ALEX</strong>
Outside of LLMs, things such as ML have been a part of Waterfox (and most software!) for a while. Translations (<a href="https://browser.mt/">Bergamot</a>), TTS/STT (<a href="https://github.com/mozilla/DeepSpeech">DeepSpeech</a>), URL bar ranking for local history when entering keywords and more recently, <a href="https://hacks.mozilla.org/2024/05/experimenting-with-local-alt-text-generation-in-firefox-nightly/">alt text generation for PDF images</a>. These all provide real utility to end users, are implemented transparently and have been a part of the browser for years. The biggest issue I find is how LLMs are used, rather than the all encompassing “AI” term which includes many useful features over the years. It’s why in the blog post I specify that I won’t include LLMs in their current form in Waterfox</p>

<p><strong>QUIPPD</strong>
Do you have a perspective on you or Waterfox contributors using AI to develop Waterfox? Have you tried out AI coding at all?</p>

<p><strong>ALEX</strong>
I agree with Dmitry Kudryavtsev’s note on his ‘<a href="https://kudmitry.com/articles/dead-internet-theory/">Dead Internet Theory</a>’ post.</p>

<p><strong>QUIPPD</strong>
The note on Dmitry’s post reads:</p>

<blockquote>
  <p><strong>NOTE</strong> I don’t mind people using AI to write code, even though I tried to resist it myself, until eventually succumbing to it. But I think it’s fair to disclose the use of AI, especially in open-source software. People on the internet are, mostly, anonymous, and it’s not always possible to verify the claims or expertise of particular individuals.</p>

  <p>But as the amount of code is growing, considering that everyone is using AI to generate whatever-app they want, it’s impossible to verify every piece of code we are going to use. So it’s fair to know, I think, if some project is AI generated and to what extent. In the end, LLMs are just probabilistic next-token generators. And while they are getting extremely good at most simple tasks, they have the potential to wreak havoc with harder problems or edge-cases (especially if there are no experienced engineers, with domain knowledge, to review the generated code).</p>
</blockquote>

<p><strong>ALEX</strong>
When it comes to contributions, I think it’s fair to ask contributors to disclose if they’ve used AI to generate code, especially for substantial changes. As Dmitry mentioned, LLMs are probabilistic - they’re great at common patterns but can introduce subtle bugs in edge cases. With Waterfox being essentially just me, I can’t review every line with the depth a larger team could. Knowing something was AI generated helps me understand where to focus review effort and what kinds of issues to look for. I also hope users aren’t just blindly tasking LLMs with creating patches for Waterfox, I’d be surprised if it wouldn’t run out of context before even being able to generate anything and it’d be such a waste of resources.</p>

<p>I do also use it - I find it useful as a smarter, glorified IntelliSense, as it saves typing and repetitive actions. I’ve found it useless for doing anything novel with - and of course it can’t “think” like a human does, so complex problem solving isn’t much good with it either (at least how I’ve tried? I see a lot of hubbub about it solving math problems recently). If it does get used, its usage is strict and limited. It’s great as a code search tool as well, saves me a bunch of time loading up searchfox.org or grepping through the repo.</p>

<h3 id="gecko-ecosystem">Gecko Ecosystem</h3>

<p><strong>QUIPPD</strong>
Does Waterfox contribute to upstream Gecko or Firefox? Is that something people can expect in the future?</p>

<p><strong>ALEX</strong>
It has done so in the past, mainly small inconsequential things, but I’d be more than happy to provide upstream code, if I thought it would actually be any use to Mozilla.</p>

<p><strong>QUIPPD</strong>
Is Gecko important to Waterfox, or would you be willing to rebase to WebKit or Chromium?</p>

<p><strong>ALEX</strong>
It is! But, it’s always an uphill battle as it’s not designed to be taken apart from Firefox, which makes using Gecko in isolation difficult (and makes ongoing maintenance a burden). I would be willing to work with WebKit - it’s much improved over the last few years for platforms outside of macOS and I think there’s a lot of untapped potential there.</p>

<p><strong>QUIPPD</strong>
What’s your strongest elevator pitch for someone trying out or switching to Waterfox?</p>

<p><strong>ALEX</strong>
A private web browser that stays out of your way.</p>

<p>Are there any questions that I missed? Leave a comment and I’ll try to get Alex to do a follow-up interview!</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can
<a href="https://mastodon.social/@yoasif">message me</a> or follow
<a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="firefox" /><category term="mozilla" /><summary type="html"><![CDATA[TL;DR: As Mozilla moves to make Firefox an AI browser, people are looking at other options. Some people are rediscovering Waterfox, a browser that has been around for a decade from independent developer BrowserWorks. In this post, I interview the founder of Waterfox - Alex Kontos, and we discuss Waterfox’s history and look towards its future. We also talk about how Waterfox thinks about AI in the browser.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/Waterfox-Interview.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/Waterfox-Interview.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Architecting Consent for AI: Deceptive Patterns in Firefox Link Previews</title><link href="https://www.quippd.com/writing/2026/01/06/architecting-consent-for-ai-deceptive-patterns-in-firefox-link-previews.html" rel="alternate" type="text/html" title="Architecting Consent for AI: Deceptive Patterns in Firefox Link Previews" /><published>2026-01-06T15:55:00+00:00</published><updated>2026-01-06T15:55:00+00:00</updated><id>https://www.quippd.com/writing/2026/01/06/architecting-consent-for-ai-deceptive-patterns-in-firefox-link-previews</id><content type="html" xml:base="https://www.quippd.com/writing/2026/01/06/architecting-consent-for-ai-deceptive-patterns-in-firefox-link-previews.html"><![CDATA[<p><strong>TL;DR</strong>: Mozilla has a new CEO and a new mission: transform Firefox into an AI
browser. That has run into some snags, as Firefox users don’t seem that
interested in AI. Mozilla is forging ahead, utilizing deceptive patterns
(previously known as dark patterns) to nag and annoy people into enabling AI
features. You can see this in the introduction of Link Previews, an extremely
invasive anti-feature that exists solely to push AI into your experience.</p>

<p>I made <a href="https://www.youtube.com/watch?v=3SdlKDD5jF8">a video</a> if you
want to watch instead.</p>

<div class="video-container">
  <lite-youtube videoid="3SdlKDD5jF8" playlabel="How Mozilla Architects Deceptive AI Consent in Firefox" style="background-image: url('https://i.ytimg.com/vi/3SdlKDD5jF8/hqdefault.jpg');">
    <a href="https://youtube.com/watch?v=3SdlKDD5jF8" class="lty-playbtn" title="Play Video">
      <span class="lyt-visually-hidden">Play Video: How Mozilla Architects Deceptive AI Consent in Firefox</span>
    </a>
  </lite-youtube>
</div>

<hr />

<ul id="markdown-toc">
  <li><a href="#link-previews-in-beta" id="markdown-toc-link-previews-in-beta">Link Previews in Beta</a></li>
  <li><a href="#link-previews-in-firefox-142" id="markdown-toc-link-previews-in-firefox-142">Link Previews in Firefox 142</a>    <ul>
      <li><a href="#link-previews" id="markdown-toc-link-previews">Link Previews</a>        <ul>
          <li><a href="#criticism" id="markdown-toc-criticism">Criticism</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><a href="#deceptive-patterns" id="markdown-toc-deceptive-patterns">Deceptive Patterns</a>    <ul>
      <li><a href="#obstruction" id="markdown-toc-obstruction">Obstruction</a></li>
      <li><a href="#nagging" id="markdown-toc-nagging">Nagging</a></li>
      <li><a href="#preselection" id="markdown-toc-preselection">Preselection</a></li>
    </ul>
  </li>
  <li><a href="#opt-ins-and-the-kill-switch" id="markdown-toc-opt-ins-and-the-kill-switch">Opt-Ins and the “Kill Switch”</a></li>
  <li><a href="#an-alternative-opt-in" id="markdown-toc-an-alternative-opt-in">An Alternative Opt-In</a></li>
</ul>

<p>Mozilla’s
<a href="https://blog.mozilla.org/en/mozilla/leadership/mozillas-next-chapter-anthony-enzor-demeo-new-ceo/">new CEO has a new mission to make an AI browser</a>.
The community’s reaction has been decidedly negative, with posters on social
media saying that they have
<a href="https://www.reddit.com/r/firefox/comments/1poe7kb/an_open_letter_to_mozillas_new_ceo_firefox_doesnt/">little to no interest in Mozilla’s AI ambitions</a>.</p>

<p>Mozilla’s response to the community’s backlash towards AI was to (re)announce
that they would be developing an
“<a href="https://mastodon.social/@firefoxwebdevs/115740500373677782">AI Kill Switch</a>”
to disable any existing and forthcoming AI features in Firefox.</p>

<p>Mozilla employees followed up on their traditional media response with a social
media response, and
<a href="https://mastodon.social/@firefoxwebdevs/115740500373677782">multiple</a>
<a href="https://www.reddit.com/r/firefox/comments/1ppydhv/firefox_is_adding_an_ai_kill_switch/nuqop1h/">team members</a>
fielded questions from the general public.</p>

<p>As Firefox users asked how the “kill switch” would work,
<a href="https://mastodon.social/@firefoxwebdevs/115740901466126279">Mozilla began to sound more shifty</a>,
saying that while there are some gray areas of what “opt-in” means to different
people, their kill switch would
<a href="https://mastodon.social/@firefoxwebdevs/115740500918701463">absolutely remove that stuff</a>.</p>

<p>To help clear things up, Mozilla explained that the AI features in “Link
Previews” has
“<a href="https://www.reddit.com/r/firefox/comments/1ppydhv/firefox_is_adding_an_ai_kill_switch/nurhmfn/">always been opt-in</a>”.</p>

<h2 id="link-previews-in-beta">Link Previews in Beta</h2>

<p><em>Link Previews</em> is a feature that was
<a href="https://blog.mozilla.org/en/mozilla/ai/ai-tech/ai-link-previews-firefox/">first introduced in Firefox 138</a>,
as an experimental, opt-in Labs feature.</p>

<p>The feature was introduced as a way for users to get relevant information
faster, by providing them with an
<a href="https://connect.mozilla.org/t5/firefox-labs/try-out-link-previews-in-firefox-labs-138-and-share-your/m-p/92012/highlight/true#M530">image, the webpage title, and AI-generated key points</a>.</p>

<p>Mozilla introduced the experiment by saying that Link Previews is “entirely
optional” and that “it only appears in Firefox if you enable the feature and
consent to local AI processing”.</p>

<p>After enabling the feature in Firefox Labs, users would have to press
<kbd>Shift</kbd> and <kbd>Alt</kbd> (or <kbd>Option</kbd> on macOS) to see the
preview.</p>

<p>The feature changed in a few ways once it was released to general availability
in Firefox 142.</p>

<h2 id="link-previews-in-firefox-142">Link Previews in Firefox 142</h2>

<p>Link Previews was promoted to release on Firefox 142.</p>

<p>Firefox 142’s
<a href="https://www.firefox.com/en-US/firefox/142.0/releasenotes/">release notes</a>
describes how the feature was changed upon release. Mozilla says: “Long press a
link (or right-click and choose Preview Link). Previews can optionally include
AI-generated key points, which are processed on your device to protect your
privacy.”</p>

<p>Firefox now shows the Link Preview popups when long clicking a link. While this
gesture is common on mobile, it is not on desktops - and many people are seeing
the popups and not understanding why they appear. Some are even convinced that
they are coming from the sites themselves, like from YouTube.</p>

<figure class="image-row">
<a href="https://www.reddit.com/r/firefox/comments/1prq1kf/is_this_some_new_ai_feature_in_ff/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/reddit-ai.avif" type="image/avif" />
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/reddit-ai.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/reddit-ai.png" alt="Screenshot of reddit page asking if this is some new AI feature in Firefox" />
</picture>
</a>
<a href="https://www.reddit.com/r/firefox/comments/1mvoong/randomly_getting_link_previews_on_webpages_using/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/reddit-random.avif" type="image/avif" />
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/reddit-random.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/reddit-random.png" alt="Screenshot of reddit page asking whether link previews can be disabled" />
</picture>
</a>
<a href="https://www.reddit.com/r/firefox/comments/1ps6kc3/firefox_what_is_this/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/reddit-what.avif" type="image/avif" />
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/reddit-what.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/reddit-what.png" alt="Screenshot of reddit page asking Firefox what is this?" />
</picture>
</a>
  <figcaption>Firefox enthusiasts are confused about the Link Preview popups</figcaption>
</figure>

<figure class="image-row">
<a href="https://www.reddit.com/r/firefox/comments/1pr67te/how_would_i_remove_this_popup_about_firefoxs_ai/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/youtube-how.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/youtube-how.png" alt="Screenshot of reddit page asking how remove a popup about Firefox AI on YouTube" />
</picture>
</a>
<a href="https://www.reddit.com/r/firefox/comments/1oam4g9/how_to_get_rid_of_youtube_ai/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/youtube-how-rid.avif" type="image/avif" />
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/youtube-how-rid.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/youtube-how-rid.png" alt="Screenshot of reddit page asking how to get rid of YouTube AI" />
</picture>
</a>
<a href="https://www.reddit.com/r/firefox/comments/1pnf3j4/we_cant_generate_key_points_for_this_page_popup/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/youtube-we.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/youtube-we.png" alt="Screenshot of reddit page asking why Firefox can't generate key points on YouTube" />
</picture>
</a>
  <figcaption>Firefox users on reddit believed that YouTube was pushing AI on them</figcaption>
</figure>

<p>While Mozilla introduced Link Previews as “entirely optional”, people are now
seeing link previews without ever enabling the feature.</p>

<p>You probably noticed that Mozilla said that the previews can optionally include
AI-generated key points. That’s because Mozilla enabled link previews by
default, but made the summaries optional.</p>

<p>Since the feature has been split up, let’s see how it works.</p>

<h3 id="link-previews">Link Previews</h3>

<p>Link Previews - without the AI summary - is a feature Mozilla could have added
to Firefox decades ago. That’s because the snippet it shows is the same one that
search engines have been using since 1996 to get a basic idea of what pages are
about: the page’s
<a href="https://www.w3.org/TR/html401/appendix/notes.html#h-B.4">meta description</a>.</p>

<p>If you click your mouse button over a link for a second, your browser will visit
the page and process it to grab the page description and to estimate the amount
of time it takes to read.</p>

<p>The request to the page happens from your computer and is not proxied in any
way. That means that your IP address will be leaked to the server hosting the
link that you are previewing. Mozilla says that key points are processed locally
to protect your privacy in the release notes, but says nothing about leaking
your privacy in showing the link preview (and enabling it by default).</p>

<h4 id="criticism">Criticism</h4>

<p><strong>Note</strong>: This section updated on January 8.</p>

<p>I got some responses that my criticism for Link Previews leaking your privacy
doesn’t make sense, since visiting the page would also share the same data with
the originating server.</p>

<p>That is true, but it also doesn’t defend Link Previews in any way. The reason
that Mozilla tells us that the AI generated summaries are generated locally to
protect your privacy is because the alternative would be to send it off to a
cloud-based LLM. Mozilla doesn’t apply the same thinking to the Link Previews
itself, since privacy (like security) is layered.</p>

<p>To demonstrate, we can do a
<a href="https://www.startpage.com/sp/search?query=things+you+should+never+do&amp;cat=web&amp;pl=opensearch">search</a>
for the
<a href="https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/">same</a>
page I previewed in the <a href="#an-alternative-opt-in">mockups</a> I generated.</p>

<p>
<figure>
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/never-do.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/never-do.png" alt="Screenshot of a Startpage search in Firefox" />
</picture>
  <figcaption>A Startpage search. Note the "Visit in Anonymous View" link below the search result</figcaption>
</figure>
</p>

<p>I use Startpage, and they offer a “Visit in Anonymous View” that actually works
like a privacy preserving preview.</p>

<p>
<figure>
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/things-you-should-never-do-anonymous.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/things-you-should-never-do-anonymous.png" alt="Screenshot of a blog post inside of Startpage anonymous view" />
</picture>
  <figcaption>Anonymous view of a blog post on Startpage</figcaption>
</figure>
</p>

<p>This feature actually works to preserve my privacy. The originating host never
sees my request, and I can visit the page on my own if I want to.</p>

<p>Startpage shows us how a feature like this could help to protect your privacy –
even as it opens up the potential for abuse. For example, people might say that
Mozilla is intruding on your privacy if they saw what pages you were previewing.
If you wouldn’t want Mozilla knowing what pages you are previewing, why would
you want the originating host to?</p>

<p>You may believe that Link Previews don’t leak your privacy. Mozilla can improve
Link Previews further. Firefox can visit links on pages you visit, so that
long-clicking (or hovering) could show you a preview without delay. Would that
intrude on users’ privacy?</p>

<p>There is no doubt that Firefox is causing people to visit more pages than they
normally would, and those pages aren’t even being viewed by people, as they are
processed by Link Previews. That Mozilla imposed this privacy leaking change on
Firefox users in an automated update is indisputable.</p>

<hr />

<p>While Mozilla says that the AI features in Link Previews have always been
opt-in, it is obvious that this is sleight of hand. Mozilla thinks that by
wrapping the AI feature inside a non-AI feature, and enabling the non-AI feature
by default, the browser can interrupt you over and over again to finally opt
into the AI features.</p>

<p>If you don’t know what is happening, this might be easy to miss. Thankfully, the
team over at <a href="https://www.deceptive.design/">Deceptive Patterns</a> have researched
“the <a href="https://www.deceptive.design/about-us">growing issue</a> of manipulative,
deceptive and coercive design patterns in the digital world”.</p>

<h2 id="deceptive-patterns">Deceptive Patterns</h2>

<p>Looking closer, we can see that Mozilla has designed the Link Previews
experience to architect consent for AI by using three main tactics. They are:
<strong>obstruction</strong>, <strong>nagging</strong>, and <strong>preselection</strong>.</p>

<h3 id="obstruction">Obstruction</h3>

<p>The first tactic I want to highlight is
<strong><a href="https://www.deceptive.design/types/obstruction">obstruction</a></strong>, which
<em>Deceptive Patterns</em> defines as something that “deliberately creates obstacles
or roadblocks in the user’s path, making it more difficult for them to complete
a desired task or take a certain action”.</p>

<p>The obstruction in Firefox is obvious - the browser is obstructing the user from
clicking or manipulating the link in another way. You might want to drag the
link to a document to copy it, for example. The user might also have mobility
impairments that makes a fast click harder, resulting in a longer hold time.</p>

<p><em>Deceptive Patterns</em> notes that <em>obstruction</em> “is used to exhaust users and make
them give up, when their goals are contrary to the business’s revenue or growth
objectives.” That sounds exactly right – Firefox is now an AI browser, so
Mozilla’s goal is to grow usage of AI rather than browsing web pages.</p>

<h3 id="nagging">Nagging</h3>

<p>The obstruction in Link Previews doesn’t just happen once, though. After Firefox
updates, the popup appears continually as people browse the web normally. This
is <em><a href="https://www.deceptive.design/types/nagging">nagging</a></em>, defined by the team
over at Deceptive Patterns as: “a tax that the provider imposes on users who do
not want to comply with the provider’s wishes.”</p>

<p>Eventually, the cost becomes non-trivial and at that point, “the user may decide
it’s more cost effective to just give in and agree to whatever the provider is
asking for, even if it is against their best interests”.</p>

<h3 id="preselection">Preselection</h3>

<p>The deceptive design pattern that makes it all possible is the last one I want
to highlight: <a href="https://www.deceptive.design/types/preselection">preselection</a>.</p>

<p>Deceptive Patterns notes that this pattern takes advantage of the
<a href="https://en.wikipedia.org/wiki/Default_effect">default effect</a> cognitive bias:
“a psychological phenomenon where people tend to go with the option that is
already chosen for them, even if there are other choices available.”</p>

<p>Preselection is what allows Mozilla to continually nag and obstruct users - all
while putting the onus on disabling the interruptions on the person using
Firefox.</p>

<p>Contrary to their messaging on social media, Mozilla preselected the option to
enable Link Previews in an automatic update.</p>

<p>
<figure>
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/link-previews-prefs.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/link-previews-prefs.png" alt="Screenshot of Firefox Link Previews preferences" />
</picture>
  <figcaption>Link Previews were enabled by default in certain regions</figcaption>
</figure>
</p>

<h2 id="opt-ins-and-the-kill-switch">Opt-Ins and the “Kill Switch”</h2>

<p>The design of Link Previews shows us the lengths to which Mozilla is willing to
go to get users to “opt into” AI features.</p>

<p>After designing the feature, Mozilla allowed users to use it by opting into it,
first by enabling it in settings, then by performing a keyboard shortcut to
activate the popup each time.</p>

<p>Making the feature available in settings wasn’t going to juice the metrics
though, so Mozilla decided that they needed to put it in front of people who
weren’t checking out the settings UI.</p>

<p>Likely predicting backlash for enabling an AI feature by default, Mozilla
decided to split the original feature into two, so they could enable the non-AI
portion by default.</p>

<p>It really is that simple. Mozilla never designed Link Previews by itself, as the
feature is annoying, not very useful and also leaks your privacy.</p>

<p>It’s not even like we can point to people asking for this feature – I looked
for extensions that are similar to Link Previews, and
<a href="https://addons.mozilla.org/en-US/firefox/addon/linkover/">all of them</a>
<a href="https://addons.mozilla.org/en-US/firefox/addon/open-in-popup-window/">combined</a>
<a href="https://addons.mozilla.org/en-US/firefox/addon/open-in-popup/">total</a> up to
around 300 users.</p>

<figure class="image-row">
<a href="https://addons.mozilla.org/en-US/firefox/addon/open-in-popup-window/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/extension-open-in-popup-window.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/extension-open-in-popup-window.png" alt="Screenshot of Mozilla Add-ons page listing for Open in Popup Window" />
</picture>
</a>
<a href="https://addons.mozilla.org/en-US/firefox/addon/linkover/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/extension-linkover.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/extension-linkover.png" alt="Screenshot of Mozilla Add-ons page listing for Linkover" />
</picture>
</a>
<a href="https://addons.mozilla.org/en-US/firefox/addon/open-in-popup/">
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/extension-open-in-popup.avif" type="image/avif" />
<source srcset="https://www.quippd.com/assets/images/firefox/link-previews/extension-open-in-popup.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/link-previews/extension-open-in-popup.png" alt="Screenshot of Mozilla Add-ons page listing for Open in Popup" />
</picture>
</a>
  <figcaption>Link previewing extensions aren't very popular among Firefox fans</figcaption>
</figure>

<p>What’s really happening is that Mozilla wanted people using AI features, but
they want people to opt into them – likely so they could say that Firefox AI
features are always opt-in. How can you make that happen without actually
enabling AI across the board?</p>

<p>Mozilla figured it out - enable the feature without AI and use the stub feature
to advertise for the complete version. It is basically a demo advertising the
full version.</p>

<p>If this is how opt-ins look to Mozilla, it means that users can expect to be
nagged over and over to try AI features even though they hit the “kill switch”.
Clearly, Mozilla isn’t actually enabling AI, it is enabling an unrelated feature
that just suggests AI to you.</p>

<p>After having to opt out of being interrupted, Mozilla is insisting that this
counts as an opt-in.</p>

<p>Mozilla’s
<a href="https://mastodon.social/@firefoxwebdevs/115740500918701463">latest communications</a>
say that the kill switch will remove “<a href="entry points
to AI features">entry points to AI features</a>”, so even features newly invented to push AI should be disabled
when using the kill switch.</p>

<p>Hopefully that is the case, but it is worth observing what Firefox is becoming.
A minefield of pre-selected anti-features is Firefox’s present. With the
transformation to an AI browser, I’m sure we can expect to see more.</p>

<h2 id="an-alternative-opt-in">An Alternative Opt-In</h2>

<p>While I’m not a designer, I took a stab at imagining what an opt-in feature
would look like.</p>

<p>If summaries are really useful, people will opt into them.</p>

<p>That is the idea behind making summarization a new page action button in the
address bar.</p>

<p>Once you load a page, Firefox can advertise that it can summarize the page to
you.</p>

<p>
<figure>
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/ai-summary/Summarize1.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/ai-summary/Summarize1.png" alt="A screenshot of Firefox with a new lightning bolt in the address bar" />
</picture>
  <figcaption>⚡ marks the new summarize feature in the address bar</figcaption>
</figure>

<figure>
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/ai-summary/Summarize2.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/ai-summary/Summarize2.png" alt="Firefox showing the summarize tooltip on mouse cursor hover" />
</picture>
  <figcaption>The Summarize tooltip</figcaption>
</figure>
</p>

<p>Once you click the button, Firefox will show you the summary, in a reader-view
like format.</p>

<p>
<figure>
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/ai-summary/Summarize3.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/ai-summary/Summarize3.png" alt="Firefox is loading a summary - the caption is reticulating splines" />
</picture>
  <figcaption>Firefox summarizes the article</figcaption>
</figure>

<figure>
  
<picture>
<source srcset="https://www.quippd.com/assets/images/firefox/ai-summary/Summarize4.webp" type="image/webp" />
<img src="https://www.quippd.com/assets/images/firefox/ai-summary/Summarize4.png" alt="Firefox showing the summary" />
</picture>
  <figcaption>The summary is shown, like reader mode.</figcaption>
</figure>
</p>

<p>Unlike Link Previews, this version doesn’t ever get in your way.</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can
<a href="https://mastodon.social/@yoasif">message me</a> or follow
<a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="firefox" /><category term="mozilla" /><summary type="html"><![CDATA[TL;DR: Mozilla has a new CEO and a new mission: transform Firefox into an AI browser. That has run into some snags, as Firefox users don’t seem that interested in AI. Mozilla is forging ahead, utilizing deceptive patterns (previously known as dark patterns) to nag and annoy people into enabling AI features. You can see this in the introduction of Link Previews, an extremely invasive anti-feature that exists solely to push AI into your experience.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/Firefox%20Link%20Previews.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/Firefox%20Link%20Previews.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">AI’s Unpaid Debt: How LLM Scrapers Destroy the Social Contract of Open Source</title><link href="https://www.quippd.com/writing/2025/12/17/AIs-unpaid-debt-how-llm-scrapers-destroy-the-social-contract-of-open-source.html" rel="alternate" type="text/html" title="AI’s Unpaid Debt: How LLM Scrapers Destroy the Social Contract of Open Source" /><published>2025-12-17T13:26:00+00:00</published><updated>2025-12-17T13:26:00+00:00</updated><id>https://www.quippd.com/writing/2025/12/17/AIs-unpaid-debt-how-llm-scrapers-destroy-the-social-contract-of-open-source</id><content type="html" xml:base="https://www.quippd.com/writing/2025/12/17/AIs-unpaid-debt-how-llm-scrapers-destroy-the-social-contract-of-open-source.html"><![CDATA[<p><strong>TL;DR</strong>: The big tech AI company LLMs have gobbled up all of our data, but the
damage they have done to open source and free culture communities are
particularly insidious. By taking advantage of those who share freely, they
destroy the bargain that made free software spread like wildfire.</p>

<p>I made <a href="https://www.youtube.com/watch?v=H6mntOSKb1c">a video</a> if you
want to watch instead.</p>

<div class="video-container">
  <lite-youtube videoid="H6mntOSKb1c" playlabel="How Big Tech is Bankrupting the Open Web" style="background-image: url('https://i.ytimg.com/vi/H6mntOSKb1c/hqdefault.jpg');">
    <a href="https://youtube.com/watch?v=H6mntOSKb1c" class="lty-playbtn" title="Play Video">
      <span class="lyt-visually-hidden">Play Video: How Big Tech is Bankrupting the Open Web</span>
    </a>
  </lite-youtube>
</div>

<hr />

<ul id="markdown-toc">
  <li><a href="#open-source-history" id="markdown-toc-open-source-history">Open Source History</a>    <ul>
      <li><a href="#open-source-licensing" id="markdown-toc-open-source-licensing">Open Source Licensing</a></li>
    </ul>
  </li>
  <li><a href="#big-tech-ai" id="markdown-toc-big-tech-ai">Big Tech AI</a>    <ul>
      <li><a href="#damage-to-open-source-and-free-culture" id="markdown-toc-damage-to-open-source-and-free-culture">Damage to Open Source and Free Culture</a></li>
      <li><a href="#vocational-awe-and-sharing-communities" id="markdown-toc-vocational-awe-and-sharing-communities">Vocational Awe and Sharing Communities</a></li>
    </ul>
  </li>
  <li><a href="#the-aftermath-of-llm-piracy" id="markdown-toc-the-aftermath-of-llm-piracy">The Aftermath of LLM Piracy</a></li>
</ul>

<p>Last week, I argued that Mozilla’s <a href="/writing/2025/11/27/thank-mozilla-for-killing-localization-on-support-mozilla-and-replacing-human-contributions-with-AI-bots.html">replacement of volunteer contributions on
Support
Mozilla</a>
with AI translations was a
<a href="/writing/2025/12/08/mozillas-betrayal-of-open-source-googles-gemini-ai-is-overwriting-volunteer-work-on-support-mozilla.html">betrayal</a>
of Mozilla’s open source principles.</p>

<p>If you disagree, you might not realize that the AI companies have been pirating
from the commons, directly hurting open source. This is an important topic, so
I’m devoting the rest of this post to it.</p>

<h2 id="open-source-history">Open Source History</h2>

<p>This
<a href="https://fedia.io/m/technology@lemmy.world/t/3118437/-/comment/13302223">comment</a>
helped me realize that some of us are forgetting the role of copyright in open
source.</p>

<blockquote>
  <p>It’s funny seeing the sudden surge of “copyright is awesome!” On the Internet
now that it’s become a useful talking point to bludgeon the hated Abominable
Intelligence with.</p>
</blockquote>

<p>We can think about copyleft as a kind of hack of the copyright system.</p>

<p>What <em>is</em> copyleft?</p>

<p>The FSF <a href="https://www.gnu.org/licenses/copyleft.en.html">defines it</a> as a method
to make a work free “and requiring all modified versions to be free as well”.</p>

<p>The default way that copyright works is
<a href="https://www.copyright.gov/what-is-copyright/">when you create an original work, you own the copyright on that work</a>,
which gives you some exclusive rights over the intellectual property. Since
those rights are exclusive, you need to assign them to others if you want to
give them permission to exercise those rights.</p>

<p>Open source subverts the default notion of copyright. By releasing your work
under open licenses, the copyright owner grants others the same rights that the
copyright owner has over the work. Since that means that the copyright owner is
effectively giving the work away (with addtional restrictions, depending on the
license), it gives that work new life.</p>

<p>Like royalty free music on YouTube, people will spread the work, and the
community of people who find it useful can fix issues and add new features –
helping it spread even further.</p>

<p>The results are evident – open source lets hobbyists connected by the internet
to compete with software built by professionals working at big software
companies. According to a Harvard study,
<a href="https://www.heise.de/en/news/Harvard-study-Open-source-has-an-economic-value-of-8-8-trillion-dollars-10322643.html">open source has an economic value of $8.8 trillion</a>.</p>

<p>It is so powerful that it allowed <a href="https://kde.org/">KDE</a> to develop a browser
engine called <a href="https://en.wikipedia.org/wiki/KHTML">KHTML</a> that was eventually
forked by Apple to <a href="https://en.wikipedia.org/wiki/WebKit">WebKit</a>, then forked
again by Google to form
<a href="https://en.wikipedia.org/wiki/Blink_(browser_engine)">Blink</a>.</p>

<p>The two dominant browser engines on the market today are Blink and WebKit. These
engines power big tech web browsers like Chrome, Safari and Edge.</p>

<p>Open source is what propelled competition between Linux and its entirely open
source stack with huge big tech companies like Microsoft and Apple. Google’s
adoption of open source in Linux and Android helped eventually
<a href="https://arstechnica.com/gadgets/2017/10/windows-phone-is-now-officially-dead-a-sad-tale-of-what-might-have-been/">force Microsoft out of the mobile operating system market</a>.</p>

<p>The Linux desktop has even gotten to the point that
<a href="https://steamcommunity.com/groups/steamworks/announcements/detail/563639634283728255">Valve is promoting it as a gaming OS to run Windows games</a>.
You don’t even need to run a Microsoft OS to run Windows games anymore. Open
source really is powerful stuff.</p>

<h3 id="open-source-licensing">Open Source Licensing</h3>

<p>I’m talking about copyleft licenses, as they differ from “permissive” licenses
by preserving the openness of the original work by placing changes to the work
under the same open license. These licenses are also sometimes called “viral”
because by using the “virally licensed” work in another work, you transmit the
license (virus) to the new work.</p>

<p>The virality ensures that the work - freely given - <em>continues</em> to be given
freely.</p>

<p>Copyleft doesn’t just apply to software - user contributions on Wikipedia are
licensed under a
<a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike license</a>,
for example. This means that any edits people make to the encyclopedia are also
given freely.</p>

<p>The “share alike” in Wikipedia’s license is a covenant that Wikipedia has made
with its contributors, and that copyleft developers have made with open source
contributors.</p>

<h2 id="big-tech-ai">Big Tech AI</h2>

<p>Since arriving on the scene, AI companies have relied on massive data sets to
train their LLMs. The data sets include virtually anything posted online by
anyone - blog posts, books, music, illustrations, even things like reddit
comments.</p>

<p>While the AI companies have stolen from us all, I contend that open source and
free culture communities have been disproportionately damaged, and will continue
to be.</p>

<h3 id="damage-to-open-source-and-free-culture">Damage to Open Source and Free Culture</h3>

<p>The key covenant that differentiates copyleft licenses from permissive ones is
that they are shared alike. That is the bargain that the big tech content
pirates blow a hole through.</p>

<p>By incorporating copyleft data into their models, the LLMs <em>do</em> share the work -
but not alike. Instead, the AI strips the work of its provenance and transforms
it to be copyright free.</p>

<p>That is because the US copyright office has
<a href="https://www.copyright.gov/ai/Copyright-and-Artificial-Intelligence-Part-2-Copyrightability-Report.pdf">rightly advised that AI generated works are not copyrighted</a>.</p>

<p>This means that the LLMs are copyright removal devices - copy open source (or
proprietary!) data into it, and you get copyright free data on the other side
that you are free to plagiarize into newly copyrighted works.</p>

<p>While this process robs all copyright owners, it is particularly damaging to
people involved in sharing communities, since many are particpating not for
money but for the love of the game - what librarian Fobazi Ettarh calls
“<a href="https://www.inthelibrarywiththeleadpipe.org/2018/vocational-awe/">vocational awe</a>”.</p>

<h3 id="vocational-awe-and-sharing-communities">Vocational Awe and Sharing Communities</h3>

<p>Vocational awe explains why so many are willing to share freely with others -
even when being involved can be degrading and thankless. Ms. Ettarh invented the
term to describe how people who believe that they are serving the greater good
can be more easily taken advantage of.</p>

<p>It explains why people share even when they aren’t getting paid.</p>

<p>When was the last time you heard of a plumber who repaired leaks for free? It
doesn’t happen, so when AI comes for the plumbers, they will need to be coerced
for their training, or will need to be paid for it. Plumbers aren’t going to
work for free, and if they do, they know exactly how much they are donating.</p>

<h2 id="the-aftermath-of-llm-piracy">The Aftermath of LLM Piracy</h2>

<p>LLM piracy of open source works damages the value exchange that contributors
made to the community. When LLMs strip provenance from contributions, the
contract is broken - their contributions are no longer shared alike. Instead,
the contributions are stolen.</p>

<p>As Sean O’Brien, founder of the Yale Privacy Lab at Yale Law School
<a href="https://www.zdnet.com/article/why-open-source-may-not-survive-the-rise-of-generative-ai/">points out</a>:</p>

<blockquote>
  <p>“Now those same corporations are using that wealth and compute to train opaque
models on the very codebases that made their existence possible, and
threatening the legal structures, such as reciprocal or copyleft licenses like
GNU GPL, by labeling all the outputs of genAI chatbots public domain.”</p>
</blockquote>

<p>While many contributors will continue to give, others will rightly realize that
the bargain has shifted, and will stop contributing.</p>

<p>You can see that
<a href="https://observablehq.com/@ayhanfuat/the-fall-of-stack-overflow">shift happen</a>
on Stack Overflow, a popular question and answer site for programmers.</p>

<p>The data speaks for itself: 50% fewer posts and comments than before ChatGPT
became generally available.</p>

<p>Perhaps the people who might have contributed are instead helping to train a
chatbot like Copilot or Gemini. They aren’t helping the community anymore,
though.</p>

<p>Contributors need to ask themselves: <strong>Does it makes sense to continue to
contribute directly to the big tech LLMs for free?</strong></p>

<p>It isn’t as if they are also getting a (second?) big tech salary in the mail.</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can
<a href="https://mastodon.social/@yoasif">message me</a> or follow
<a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="open-source" /><category term="ai" /><category term="llm" /><summary type="html"><![CDATA[TL;DR: The big tech AI company LLMs have gobbled up all of our data, but the damage they have done to open source and free culture communities are particularly insidious. By taking advantage of those who share freely, they destroy the bargain that made free software spread like wildfire.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/BIG%20TECH%20AI.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/BIG%20TECH%20AI.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Mozilla’s Betrayal of Open Source: Google’s Gemini AI is Overwriting Volunteer Work on Support Mozilla</title><link href="https://www.quippd.com/writing/2025/12/08/mozillas-betrayal-of-open-source-googles-gemini-ai-is-overwriting-volunteer-work-on-support-mozilla.html" rel="alternate" type="text/html" title="Mozilla’s Betrayal of Open Source: Google’s Gemini AI is Overwriting Volunteer Work on Support Mozilla" /><published>2025-12-08T08:42:00+00:00</published><updated>2025-12-08T08:42:00+00:00</updated><id>https://www.quippd.com/writing/2025/12/08/mozillas-betrayal-of-open-source-googles-gemini-ai-is-overwriting-volunteer-work-on-support-mozilla</id><content type="html" xml:base="https://www.quippd.com/writing/2025/12/08/mozillas-betrayal-of-open-source-googles-gemini-ai-is-overwriting-volunteer-work-on-support-mozilla.html"><![CDATA[<p><strong>TL;DR</strong>: Mozilla’s translation bot on Support Mozilla (that is <a href="/writing/2025/11/27/thank-mozilla-for-killing-localization-on-support-mozilla-and-replacing-human-contributions-with-AI-bots.html">currently overwriting user contributions</a> is based on the closed source, copyright infringing LLM, Google Gemini. This is in spite of Mozilla claiming that they are at the forefront of open source AI, and belies their exhortations to choose to build open source AI and data sets. Although Mozilla has experience in attracting open contributions for data sets in projects like Common Voice, Mozilla is using a closed data set to overwrite open contributions. Since (paid) Gemini queries do not train the model, Mozillians can expect to <a href="/writing/2025/11/20/mozilla-support-update-end-of-japanese-community-mozilla-doubles-down-on-ai.html">correct errors every time the bot automatically updates</a> an article.</p>

<p>I made <a href="https://www.youtube.com/watch?v=TvPMZeFrr7s">a video</a> if you want to watch instead.</p>

<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/TvPMZeFrr7s" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>

<hr />

<ul id="markdown-toc">
  <li><a href="#google-gemini" id="markdown-toc-google-gemini">Google Gemini</a></li>
  <li><a href="#open-source" id="markdown-toc-open-source">Open Source</a>    <ul>
      <li><a href="#common-voice" id="markdown-toc-common-voice">Common Voice</a></li>
      <li><a href="#mozilla-is-biting-the-hands-that-feed-it" id="markdown-toc-mozilla-is-biting-the-hands-that-feed-it">Mozilla is Biting the Hand(s) that Feed It</a></li>
      <li><a href="#contributions-to-support-mozilla" id="markdown-toc-contributions-to-support-mozilla">Contributions to Support Mozilla</a></li>
    </ul>
  </li>
  <li><a href="#barreling-ahead-to-proprietary-ai" id="markdown-toc-barreling-ahead-to-proprietary-ai">Barreling Ahead to Proprietary AI</a></li>
</ul>

<p>In the world of open source, community contributions are the norm. That’s why Mozilla’s recent decision to <a href="/writing/2025/11/27/thank-mozilla-for-killing-localization-on-support-mozilla-and-replacing-human-contributions-with-AI-bots.html">overwrite community contributions with an AI-powered bot</a> feels like such a betrayal.</p>

<p>Given Mozilla’s open source history, you might assume that the <abbr title="artificial intelligence">AI</abbr> is powered by an open model with datasets available on <a href="https://datacollective.mozillafoundation.org/">Mozilla Data Collective</a>.</p>

<p>Mozilla’s leadership has recently been talking up open source <abbr title="artificial intelligence">AI</abbr>, saying that <a href="https://youtu.be/TvPMZeFrr7s?t=40">it is important to own what you build</a>.</p>

<p>I took a look at the Data Collective to see whether the Support Mozilla data set was there. <a href="https://datacollective.mozillafoundation.org/datasets?q=support">No such luck</a>.</p>

<p>I should have looked at the <a href="https://mozilla.github.io/kitsune/">Kitsune documentation</a> instead. <a href="https://github.com/mozilla/kitsune">Kitsune</a> is the software that runs <abbr title="Support Mozilla">SUMO</abbr>, and the Kitsune developers have helpfully documented the translation bot. Kitsune is the Japanese word for fox, and in <a href="https://en.wikipedia.org/wiki/Kitsune">Japanese folklore</a>, they are ascribed with intelligence and magical powers. Kitsune’s bot is built on top of Gemini 2.5 Pro, according to the docs.</p>

<h2 id="google-gemini">Google Gemini</h2>

<p>Unlike the vision that Mozilla is pitching elsewhere, Gemini 2.5 is <em>not</em> an open source model, with data coming from “publicly available sources”. We know what that means – Google pirated a whole lot of copyrighted material from the web.</p>

<p>The UK based Society of Authors wrote an <a href="https://societyofauthors.org/2023/12/20/calling-for-transparency-for-the-use-of-creators-works-in-googles-new-gemini-ai-system/">open letter to Google</a> upon the introduction of Gemini, saying:</p>

<blockquote>
  <p>The Society of Authors was greatly concerned to hear that, at the launch of Gemini pro, ‘Google repeatedly refused to answer questions from reporters about how it collected Gemini’s training data, where the training data came from and whether any of it was licensed from a third party’. Given the reportedly extensive infringement of copyright protected works that took place to build existing Large Language Models (LLMs), this continued lack of transparency is alarming and leads us to assume that Google has used creators’ works unlawfully and unfairly, without consent or any kind of remuneration.</p>
</blockquote>

<p>While we don’t yet know what the legal remedies for the copyright infringement used to create models like Gemini is going to end up looking like, there is no doubt that Gemini is both closed source and contains pirated material.</p>

<h2 id="open-source">Open Source</h2>

<h3 id="common-voice">Common Voice</h3>

<p>If you are involved in the wider Mozilla community, you may know about <a href="https://commonvoice.mozilla.org/en">Common Voice</a>. Common Voice is an open source data set of speech data of over 130 languages, all contributed by members of the community, including myself. This data is available to download on Mozilla’s new Data Collective.</p>

<p>The existence of the Common Voice data set demonstrates that people are willing to contribute to open data sets - companies don’t need to infringe on people’s copyrights in order to get access to training data.</p>

<h3 id="mozilla-is-biting-the-hands-that-feed-it">Mozilla is Biting the Hand(s) that Feed It</h3>

<p>In choosing closed source, infringing models, Mozilla is biting the hands of the community that feeds it.</p>

<p>Mozilla has experience in garnering community contributions to build open data sets. Instead of asking for their community’s help in developing an open source localization model, they deployed a closed source model and destroyed open contributions.</p>

<p>That makes Mozilla’s committment to open source <abbr title="artificial intelligence">AI</abbr> seem insincere.</p>

<p>Mozilla’s moves represent a double betrayal: first, they reject the community’s contributions to <abbr title="Support Mozilla">SUMO</abbr>’s knowledgebase, then to add insult to injury, they reject the very idea of open source by implementing a closed source model based on stolen data.</p>

<p>Mozilla’s Data Collective includes this blurb on the homepage:</p>

<blockquote>
  <p>Mozilla Data Collective is rebuilding the AI data ecosystem with communities at the centre. Access over 300 high-quality global datasets, built by and for the community in a transparent and ethical way.</p>
</blockquote>

<p>While Mozilla says that they are rebuilding <abbr title="artificial intelligence">AI</abbr> data ecosystems with communiites at the center, that isn’t what is happening on Support Mozilla. There, Mozilla is destroying a high quality data set built by the community in a transparent and ethical way.</p>

<p>What motivation do communities have to contribute to Mozilla projects or data sets if Mozilla itself does not privilege open source? The message Mozilla is sending when choosing to overwrite human contributions with stolen ones is that while Mozilla will gladly take your contributions, it is also willing to steal them.</p>

<h3 id="contributions-to-support-mozilla">Contributions to Support Mozilla</h3>

<p>The Gemini <a href="https://ai.google.dev/gemini-api/terms">terms of service</a> says that Google does not use submitted prompts to improve paid Gemini queries.</p>

<p>That means that overwrite over overwrite, any fixes that localizers make to the Mozilla knowledgebase can be overwritten at any moment by a bot that doesn’t learn.</p>

<p>The only way Kitsune developers can modify Gemini’s output is to modify the <a href="https://github.com/mozilla/kitsune/blob/main/kitsune/llm/l10n/prompt.py">prompt</a> that Mozilla sends to Google to provide a translation.</p>

<p>That changes the command that Mozilla sends Google, but it has <em>no effect</em> on the underlying model that contains the error being corrected.</p>

<p>Why should Mozillians bother to make corrections to a corpus that is prone to be overwritten by the whim of anyone making a modification to the American English version of an article when they know that that correction won’t stick – <em>can’t stick</em>, because Mozilla is throwing away the open data that they are contributing, release after release?</p>

<h2 id="barreling-ahead-to-proprietary-ai">Barreling Ahead to Proprietary AI</h2>

<p>Since the <a href="/writing/2025/11/20/mozilla-support-update-end-of-japanese-community-mozilla-doubles-down-on-ai.html">November <abbr title="Support Mozilla">SUMO</abbr> call</a>, Mozilla continues to barrel ahead towards the brave new world of proprietary <abbr title="artificial intelligence">AI</abbr>.</p>

<p>Following up from the call, Mozilla introduced a “<a href="https://support.mozilla.org/en-US/forums/contributors/717471">Feedback and Training Period</a>”, where they invited the community to study the machine translation bot and to provide feedback.</p>

<p>Their feedback process is not open – instead of asking for feedback on the forum where they made the announcement, they are telling the community to submit feedback in secret, to a <a href="https://docs.google.com/forms/d/e/1FAIpQLScCVm0TKwoT7V7hoE4LwwVda6321vRb9r4mvmKFu0bkgPHNPA/viewform?usp=publish-editor">Google form</a> monitored by Mozilla.</p>

<p>That seems like a way to quash negative feedback, and to allow only approved feedback to emerge. Why is Mozilla, an open company - operating in secrecy?</p>

<p>As Mozilla elicits feedback, the translation bot continues to run on Support Mozilla, overwriting community contributions. A recently opened Kitsune feature request reveals the challenging environment that contributors are operating in – contributors want a <a href="https://github.com/mozilla/sumo/issues/2674">listing of articles</a> that have been overwritten by the bot. They want it to look like an existing listing of <a href="https://support.mozilla.org/localization/unreviewed">unreviewed articles</a>.</p>

<p>A full month after <a href="/writing/2025/11/27/thank-mozilla-for-killing-localization-on-support-mozilla-and-replacing-human-contributions-with-AI-bots.html">marsf resigned</a> from <abbr title="Support Mozilla">SUMO</abbr> as Japanese locale leader, contributors are asking for an easier way to find the AI’s modifications.</p>

<p>Why is Mozilla barreling forward towards closed source AI? I have some ideas about that, but this post is already pretty long. Follow if you want to read my thoughts on that.</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can <a href="https://mastodon.social/@yoasif">message me</a> or follow <a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="firefox" /><category term="mozilla" /><summary type="html"><![CDATA[TL;DR: Mozilla’s translation bot on Support Mozilla (that is currently overwriting user contributions is based on the closed source, copyright infringing LLM, Google Gemini. This is in spite of Mozilla claiming that they are at the forefront of open source AI, and belies their exhortations to choose to build open source AI and data sets. Although Mozilla has experience in attracting open contributions for data sets in projects like Common Voice, Mozilla is using a closed data set to overwrite open contributions. Since (paid) Gemini queries do not train the model, Mozillians can expect to correct errors every time the bot automatically updates an article.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/%F0%9F%92%94.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/%F0%9F%92%94.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Thank Mozilla for Killing Localization on Support Mozilla (And Replacing Human Contributions With AI Bots)</title><link href="https://www.quippd.com/writing/2025/11/27/thank-mozilla-for-killing-localization-on-support-mozilla-and-replacing-human-contributions-with-AI-bots.html" rel="alternate" type="text/html" title="Thank Mozilla for Killing Localization on Support Mozilla (And Replacing Human Contributions With AI Bots)" /><published>2025-11-27T07:59:00+00:00</published><updated>2025-11-27T07:59:00+00:00</updated><id>https://www.quippd.com/writing/2025/11/27/thank-mozilla-for-killing-localization-on-support-mozilla-and-replacing-human-contributions-with-AI-bots</id><content type="html" xml:base="https://www.quippd.com/writing/2025/11/27/thank-mozilla-for-killing-localization-on-support-mozilla-and-replacing-human-contributions-with-AI-bots.html"><![CDATA[<p><strong>TL;DR</strong>: Mozilla is killing localization on Support Mozilla, overwriting articles written by humans with machine generated translations. Although Mozilla knows that their AI doesn’t localize or adhere to style guides, Mozilla is going live with it anyway. I thank locale leaders and localizers for their tireless efforts. Locale leaders seem to be obviated by AI, and Mozilla has nothing to say about it.</p>

<p>I made <a href="https://www.youtube.com/watch?v=5xaadPWNnYM">a video</a> if you want to watch instead.</p>

<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/5xaadPWNnYM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>

<hr />

<ul id="markdown-toc">
  <li><a href="#support-mozilla-sumo" id="markdown-toc-support-mozilla-sumo">Support Mozilla (SUMO)</a>    <ul>
      <li><a href="#contributions" id="markdown-toc-contributions">Contributions</a></li>
    </ul>
  </li>
  <li><a href="#japanese-locale-leader-resigns" id="markdown-toc-japanese-locale-leader-resigns">Japanese Locale Leader Resigns</a>    <ul>
      <li><a href="#locale-leaders" id="markdown-toc-locale-leaders">Locale Leaders</a></li>
      <li><a href="#resignation" id="markdown-toc-resignation">Resignation</a></li>
      <li><a href="#thank-you-marsf" id="markdown-toc-thank-you-marsf">Thank You, marsf</a></li>
    </ul>
  </li>
  <li><a href="#localization" id="markdown-toc-localization">Localization</a>    <ul>
      <li><a href="#mozillas-positions" id="markdown-toc-mozillas-positions">Mozilla’s Position(s)</a></li>
    </ul>
  </li>
  <li><a href="#mozilla-kills-localization" id="markdown-toc-mozilla-kills-localization">Mozilla Kills Localization</a></li>
</ul>

<p>My post about the deeper implications of what Mozilla is doing to the Support Mozilla community is coming, but I figured over the Thanksgiving holiday that I could focus on giving thanks.</p>

<p>While the title of this post is a bit tongue in cheek, I realized that some people didn’t know what was going on. <a href="https://support.mozilla.org">Support Mozilla</a> isn’t Firefox or Thunderbird, and if you aren’t aware of developments in AI or communities you might not be clear how it all affects you, a Mozilla user.</p>

<h2 id="support-mozilla-sumo">Support Mozilla (SUMO)</h2>

<p>Support Mozilla is Mozilla’s helpdesk and knowledgebase.</p>

<p>This is where you can get help for Mozilla products like Firefox and Thunderbird. The products themselves also link to the knowledgebase, in place of in-product documentation.</p>

<h3 id="contributions">Contributions</h3>

<p>The helpdesk and knowledgebase are all <a href="https://support.mozilla.org/en-US/contribute">volunteer driven</a>, and people spend hours of their time helping other people use and troubleshoot Mozilla products.</p>

<p>Mozilla isn’t shy about asking for people’s help on the Support Mozilla website -  their <a href="https://support.mozilla.org/en-US/contribute">website</a> says “save the world from the comfort of your couch”.</p>

<p>
	  <img src="https://www.quippd.com/assets/images/sumo/sumo-contribute.png" alt="Screenshot of the Mozilla Contribute page" />
</p>

<p>Contributors can <a href="https://support.mozilla.org/en-US/contribute/forum">answer support questions</a>, <a href="https://support.mozilla.org/en-US/contribute/kb">write help articles</a>, and they can also <a href="https://support.mozilla.org/en-US/contribute/l10n">localize support content</a>.</p>

<p>Mozilla is pretty complimentary towards their localizers, calling them “<a href="https://support.mozilla.org/en-US/contribute/l10n">heroic</a>”.</p>

<p>
	  <img src="https://www.quippd.com/assets/images/sumo/heroic.png" alt="Screenshot of the Mozilla Contribution Localization page" />
</p>

<h2 id="japanese-locale-leader-resigns">Japanese Locale Leader Resigns</h2>

<p>On November 4, the locale leader of the Japanese Support community on SUMO <a href="https://support.mozilla.org/en-US/forums/contributors/717446">very publicly resigned</a>.</p>

<p>
<figure>
	<picture>
	  <source type="image/png" srcset="https://www.quippd.com/assets/images/sumo/end-of-japanese-community.png,
	  								   https://www.quippd.com/assets/images/sumo/end-of-japanese-community-2x.png 2x" />
	  <img src="https://www.quippd.com/assets/images/sumo/end-of-japanese-community.png" srcset="https://www.quippd.com/assets/images/sumo/end-of-japanese-community-2x.png 2x" alt="Screenshot of a post by marsf, locale leader of the Japanese SUMO community, where they quit" />
	  <figcaption>marsf's post announcing their departure</figcaption>
	</picture>
</figure>
</p>

<p>You should read what marsf said themselves, but here’s my summary:</p>

<p>marsf has been contributing to Mozilla for over 20 years, even before Support Mozilla existed.</p>

<p>They were a <a href="https://support.mozilla.org/en-US/kb/how-be-sumo-locale-leader">locale leader</a>, someone who coordinates localization efforts for a locale.</p>

<p>Mozilla enabled machine translation on the Japanese locale on October 22. marsf quit on November 4. It took less than two weeks to scare away someone who had spent 20 years contributing to the Mozilla mission.</p>

<h3 id="locale-leaders">Locale Leaders</h3>

<p>Prior to the introduction of machine translation, <a href="https://support.mozilla.org/en-US/groups/sumo-locale-leaders/">locale leaders</a> were a core part of the localization process.</p>

<p>On Mozilla’s knowledgebase article for localization contributions, the <a href="https://support.mozilla.org/en-US/kb/how-contribute-article-localization">documented process is to send a locale leader a private message</a> to get started.</p>

<p>Let’s take a look at the kinds of things you do as a locale leader:</p>

<ul>
  <li>Greet new members of the SUMO community who want to localize into your language</li>
  <li>Work together with other Locale Leaders and Reviewers on guiding all Editors in their work:
    <ul>
      <li>through 1:1 mentoring on language and quality</li>
      <li>through documentation (for example, a Style Guide for your locale)</li>
    </ul>
  </li>
  <li>Provide fair reviews of contributions provided by all Editors in your locale – and provide constructive feedback on their quality, which includes:
    <ul>
      <li>Approving good revisions and encouraging Editors to continue their great work</li>
      <li>Rejecting revisions that can be improved, and letting their authors know what and why could be better</li>
    </ul>
  </li>
</ul>

<p>You can see that locale leaders do a lot of work to build community around localization.</p>

<p>This is all work that Mozilla is throwing away in its move to machine translation.</p>

<h3 id="resignation">Resignation</h3>

<p>It is easy to see why marsf is angry and in pain. As a locale leader, marsf maintained the <a href="https://mozilla-l10n.github.io/styleguides/ja/index.html">Japanese style guide</a>. As a <a href="https://support.mozilla.org/en-US/user/marsf/documents">contributor</a> for over 20 years, marsf likely had a hand in nearly every article on the locale.</p>

<p>Those were the articles that were overwritten by Mozilla and its machine translation bot, sumobot. The overwritten articles represented years of effort - a real labor of love, given that volunteers are unpaid.</p>

<p>Without discussion, without communication, without testing, untold years of human effort were overwritten by a machine with no love in its heart.</p>

<p>It is obvious that locale leaders are <a href="https://support.mozilla.org/en-US/forums/contributors/717446#post-89608">unable to foster a culture to train new contributors</a> in process and style if AI is providing machine translations.</p>

<h3 id="thank-you-marsf">Thank You, marsf</h3>

<p>Thank you for the over 20 years as a Mozillian. Thank you for helping Mozilla build culture. Thank you for helping millions of Japanese Mozilla fans. Thank you for caring.</p>

<p>Check out <a href="https://support.mozilla.org/en-US/user/marsf/">marsf’s profile on SUMO</a> - they’ve got a lot of badges!</p>

<h2 id="localization">Localization</h2>

<p>Some commenters say that none of this really matters. Machine translations are good now, it’s not like we’re really missing anything.</p>

<p>I got a great <a href="https://www.youtube.com/watch?v=m4Iwksydr5o&amp;lc=UgwOsX2Q7mViyIWzkap4AaABAg">comment</a> from <a href="https://www.youtube.com/@pandakekok9">pandakekok9</a> that dispels that notion. They say that Mozilla shouldn’t be calling what sumobot is doing “localization” if what it is doing is translation:</p>

<blockquote>
  <p>If that was the intent Mozilla, maybe don’t call what you’re doing “localization” then and just call it literal translation? A crucial difference between localization and translation is that former DOES add and change stuff that would not be found or recognizable in the original. As much as localization gets flak recently from Western fans of anime there are instances where localization works better than simply translating. Watch an episode of Keroro Gunsou / <a href="https://en.wikipedia.org/wiki/Sgt._Frog">Sgt. Frog</a> in English dub first, then the original Japanese dub with English subtitles. Each version has their own jokes and references that their intended audience get!</p>
</blockquote>

<p>lokalise.com says the <a href="https://lokalise.com/blog/translation-and-localization-difference/">difference between translation and localization</a> is:</p>

<blockquote>
  <p>Translation is the process of converting text from one language to another. Localization goes beyond translation to ensure content is culturally appropriate and well-received in the target market.</p>

  <p>Translation prioritizes language accuracy, while localization pays specific attention to cultural, social, and linguistic nuances.</p>
</blockquote>

<p>Before Mozilla introduced machine translations to SUMO, locale contributors referenced style guides to localize articles (e.g: the <a href="https://mozilla-l10n.github.io/styleguides/ja/index.html">Japanese</a> guide).</p>

<p>You might think that machine translations are good – we even have them in Firefox as a feature! While they <em>can</em> be good, do we <em>really</em> think they are better than a dedicated volunteer?</p>

<p>What Mozilla is telling us is that yes actually, the bots <em>are</em> better than a human.</p>

<h3 id="mozillas-positions">Mozilla’s Position(s)</h3>

<p>Mozilla gave <a href="https://linuxiac.com/ai-controversy-forces-end-of-mozilla-japanese-sumo-community/">linuxiac a statement</a> that doesn’t tell the truth.</p>

<blockquote>
  <p>These changes were designed to deliver additional translation support to our community and provide even more articles in local languages. Machine translation helps fill in the gaps, while contributors continue to review, edit, and approve translations to ensure quality and cultural accuracy. We introduced the change by sharing the update publicly, holding a call with the contributor community, and notifying each locale in advance of activation.</p>
</blockquote>

<p>Mozilla <a href="https://youtu.be/5xaadPWNnYM?t=311">says</a> that the point of machine translations is to fill in the gaps, and that humans continue to review and approve translations.</p>

<p>But marsf is telling us otherwise: the bot isn’t filling in the gaps, it is overwriting articles written by humans. Humans don’t need to approve the bot, the bot approves itself.</p>

<p>Mozilla knew when introducing machine translations that <a href="https://youtu.be/5xaadPWNnYM?t=417">the bot doesn’t respect the style guides</a> across various locales. Months later, marsf pointed out the same fact in their quit note.</p>

<p>A Dutch contributor on the call pointed out that although there may be multiple possible translations for a button’s label, Firefox will use a specific word. In those cases, the <a href="https://youtu.be/5xaadPWNnYM?t=455">localization community on SUMO would always use the language used in Firefox</a> - not an alternate translation. Just one example of localization not handled by Mozilla’s machine translation.</p>

<p>In the community call <a href="https://support.mozilla.org/en-US/forums/contributors/717385">introducing machine translations</a>, Mozilla said that they realize that <a href="https://youtu.be/5xaadPWNnYM?t=554">AI makes mistakes and that they don’t want to force this onto the community</a>.</p>

<p>Months later, when marsf pointed out that human contributions were being overwritten, Mozilla staff instead explained that <a href="https://youtu.be/5xaadPWNnYM?t=591s">it is logical for machines to overwrite human contributions</a>.</p>

<p>Mozilla clearly understands on multiple levels that the AI doesn’t actually localize articles, it simply translates them. If Mozilla cared about that, Mozilla would revert the changes sumobot made, and locale leaders could work with developers to ensure that sumobot adhered to the locale’s style guide.</p>

<p>Why hasn’t that happened?</p>

<h2 id="mozilla-kills-localization">Mozilla Kills Localization</h2>

<p>Everyone is on the same page: the AI doesn’t do localization.</p>

<p>Since Mozilla is going forward with overwriting localized articles with machine translated slop, Mozilla is telling their userbase that machine translations are good enough.</p>

<p>If Mozilla thought localization mattered, they would let their “heroic” localizers’ words stand, instead of automatically believing that the bots are doing a better job.</p>

<p>According to the <a href="https://support.mozilla.org/en-US/forums/contributors/717387">Machine Translations documentation</a>, Mozilla says:</p>

<blockquote>
  <p>If your revision is based on the MT version, your changes will not require additional approval before publishing.</p>
</blockquote>

<p>Mozilla is saying that they trust machine translation more than human contributions, even when those contributions have been previously approved.</p>

<p>This leaves locale leaders in a very strange place. They are clearly being ignored in the move to AI, and Mozilla has said nothing about their role going forward.</p>

<p>More miscommunication, I guess.</p>

<p>On this Thanksgiving day, let us give thanks to marsf and to all the other contributors on SUMO whose contributions are being unceremoniously overwritten by a bot that has no connection to the locale it is slopping about.</p>

<p><a href="/writing/2025/05/07/firefox-forever.html">Long live Mozilla</a>!</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can <a href="https://mastodon.social/@yoasif">message me</a> or follow <a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="firefox" /><category term="mozilla" /><summary type="html"><![CDATA[TL;DR: Mozilla is killing localization on Support Mozilla, overwriting articles written by humans with machine generated translations. Although Mozilla knows that their AI doesn’t localize or adhere to style guides, Mozilla is going live with it anyway. I thank locale leaders and localizers for their tireless efforts. Locale leaders seem to be obviated by AI, and Mozilla has nothing to say about it.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/Mozilla-Kills-Localization.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/Mozilla-Kills-Localization.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Mozilla Support Update: End of Japanese Community, Mozilla Doubles Down on AI</title><link href="https://www.quippd.com/writing/2025/11/20/mozilla-support-update-end-of-japanese-community-mozilla-doubles-down-on-ai.html" rel="alternate" type="text/html" title="Mozilla Support Update: End of Japanese Community, Mozilla Doubles Down on AI" /><published>2025-11-20T14:24:00+00:00</published><updated>2025-11-20T14:24:00+00:00</updated><id>https://www.quippd.com/writing/2025/11/20/mozilla-support-update-end-of-japanese-community-mozilla-doubles-down-on-ai</id><content type="html" xml:base="https://www.quippd.com/writing/2025/11/20/mozilla-support-update-end-of-japanese-community-mozilla-doubles-down-on-ai.html"><![CDATA[<p><strong>TL;DR</strong>: On the <a href="https://support.mozilla.org/en-US/forums/contributors/717462">November 2025 Mozilla Support Community call</a>, Mozilla provided updates on the <a href="/writing/2025/11/27/thank-mozilla-for-killing-localization-on-support-mozilla-and-replacing-human-contributions-with-AI-bots.html">disbandment of Japanese SUMO over AI</a>, calling it a “miscommunication” and “misinterpretation”.</p>

<p>During the call, Mozilla also doubled down on AI, confirming that volunteers would be unable to disable AI translations across the entire Mozilla knowledge-base, with the American English version of articles serving as the blessed, canonical version. Locale specific contributions will be overwritten (by design) by AI.</p>

<p>This means that without human intervention, Mozilla intends to roll out automated AI slop across the entire knowledge-base, especially for archival content.</p>

<p>I made <a href="https://youtu.be/m4Iwksydr5o">a video</a> if you want to watch instead.</p>

<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/m4Iwksydr5o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>

<hr />

<ul id="markdown-toc">
  <li><a href="#takeaways" id="markdown-toc-takeaways">Takeaways</a>    <ul>
      <li><a href="#the-reason-japanese-volunteers-on-support-mozilla-quit-is-because-of-miscommunication" id="markdown-toc-the-reason-japanese-volunteers-on-support-mozilla-quit-is-because-of-miscommunication">The Reason Japanese Volunteers on Support Mozilla Quit is Because of “Miscommunication”</a></li>
      <li><a href="#ai-cannot-be-disabled-on-a-per-locale-basis" id="markdown-toc-ai-cannot-be-disabled-on-a-per-locale-basis">AI Cannot be Disabled on a per Locale Basis</a></li>
      <li><a href="#bonus-takeaway" id="markdown-toc-bonus-takeaway">Bonus Takeaway</a></li>
    </ul>
  </li>
</ul>

<p>Mozilla had their <a href="https://support.mozilla.org/en-US/forums/contributors/717462">community call</a> yesterday, and it was pretty eventful.</p>

<p>While I am still thinking through the deeper implications of the latest updates from Mozilla, there are a couple of quick takeaways that I think are important to note.</p>

<h2 id="takeaways">Takeaways</h2>

<h3 id="the-reason-japanese-volunteers-on-support-mozilla-quit-is-because-of-miscommunication">The Reason Japanese Volunteers on Support Mozilla Quit is Because of “Miscommunication”</h3>

<p>You might have seen that Mozilla’s Volunteer Japanese  Support community <a href="https://support.mozilla.org/en-US/forums/contributors/717446">left very publicly</a> via a note on the Support forums.</p>

<p>This was due to the introduction of automated AI translations to Mozilla local communities.</p>

<p>The entire post by the locale leader, marsf is worth reading, and they raised a number of issues in it.</p>

<p>
<figure>
	<picture>
	  <source type="image/png" srcset="https://www.quippd.com/assets/images/sumo/end-of-japanese-community.png,
	  								   https://www.quippd.com/assets/images/sumo/end-of-japanese-community-2x.png 2x" />
	  <img src="https://www.quippd.com/assets/images/sumo/end-of-japanese-community.png" srcset="https://www.quippd.com/assets/images/sumo/end-of-japanese-community-2x.png 2x" alt="Screenshot of a post by marsf, locale leader of the Japanese SUMO community, where they quit" />
	  <figcaption>marsf's post announcing their departure</figcaption>
	</picture>
</figure>
</p>

<p>Mozilla’s official response to the team rage quitting is that it is all a <a href="https://www.youtube.com/watch?v=m4Iwksydr5o&amp;t=48s">big miscommunication</a> and that they continue to be in communication. It is ironic to me that since introducing AI translations, Mozilla is unable to communicate with volunteers that have been trusted to be Mozilla’s international voice for over 20 years.</p>

<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/m4Iwksydr5o?start=48" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>

<p>From my perspective, it doesn’t look like miscommunication at all.</p>

<p>On the call, Mozilla doubled down on many of the issues raised by the Japanese community.</p>

<p>Mozilla explicitly doesn’t care about custom localized content or community content guidelines - they don’t understand why localizers would want that, and they recommend that if volunteers don’t want content to be removed, that they should instead request that it be added to the US English version. They explain that this version <a href="https://www.quippd.com/assets/images/sumo/SUMO-Community-call-November 2025-MT-Principle.png">serves as the canonical source of truth for the automated translation engine</a>.</p>

<p>In one concession to international communities, Mozilla <a href="https://www.quippd.com/assets/images/sumo/SUMO-Community-call-November 2025-MT-Principle.png">increased the time before the AI overwrites human contributions from 72 hours to 7 days</a>. This is to work within volunteers’ real life schedules – and especially to give people the weekend to catch up on the edits generated by AI.</p>

<p>marsf noted that 300 <a href="https://en.wikipedia.org/wiki/AI_slop">slop</a> articles have been posted by Mozilla already. During the call, there was no mention that any of these articles would be reverted. Presumably, volunteers can go ahead and clean up after the AIs, if they so wish.</p>

<h3 id="ai-cannot-be-disabled-on-a-per-locale-basis">AI Cannot be Disabled on a per Locale Basis</h3>

<p>One of the first comments in the SUMO chat following the call from people who hadn’t watched it was <a href="https://matrix.to/#/!LxGoPWpREgbnMiZrmI:mozilla.org/$6Ib4nR2h51N_9J-6aw1a6PTh20E9_MdA6-wdyyyEmOg?via=mozilla.org&amp;via=matrix.org&amp;via=t2bot.io">whether it would be possible for specific locales to disable AI translation</a>.</p>

<p>
<figure>
	<picture>
	  <source type="image/png" srcset="https://www.quippd.com/assets/images/sumo/sumo-chat-nov-2025.png,
	  								   https://www.quippd.com/assets/images/sumo/sumo-chat-nov-2025-2x.png 2x" />
	  <img src="https://www.quippd.com/assets/images/sumo/sumo-chat-nov-2025.png" srcset="https://www.quippd.com/assets/images/sumo/sumo-chat-nov-2025-2x.png 2x" alt="Screenshot of the Support Mozilla (SUMO) chat on Matrix, showing a user asking if MT can be translated if a locale prefers it to be disabled" />
	  <figcaption>SUMO chat after the community call</figcaption>
	</picture>
</figure>
</p>

<p>Mozilla talked about this a few times on the call, and yeah… there is <a href="https://www.youtube.com/watch?v=m4Iwksydr5o&amp;t=237s">not going to be any way to disable AI translation</a> anywhere on the SUMO knowledgebase.</p>

<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/m4Iwksydr5o?start=237" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>

<p>Mozilla weirdly says the reason for this is that it serves as a “safety net”.</p>

<p>Personally, I don’t quite understand the safety net that doesn’t provide safety. This sounds a bit like jumping out of a plane without checking your parachute first. Sure, it might be fine, but are you going to risk your data to that? I guess non-American Firefox users are about to find out.</p>

<h3 id="bonus-takeaway">Bonus Takeaway</h3>

<p>Even though everyone outside of Mozilla is calling this AI, Mozilla insists on calling it “MT” (Machine Translation) – until they slip into calling it AI. It seems to me that they think they can avoid controversy by using a word that doesn’t remind people of AI.</p>

<p>I have a lot of other thoughts about the situation that I’ll be posting about soon, so if you are interested in  that, please subscribe.</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can <a href="https://mastodon.social/@yoasif">message me</a> or follow <a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="firefox" /><summary type="html"><![CDATA[TL;DR: On the November 2025 Mozilla Support Community call, Mozilla provided updates on the disbandment of Japanese SUMO over AI, calling it a “miscommunication” and “misinterpretation”.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/mozilla-ai.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/mozilla-ai.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Former NYC Deputy Mayor Gets the Data Wrong, Says 55% of NYC Residents Will Leave Within 5 Years</title><link href="https://www.quippd.com/writing/2025/06/26/former-nyc-deputy-mayor-gets-the-data-wrong-says-55-of-nyc-residents-will-leave-within-5-years.html" rel="alternate" type="text/html" title="Former NYC Deputy Mayor Gets the Data Wrong, Says 55% of NYC Residents Will Leave Within 5 Years" /><published>2025-06-26T17:24:00+00:00</published><updated>2025-06-26T17:24:00+00:00</updated><id>https://www.quippd.com/writing/2025/06/26/former-nyc-deputy-mayor-gets-the-data-wrong-says-55-of-nyc-residents-will-leave-within-5-years</id><content type="html" xml:base="https://www.quippd.com/writing/2025/06/26/former-nyc-deputy-mayor-gets-the-data-wrong-says-55-of-nyc-residents-will-leave-within-5-years.html"><![CDATA[<p><strong>TL;DR</strong>: Ed Skyler, Citi head of enterprise services and public affairs and former deputy mayor in the Bloomberg administration joined ‘Squawk Box’ to <a href="https://www.youtube.com/watch?v=qw-TNP_2X3k">discuss the results</a> from New York City’s Democratic mayoral primary.</p>

<p>Towards the <a href="https://youtu.be/qw-TNP_2X3k?si=2v3V5xcLL88PvuP6&amp;t=446">end</a> of his appearance, Skyler claimed that 55% of NYC was planning on leaving within 5 years. He said this to bolster his argument that NYC residents are leaving due to high taxes (among other reasons).</p>

<p>The <a href="https://cbcny.org/research/straight-new-yorkers-2025#migration">survey he references</a> says the opposite of what he claimed, however, with 19% of people planning to leave NYC within the next 5 years.</p>

<p>I made <a href="https://www.youtube.com/watch?v=WQkIgze3hi8">a video</a> if you want to watch instead.</p>

<p>
<figure>
	<a href="https://www.youtube.com/watch?v=WQkIgze3hi8">
	<picture>
	  <source type="image/png" srcset="https://www.quippd.com/assets/images/thumbnails/deputy-mayor.png,
	  								   https://www.quippd.com/assets/images/thumbnails/deputy-mayor-2x.png 2x" />
	  <img src="https://www.quippd.com/assets/images/thumbnails/deputy-mayor.png" srcset="https://www.quippd.com/assets/images/thumbnails/deputy-mayor-2x.png 2x" alt="A picture of a YouTube video" />
	  <figcaption>Former NYC Deputy Mayor Gets the Data Wrong, Says 55% of NYC Residents Will Leave Within 5 Years</figcaption>
	</picture>
	</a>
</figure>
</p>

<hr />


<p>As a New Yorker, I have been watching coverage of the election since the primary election.</p>

<p>Last night, I watched an interview on CNBC’s Squawk Box with a former deputy mayor under the Bloomberg administration.</p>

<p>Most of the interview went just as you might expect, but towards the end, the deputy mayor - Edward Skyler - who now works for Citibank as head of enterprise services and public affairs - drops some misinformation.</p>

<p>Check out the clip: <a href="https://youtu.be/qw-TNP_2X3k?si=2v3V5xcLL88PvuP6&amp;t=446">Former NYC Deputy Mayor: You saw a huge enthusiasm gap between Mamdani and Cuomo supporters</a>.</p>

<p>Mr. Skyler says that 55% of New Yorkers won’t be in New York in 5 years.</p>

<p>Usually, I don’t get too bothered about people getting things wrong, but this didn’t pass the smell test for me. A majority of New Yorkers were saying that they might leave the city within 5 years?</p>

<p>That didn’t sound right, so I decided to look into it.</p>

<p>No huge surprise – he’s totally wrong.</p>

<p>At first, I did a quick search on Google to help me find the exact statistic he’s referencing.</p>

<p>Google’s AI was really helpful in regurgitating the wrong information. The AI repeated some lies from the New York Post and NDTV, and even misrepresented what the makers of the survey - the Citizen’s Budget Commission - said.</p>

<p>
<figure>
<a href="https://www.quippd.com/assets/images/politics/ai-nyc-residents.png">
  <picture>
    <img src="https://www.quippd.com/assets/images/politics/ai-nyc-residents-small.png" alt="A screenshot my Google search query when getting information about the survey" />
  </picture>
  </a>
  <figcaption>A screenshot my Google search query when getting information about the survey</figcaption>
</figure>
</p>

<h3 class="no_toc" id="the-google-ai-response-verbatim">The Google AI response, verbatim</h3>

<p>The claim that “Fifty percent of New Yorkers say they plan to leave New York City over the next five years, according to a poll released Tuesday by the Citizens Budget Commission” appears to be based on the Citizens Budget Commission’s (CBC) “Straight from New Yorkers” survey</p>

<p><strong>Where it says this:</strong></p>

<ul>
  <li><strong>CBC Website:</strong> The CBC’s website and newsroom articles refer to the survey and state that 50.1% of New Yorkers planned to stay in the city over the next five years, down from 58.2% in 2017.</li>
  <li><strong>News Articles:</strong> Several news outlets, including the <a href="https://nypost.com/2024/03/19/us-news/less-than-one-in-three-yorkers-planning-to-flee-city-and-just-30-are-happy-with-quality-of-life-survey/">New York Post</a> and <a href="https://www.ndtv.com/world-news/half-of-new-yorkers-will-flee-city-in-next-5-years-as-quality-of-life-falls-poll-5276607">NDTV</a>, reported on the survey findings and the 50% figure.</li>
</ul>

<p><strong>The survey question:</strong></p>

<p>The wording of the specific survey question is not explicitly stated in the provided search results. However, based on the information provided, it’s highly probable the question was along the lines of asking residents about their intention to stay in New York City over the next five years. For example, the CBC states they asked residents if they “plan to stay in New York City in the next five years”.</p>

<p><strong>Important Notes:</strong></p>

<ul>
  <li>The 50% figure specifically refers to the percentage of New Yorkers who stated they <strong>plan to stay</strong> in the city, which is a decline from 2017. This does imply a large number of residents are considering leaving, but the original statement phrasing might be slightly misleading.</li>
  <li>The survey data suggests dissatisfaction with various aspects of life in NYC as primary reasons for considering leaving, including affordability, safety, and living space.</li>
  <li>New Yorkers’ desire for action on safety, housing, infrastructure, and cleanliness are also highlighted as key findings from the survey.</li>
</ul>

<hr />

<p>Since Google referenced those organizations specifically, let’s take a look at the supporting data before we move onto the actual study.</p>

<p>The New York Post says: “When asked if they planned to stay in the Big Apple until 2028, only 50% of those surveyed said yes, down from 58% in 2017, according to the CBC.”</p>

<p>NDTV references the 50% figure in the headline, but never actually supports it in the article.</p>

<p>Okay, let’s take a look at the survey.</p>

<p>The survey is called “<a href="https://cbcny.org/research/straight-new-yorkers-2025">Straight from New Yorkers 2025</a>” and is a survey of residents from across the 5 boroughs of 1,700 responses.</p>

<p>Let’s skip on down to the section we’re interested in.</p>

<p><a href="https://cbcny.org/research/straight-new-yorkers-2025#migration">Majority of New Yorkers say they will stay in NYC the next 5 years, but still lower than 2017</a></p>

<p>Remember that the former deputy mayor said that 55% of New Yorkers won’t be here in 5 years.</p>

<p>
<figure>
  <picture>
    <img src="https://www.quippd.com/assets/images/politics/figure-16-the-majority-of-new-yorkers-plan-to-stay-in-nyc-in-next-five-years.png" alt="A table showing whether New Yorkers plan to stay in NYC for next five years" />
  </picture>
  <figcaption>The Majority of New Yorkers Plan to Stay in NYC in Next Five Years</figcaption>
</figure>
</p>

<p>The survey says that 55% of New Yorkers will be <em>staying</em> over the next 5 years. If you look at the table, they also say that 19% of respondents say that they plan to leave within 5 years. This is an improvement from 2023, where respondents said that a quarter of them would be leaving within 5 years.</p>

<p>Clearly, they got it completely wrong. The deputy mayor was parroting misinformation from who knows where.</p>

<p>The anchor then asks a very reasonable question about who it was that was planning on leaving the city and why.</p>

<p>The only problem is, since the data wasn’t real to begin with, lacking the information, Mr. Skyler decided to guess in order to support his erroneous claim.</p>

<p>What’s the real reason?</p>

<p>The CBC has a handy graph for that too.</p>

<p>
<figure>
  <picture>
    <img src="https://www.quippd.com/assets/images/politics/figure-19-affordability-crime-and-space-top-factors-in-decision-to-leave-nyc.png" alt="A table containing the ratings of how important each of the following may be in decision to permanently move out of NYC, 2025" />
  </picture>
  <figcaption>Affordability, Crime, and Space Top Factors in Decision to Leave NYC</figcaption>
</figure>
</p>

<p>As you can see, the top three reasons are affordability, crime and safety and living space.</p>

<p>The survey itself says:</p>

<p>“These results reinforce the importance of New York City’s value proposition and ensuring the benefits of living here—cultural and social amenities, and economic opportunity—exceed the challenges of high costs, small apartments, and quality of life.”</p>

<p>Zohran Mamdani’s signature appeal in the primary election was a focus on affordability.</p>

<p>His <a href="https://www.zohranfornyc.com/">campaign website</a> says: “Zohran Mamdani
is running for Mayor to lower the cost of living for working class New Yorkers.”</p>

<p>
<figure>
  <picture>
    <source type="image/png" srcset="https://www.quippd.com/assets/images/politics/zohran-website.png,
              https://www.quippd.com/assets/images/politics/zohran-website-2x.png 2x" />
    <img src="https://www.quippd.com/assets/images/politics/zohran-website.png" srcset="https://www.quippd.com/assets/images/politics/zohran-website-2x.png 2x" alt="A screenshot Zohran Mamdani's campaign website" />
  </picture>
  <figcaption>Zohran Mamdani's campaign website</figcaption>
</figure>
</p>

<p>Unfortunately, over the next couple of months we’re going to see an uptick in the amount of misinformation being spread about this election - because we know that it works.</p>

<p>I hope that New Yorkers question the information they are receiving, because not everyone is interested in checking the information they are passing along. Sometimes, people are pushing a message that is based on half remembered statistics that say the opposite of what they thought.</p>

<p>Is CNBC going to issue a correction? I wouldn’t count on it.</p>

<hr />

<p>If you liked this material, please consider <a href="https://ko-fi.com/yoasif">supporting me</a>. You can <a href="https://mastodon.social/@yoasif">message me</a> or follow <a href="https://mastodon.social/@quippdblog">this blog</a> on Mastodon.</p>]]></content><author><name></name></author><category term="writing" /><category term="politics" /><summary type="html"><![CDATA[TL;DR: Ed Skyler, Citi head of enterprise services and public affairs and former deputy mayor in the Bloomberg administration joined ‘Squawk Box’ to discuss the results from New York City’s Democratic mayoral primary.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.quippd.com/assets/images/social-previews/deputy-mayor.png" /><media:content medium="image" url="https://www.quippd.com/assets/images/social-previews/deputy-mayor.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>