<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: open-source</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/open-source.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2026-06-05T11:10:05+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quoting Andreas Kling</title><link href="https://simonwillison.net/2026/Jun/5/andreas-kling/#atom-tag" rel="alternate"/><published>2026-06-05T11:10:05+00:00</published><updated>2026-06-05T11:10:05+00:00</updated><id>https://simonwillison.net/2026/Jun/5/andreas-kling/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://ladybird.org/posts/changing-how-we-develop-ladybird/"&gt;&lt;p&gt;We will no longer accept public pull requests. [...]&lt;/p&gt;
&lt;p&gt;A substantial patch used to imply substantial effort, and that effort was a reasonable proxy for good faith. That assumption no longer holds. [...]&lt;/p&gt;
&lt;p&gt;Whether code was typed by hand is beside the point. What matters is who is responsible for it once it enters the browser. Ladybird is becoming a browser for real users. The people introducing changes to it must be the people who decide those changes belong in the project, and who will answer for the consequences.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://ladybird.org/posts/changing-how-we-develop-ladybird/"&gt;Andreas Kling&lt;/a&gt;, Changing How We Develop Ladybird&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/andreas-kling"&gt;andreas-kling&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ladybird"&gt;ladybird&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="andreas-kling"/><category term="ladybird"/><category term="ai-ethics"/></entry><entry><title>I Am Retiring from Tech to Live Offline</title><link href="https://simonwillison.net/2026/May/30/retiring-from-tech-to-live-offline/#atom-tag" rel="alternate"/><published>2026-05-30T19:39:08+00:00</published><updated>2026-05-30T19:39:08+00:00</updated><id>https://simonwillison.net/2026/May/30/retiring-from-tech-to-live-offline/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://openpath.quest/2026/i-am-retiring-from-tech-to-live-offline/"&gt;I Am Retiring from Tech to Live Offline&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I've seen a lot of posts on forums from people threatening to quit their careers over AI. This is &lt;em&gt;not&lt;/em&gt; one of those: Chad Whitacre is taking concrete steps, starting with this typewritten, scanned letter&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I'm retiring from tech. Well, "retiring" is euphemistic. I'm stepping away from tech, and that includes Open Source. [...]&lt;/p&gt;
&lt;p&gt;AI was the last straw. Have you heard of that island off India where the indigenous population kills any outsiders fool-hardy enough to land? They are doing the rest of us a favor by preserving a way of life we may need again someday, or at the very least should not want to see completely extinguished. A reminder. Never forget your roots. Here in Pennsylvania we have the Amish performing a similar function. Significantly less hostile, though still set apart, they bear witness to what was normal for all of us a couple short centuries ago: horse and buggy, wood stoves and lanterns. My intent is to be AI Amish, which means Internet Amish. Not 1780, but 1980. Neo-Amish. I'm fine driving a car and flipping a lightswitch, by which I mean that they don't make me into something I hate, which AI and [struck through: social media] [handwritten above: doomscrolling] do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I'll admit that at first I wasn't entirely sure if this was serious. Then I found this earlier post by Chad from Feb 19 2026, &lt;a href="https://openpath.quest/2026/spitting-out-the-agentic-kool-aid/"&gt;Spitting Out the Agentic Kool-Aid&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I figured I’d better taste the Kool-Aid in order to form an opinion, so I dove into Claude Code with Opus 4.5 on a side project. I spent three 12+ hour days with it. I was intoxicated. My family was weirded out. [...]&lt;/p&gt;
&lt;p&gt;It weirded me out too, when I unplugged for a long weekend. Something felt off. It was like I had another “person” in my head, sharing my inner monologue—but the “person” was a computer system owned by a budding megacorp.&lt;/p&gt;
&lt;p&gt;[...] I am now also committing myself to disembarking from the titantic of technological accelerationism.&lt;/p&gt;
&lt;p&gt;All efforts to address the problems of invasive technology are worthwhile, even those that are only partially effective. For my part, I have started trying to return more fully to a pre-screen, analog life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's accompanied by &lt;a href="https://www.youtube.com/watch?v=DCC76jmmzkc"&gt;a video version of the essay&lt;/a&gt; which I found touching and sincere.&lt;/p&gt;
&lt;p&gt;Chad has been trying to solve the open source sustainability problem &lt;a href="https://simonwillison.net/2024/Jan/23/the-open-source-sustainability-crisis/"&gt;for &lt;em&gt;years&lt;/em&gt;&lt;/a&gt; - I talked with him about this at PyCon 2025 in Cleveland. That's a very tough nut to crack, and the disruption caused by AI looks to be making it even harder.&lt;/p&gt;
&lt;p&gt;I'm glad that the &lt;a href="https://endowment.dev/"&gt;Open Source
Endowment&lt;/a&gt; will continue without him. I'm very much going to miss his online voice.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=48323683"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chad-whitacre"&gt;chad-whitacre&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/deep-blue"&gt;deep-blue&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="chad-whitacre"/><category term="ai-ethics"/><category term="deep-blue"/></entry><entry><title>Quoting Armin Ronacher</title><link href="https://simonwillison.net/2026/May/24/armin-ronacher/#atom-tag" rel="alternate"/><published>2026-05-24T18:46:53+00:00</published><updated>2026-05-24T18:46:53+00:00</updated><id>https://simonwillison.net/2026/May/24/armin-ronacher/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://lucumr.pocoo.org/2026/5/24/pi-oss/"&gt;&lt;p&gt;The most frustrating failure mode right now is that people submit issues that are not in their own voice. They contain an observed problem somewhere, but it has been thrown into a clanker and the clanker reworded it and made a huge mess of it. Typically, it was prompted so badly that the conclusions produced are more often than not inaccurate but always full of confidence. The result is complete guesswork on root causes, fake-minimal repros, suggested implementation strategies, analogies to adjacent but often the wrong code, and long lists of error classes that might or might not matter. [...]&lt;/p&gt;
&lt;p&gt;So at least personally, I increasingly want issue reports to be condensed to what the human actually observed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I ran this command.&lt;/li&gt;
&lt;li&gt;I expected this to happen.&lt;/li&gt;
&lt;li&gt;This happened instead.&lt;/li&gt;
&lt;li&gt;Here is the exact error or log.&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://lucumr.pocoo.org/2026/5/24/pi-oss/"&gt;Armin Ronacher&lt;/a&gt;, on slop issues filed against &lt;a href="https://pi.dev/"&gt;Pi&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/armin-ronacher"&gt;armin-ronacher&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/slop"&gt;slop&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github-issues"&gt;github-issues&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pi"&gt;pi&lt;/a&gt;&lt;/p&gt;



</summary><category term="armin-ronacher"/><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="slop"/><category term="ai-ethics"/><category term="github-issues"/><category term="coding-agents"/><category term="pi"/></entry><entry><title>GDS weighs in on the NHS's decision to retreat from Open Source</title><link href="https://simonwillison.net/2026/May/17/gds-weighs-in/#atom-tag" rel="alternate"/><published>2026-05-17T15:59:41+00:00</published><updated>2026-05-17T15:59:41+00:00</updated><id>https://simonwillison.net/2026/May/17/gds-weighs-in/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://shkspr.mobi/blog/2026/05/gds-weighs-in-on-the-nhss-decision-to-retreat-from-open-source/"&gt;GDS weighs in on the NHS&amp;#x27;s decision to retreat from Open Source&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Terence Eden continues his coverage of the NHS' &lt;a href="https://shkspr.mobi/blog/2026/05/nhs-goes-to-war-against-open-source/"&gt;poorly considered decision&lt;/a&gt; to close down access to their open source repositories in response to vulnerabilities reported to them as part of &lt;a href="https://simonwillison.net/2026/Apr/7/project-glasswing/"&gt;Project Glasswing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now the Government Digital Service have joined the conversation with &lt;a href="https://www.gov.uk/guidance/ai-open-code-and-vulnerability-risk-in-the-public-sector"&gt;AI, open code and vulnerability risk in the public sector&lt;/a&gt;, published May 14th. Their key recommendation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Keep open by default. Making everything private adds additional delivery and policy costs, and can reduce reuse and scrutiny. Openness should remain the default posture, with closure used sparingly and deliberately. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While they don't mention the NHS by name, Terence speaks the language of the civil service and interprets this as a major escalation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Within the UK's Civil Service you occasionally hear the expression "being invited to a meeting &lt;em&gt;without biscuits&lt;/em&gt;". It implies a rather frosty discussion without any of the polite niceties of a normal meeting. In general though, even when people have severe disagreements, it is rare for tempers to fray. It is even rarer for those internal disagreements to spill over into public.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gov-uk"&gt;gov-uk&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/terence-eden"&gt;terence-eden&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="security"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="gov-uk"/><category term="terence-eden"/><category term="ai-ethics"/><category term="ai-security-research"/></entry><entry><title>The Zig project's rationale for their firm anti-AI contribution policy</title><link href="https://simonwillison.net/2026/Apr/30/zig-anti-ai/#atom-tag" rel="alternate"/><published>2026-04-30T01:24:23+00:00</published><updated>2026-04-30T01:24:23+00:00</updated><id>https://simonwillison.net/2026/Apr/30/zig-anti-ai/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;a href="https://ziglang.org/"&gt;Zig&lt;/a&gt; has one of the most stringent &lt;a href="https://ziglang.org/code-of-conduct/"&gt;anti-LLM policies&lt;/a&gt; of any major open source project:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No LLMs for issues.&lt;/p&gt;
&lt;p&gt;No LLMs for pull requests.&lt;/p&gt;
&lt;p&gt;No LLMs for comments on the bug tracker, including translation. English is encouraged, but not required. You are welcome to post in your native language and rely on others to have their own translation tools of choice to interpret your words.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The most prominent project written in Zig may be the &lt;a href="https://bun.com/"&gt;Bun&lt;/a&gt; JavaScript runtime, which was &lt;a href="https://bun.com/blog/bun-joins-anthropic"&gt;acquired by Anthropic&lt;/a&gt; in December 2025 and, unsurprisingly, makes heavy use of AI assistance.&lt;/p&gt;
&lt;p&gt;Bun operates its own fork of Zig, and recently &lt;a href="https://x.com/bunjavascript/status/2048427636414923250"&gt;achieved a 4x performance improvement&lt;/a&gt; on Bun compile after adding "parallel semantic analysis and multiple codegen units to the llvm backend". Here's &lt;a href="https://github.com/oven-sh/zig/compare/upgrade-0.15.2%E2%80%A6upgrade-0.15.2-fast"&gt;that code&lt;/a&gt;. But &lt;a href="https://twitter.com/bunjavascript/status/2048428104893542781"&gt;@bunjavascript says&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We do not currently plan to upstream this, as Zig has a strict ban on LLM-authored contributions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(Update: here's &lt;a href="https://ziggit.dev/t/bun-s-zig-fork-got-4x-faster-compilation-times/15183/19"&gt;a Zig core contributor&lt;/a&gt; providing details on why they wouldn't accept that particular patch independent of the LLM issue - parallel semantic analysis is a long planned feature but has implications "for the Zig language itself".)&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://kristoff.it/blog/contributor-poker-and-ai/"&gt;Contributor Poker and Zig's AI Ban&lt;/a&gt; (&lt;a href="https://lobste.rs/s/ifcyr1/contributor_poker_zig_s_ai_ban"&gt;via Lobste.rs&lt;/a&gt;) Zig Software Foundation VP of Community Loris Cro explains the rationale for this strict ban. It's the best articulation I've seen yet for a blanket ban on LLM-assisted contributions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In successful open source projects you eventually reach a point where you start getting more PRs than what you’re capable of processing. Given what I mentioned so far, it would make sense to stop accepting imperfect PRs in order to maximize ROI from your work, but that’s not what we do in the Zig project. Instead, &lt;strong&gt;we try our best to help new contributors to get their work in, even if they need some help getting there&lt;/strong&gt;. We don’t do this just because it’s the “right” thing to do, but also &lt;strong&gt;because it’s the smart thing to do&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Zig values contributors over their contributions. Each contributor represents an investment by the Zig core team - the primary goal of reviewing and accepting PRs isn't to land new code, it's to help grow new contributors who can become trusted and prolific over time.&lt;/p&gt;
&lt;p&gt;LLM assistance breaks that completely. It doesn't matter if the LLM helps you submit a &lt;em&gt;perfect&lt;/em&gt; PR to Zig - the time the Zig team spends reviewing your work does nothing to help them add new, confident, trustworthy contributors to their overall project.&lt;/p&gt;
&lt;p&gt;Loris explains the name here:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The reason I call it “contributor poker” is because, just like people say about the actual card game, “you play the person, not the cards”. In contributor poker, you bet on the contributor, not on the contents of their first PR.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This makes a lot of sense to me. It relates to an idea I've seen circulating elsewhere: if a PR was mostly written by an LLM, why should a project maintainer spend time reviewing and discussing that PR as opposed to firing up their own LLM to solve the same problem?&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zig"&gt;zig&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/bun"&gt;bun&lt;/a&gt;&lt;/p&gt;



</summary><category term="javascript"/><category term="open-source"/><category term="ai"/><category term="zig"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="anthropic"/><category term="ai-ethics"/><category term="bun"/></entry><entry><title>Join us at PyCon US 2026 in Long Beach - we have new AI and security tracks this year</title><link href="https://simonwillison.net/2026/Apr/17/pycon-us-2026/#atom-tag" rel="alternate"/><published>2026-04-17T23:59:03+00:00</published><updated>2026-04-17T23:59:03+00:00</updated><id>https://simonwillison.net/2026/Apr/17/pycon-us-2026/#atom-tag</id><summary type="html">
    &lt;p&gt;This year's &lt;a href="https://us.pycon.org/2026/"&gt;PyCon US&lt;/a&gt; is coming up next month from May 13th to May 19th, with the core conference talks from Friday 15th to Sunday 17th and tutorial and sprint days either side. It's in Long Beach, California this year, the first time PyCon US has come to the West Coast since Portland, Oregon in 2017 and the first time in California since Santa Clara in 2013.&lt;/p&gt;
&lt;p&gt;If you're based in California this is a great opportunity to catch up with the Python community, meet a whole lot of interesting people and learn a ton of interesting things.&lt;/p&gt;
&lt;p&gt;In addition to regular PyCon programming we have two new dedicated tracks at the conference this year: an &lt;a href="https://us.pycon.org/2026/tracks/ai/"&gt;AI track&lt;/a&gt; on Friday and a &lt;a href="https://us.pycon.org/2026/tracks/security/"&gt;Security track&lt;/a&gt; on Saturday.&lt;/p&gt;
&lt;p&gt;The AI program was put together by track chairs Silona Bonewald (CitableAI) and Zac Hatfield-Dodds (Anthropic). I'll be an in-the-room chair this year, introducing speakers and helping everything run as smoothly as possible.&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://us.pycon.org/2026/schedule/talks/#May15"&gt;the AI track schedule&lt;/a&gt; in full:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;11:00: &lt;a href="https://us.pycon.org/2026/schedule/presentation/105/"&gt;AI-Assisted Contributions and Maintainer Load&lt;/a&gt; - Paolo Melchiorre&lt;/li&gt;
&lt;li&gt;11:45: &lt;a href="https://us.pycon.org/2026/schedule/presentation/66/"&gt;AI-Powered Python Education : Towards Adaptive and Inclusive Learning&lt;/a&gt; - Sonny Mupfuni&lt;/li&gt;
&lt;li&gt;12:30: &lt;a href="https://us.pycon.org/2026/schedule/presentation/23/"&gt;Making African Languages Visible: A Python-Based Guide to Low-Resource Language ID&lt;/a&gt; - Gift Ojeabulu&lt;/li&gt;
&lt;li&gt;2:00: &lt;a href="https://us.pycon.org/2026/schedule/presentation/138/"&gt;Running Large Language Models on Laptops: Practical Quantization Techniques in Python&lt;/a&gt; - Aayush Kumar JVS&lt;/li&gt;
&lt;li&gt;2:45: &lt;a href="https://us.pycon.org/2026/schedule/presentation/126/"&gt;Distributing AI with Python in the Browser: Edge Inference and Flexibility Without Infrastructure&lt;/a&gt; - Fabio Pliger&lt;/li&gt;
&lt;li&gt;3:30: &lt;a href="https://us.pycon.org/2026/schedule/presentation/110/"&gt;Don't Block the Loop: Python Async Patterns for AI Agents&lt;/a&gt; - Aditya Mehra&lt;/li&gt;
&lt;li&gt;4:30: &lt;a href="https://us.pycon.org/2026/schedule/presentation/81/"&gt;What Python Developers Need to Know About Hardware: A Practical Guide to GPU Memory, Kernel Scheduling, and Execution Models&lt;/a&gt; - Santosh Appachu Devanira Poovaiah&lt;/li&gt;
&lt;li&gt;5:15: &lt;a href="https://us.pycon.org/2026/schedule/presentation/101/"&gt;How to Build Your First Real-Time Voice Agent in Python (Without Losing Your Mind)&lt;/a&gt; - Camila Hinojosa Añez, Elizabeth Fuentes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(And here's &lt;a href="https://gisthost.github.io/?dab27f61d85eb98f60db5991aa21ec89"&gt;how I scraped that as a Markdown list&lt;/a&gt; from the schedule page using Claude Code and &lt;a href="https://github.com/simonw/rodney"&gt;Rodney&lt;/a&gt;.)&lt;/p&gt;
&lt;h4 id="you-should-come-to-pycon-"&gt;You should come to PyCon US!&lt;/h4&gt;
&lt;p&gt;I've been going to PyCon for over twenty years now - I first went &lt;a href="https://simonwillison.net/2005/Mar/28/pycon/"&gt;back in 2005&lt;/a&gt;. It's one of my all-time favourite conference series. Even as it's grown to more than 2,000 attendees PyCon US has remained a heavily community-focused conference - it's the least &lt;em&gt;corporate&lt;/em&gt; feeling large event I've ever attended.&lt;/p&gt;
&lt;p&gt;The talks are always great, but it's the add-ons around the talks that really make it work for me. The &lt;a href="https://us.pycon.org/2026/events/lightning-talks/"&gt;lightning talks&lt;/a&gt; slots are some of the most heavily attended sessions. The PyLadies auction is always deeply entertaining. The sprints are an incredible opportunity to contribute directly to projects that you use, coached by their maintainers.&lt;/p&gt;
&lt;p&gt;In addition to scheduled talks, the event has &lt;strong&gt;open spaces&lt;/strong&gt;, where anyone can reserve space for a conversation about a topic - effectively PyCon's version of an &lt;a href="https://en.wikipedia.org/wiki/Unconference"&gt;unconference&lt;/a&gt;. I plan to spend a lot of my time in the open spaces this year - I'm hoping to join or instigate sessions about both &lt;a href="https://datasette.io/"&gt;Datasette&lt;/a&gt; and &lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/"&gt;agentic engineering&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm on the board of the Python Software Foundation, and PyCon US remains one of our most important responsibilities - in the past it's been a key source of funding for the organization, but it's also core to our mission to "promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers".&lt;/p&gt;
&lt;p&gt;&lt;small&gt;If you do come to Long Beach, we'd really appreciate it if you could book accommodation in the official hotel block, for reasons &lt;a href="https://pyfound.blogspot.com/2026/04/pycon-us-2026-hotels.html"&gt;outlined in this post on the PSF blog&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/conferences"&gt;conferences&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pycon"&gt;pycon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/psf"&gt;psf&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="conferences"/><category term="open-source"/><category term="pycon"/><category term="python"/><category term="ai"/><category term="psf"/></entry><entry><title>Cybersecurity Looks Like Proof of Work Now</title><link href="https://simonwillison.net/2026/Apr/14/cybersecurity-proof-of-work/#atom-tag" rel="alternate"/><published>2026-04-14T19:41:48+00:00</published><updated>2026-04-14T19:41:48+00:00</updated><id>https://simonwillison.net/2026/Apr/14/cybersecurity-proof-of-work/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.dbreunig.com/2026/04/14/cybersecurity-is-proof-of-work-now.html"&gt;Cybersecurity Looks Like Proof of Work Now&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The UK's AI Safety Institute recently published &lt;a href="https://www.aisi.gov.uk/blog/our-evaluation-of-claude-mythos-previews-cyber-capabilities"&gt;Our evaluation of Claude Mythos Preview’s cyber capabilities&lt;/a&gt;, their own independent analysis of &lt;a href="https://simonwillison.net/2026/Apr/7/project-glasswing/"&gt;Claude Mythos&lt;/a&gt; which backs up Anthropic's claims that it is exceptionally effective at identifying security vulnerabilities.&lt;/p&gt;
&lt;p&gt;Drew Breunig notes that AISI's report shows that the more tokens (and hence money) they spent the better the result they got, which leads to a strong economic incentive to spend as much as possible on security reviews:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If Mythos continues to find exploits so long as you keep throwing money at it, security is reduced to a brutally simple equation: &lt;strong&gt;to harden a system you need to spend more tokens discovering exploits than attackers will spend exploiting them&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;An interesting result of this is that open source libraries become &lt;em&gt;more&lt;/em&gt; valuable, since the tokens spent securing them can be shared across all of their users. This directly counters the idea that the low cost of vibe-coding up a replacement for an open source library makes those open source projects less attractive.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/drew-breunig"&gt;drew-breunig&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-coding"&gt;vibe-coding&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="drew-breunig"/><category term="vibe-coding"/><category term="ai-security-research"/></entry><entry><title>The Axios supply chain attack used individually targeted social engineering</title><link href="https://simonwillison.net/2026/Apr/3/supply-chain-social-engineering/#atom-tag" rel="alternate"/><published>2026-04-03T13:54:53+00:00</published><updated>2026-04-03T13:54:53+00:00</updated><id>https://simonwillison.net/2026/Apr/3/supply-chain-social-engineering/#atom-tag</id><summary type="html">
    &lt;p&gt;The Axios team have published a &lt;a href="https://github.com/axios/axios/issues/10636"&gt;full postmortem&lt;/a&gt; on the supply chain attack which resulted in a malware dependency going out &lt;a href="https://simonwillison.net/2026/Mar/31/supply-chain-attack-on-axios/"&gt;in a release the other day&lt;/a&gt;, and it involved a sophisticated social engineering campaign targeting one of their maintainers directly. Here's Jason Saayman'a description of &lt;a href="https://github.com/axios/axios/issues/10636#issuecomment-4180237789"&gt;how that worked&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;so the attack vector mimics what google has documented here: &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/unc1069-targets-cryptocurrency-ai-social-engineering"&gt;https://cloud.google.com/blog/topics/threat-intelligence/unc1069-targets-cryptocurrency-ai-social-engineering&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;they tailored this process specifically to me by doing the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;they reached out masquerading as the founder of a company they had cloned the companys founders likeness as well as the company itself.&lt;/li&gt;
&lt;li&gt;they then invited me to a real slack workspace. this workspace was branded to the companies ci and named in a plausible manner. the slack was thought out very well, they had channels where they were sharing linked-in posts, the linked in posts i presume just went to the real companys account but it was super convincing etc. they even had what i presume were fake profiles of the team of the company but also number of other oss maintainers.&lt;/li&gt;
&lt;li&gt;they scheduled a meeting with me to connect. the meeting was on ms teams. the meeting had what seemed to be a group of people that were involved.&lt;/li&gt;
&lt;li&gt;the meeting said something on my system was out of date. i installed the missing item as i presumed it was something to do with teams, and this was the RAT.&lt;/li&gt;
&lt;li&gt;everything was extremely well co-ordinated looked legit and was done in a professional manner.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;A RAT is a Remote Access Trojan - this was the software which stole the developer's credentials which could then be used to publish the malicious package.&lt;/p&gt;
&lt;p&gt;That's a &lt;em&gt;very effective&lt;/em&gt; scam. I join a lot of meetings where I find myself needing to install Webex or Microsoft Teams or similar at the last moment and the time constraint means I always click "yes" to things as quickly as possible to make sure I don't join late.&lt;/p&gt;
&lt;p&gt;Every maintainer of open source software used by enough people to be worth taking in this way needs to be familiar with this attack strategy.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/packaging"&gt;packaging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/social-engineering"&gt;social-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/supply-chain"&gt;supply-chain&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="open-source"/><category term="packaging"/><category term="security"/><category term="social-engineering"/><category term="supply-chain"/></entry><entry><title>Quoting Richard Fontana</title><link href="https://simonwillison.net/2026/Mar/27/richard-fontana/#atom-tag" rel="alternate"/><published>2026-03-27T21:11:17+00:00</published><updated>2026-03-27T21:11:17+00:00</updated><id>https://simonwillison.net/2026/Mar/27/richard-fontana/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://github.com/chardet/chardet/issues/334#issuecomment-4098524555"&gt;&lt;p&gt;FWIW, IANDBL, TINLA, etc., I don’t currently see any basis for concluding that chardet 7.0.0 is required to be released under the LGPL. AFAIK no one including Mark Pilgrim has identified persistence of copyrightable expressive material from earlier versions in 7.0.0 nor has anyone articulated some viable alternate theory of license violation. [...]&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://github.com/chardet/chardet/issues/334#issuecomment-4098524555"&gt;Richard Fontana&lt;/a&gt;, LGPLv3 co-author, weighing in on the &lt;a href="https://simonwillison.net/2026/Mar/5/chardet/"&gt;chardet relicensing situation&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="ai-ethics"/></entry><entry><title>Malicious litellm_init.pth in litellm 1.82.8 — credential stealer</title><link href="https://simonwillison.net/2026/Mar/24/malicious-litellm/#atom-tag" rel="alternate"/><published>2026-03-24T15:07:31+00:00</published><updated>2026-03-24T15:07:31+00:00</updated><id>https://simonwillison.net/2026/Mar/24/malicious-litellm/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/BerriAI/litellm/issues/24512"&gt;Malicious litellm_init.pth in litellm 1.82.8 — credential stealer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The LiteLLM v1.82.8 package published to PyPI was compromised with a particularly nasty credential stealer hidden in base64 in a &lt;code&gt;litellm_init.pth&lt;/code&gt; file, which means installing the package is enough to trigger it even without running &lt;code&gt;import litellm&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;(1.82.7 had the exploit as well but it was in the &lt;code&gt;proxy/proxy_server.py&lt;/code&gt; file so the package had to be imported for it to take effect.)&lt;/p&gt;
&lt;p&gt;This issue has a very detailed description of what the credential stealer does. There's more information about the timeline of the exploit &lt;a href="https://github.com/BerriAI/litellm/issues/24518"&gt;over here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PyPI has already &lt;a href="https://pypi.org/help/#project_in_quarantine"&gt;quarantined&lt;/a&gt; the &lt;a href="https://pypi.org/project/litellm/"&gt;litellm package&lt;/a&gt; so the window for compromise was just a few hours, but if you DID install the package it would have hoovered up a bewildering array of secrets, including &lt;code&gt;~/.ssh/&lt;/code&gt;, &lt;code&gt;~/.gitconfig&lt;/code&gt;, &lt;code&gt;~/.git-credentials&lt;/code&gt;, &lt;code&gt;~/.aws/&lt;/code&gt;, &lt;code&gt;~/.kube/&lt;/code&gt;, &lt;code&gt;~/.config/&lt;/code&gt;, &lt;code&gt;~/.azure/&lt;/code&gt;, &lt;code&gt;~/.docker/&lt;/code&gt;, &lt;code&gt;~/.npmrc&lt;/code&gt;, &lt;code&gt;~/.vault-token&lt;/code&gt;, &lt;code&gt;~/.netrc&lt;/code&gt;, &lt;code&gt;~/.lftprc&lt;/code&gt;, &lt;code&gt;~/.msmtprc&lt;/code&gt;, &lt;code&gt;~/.my.cnf&lt;/code&gt;, &lt;code&gt;~/.pgpass&lt;/code&gt;, &lt;code&gt;~/.mongorc.js&lt;/code&gt;, &lt;code&gt;~/.bash_history&lt;/code&gt;, &lt;code&gt;~/.zsh_history&lt;/code&gt;, &lt;code&gt;~/.sh_history&lt;/code&gt;, &lt;code&gt;~/.mysql_history&lt;/code&gt;, &lt;code&gt;~/.psql_history&lt;/code&gt;, &lt;code&gt;~/.rediscli_history&lt;/code&gt;, &lt;code&gt;~/.bitcoin/&lt;/code&gt;, &lt;code&gt;~/.litecoin/&lt;/code&gt;, &lt;code&gt;~/.dogecoin/&lt;/code&gt;, &lt;code&gt;~/.zcash/&lt;/code&gt;, &lt;code&gt;~/.dashcore/&lt;/code&gt;, &lt;code&gt;~/.ripple/&lt;/code&gt;, &lt;code&gt;~/.bitmonero/&lt;/code&gt;, &lt;code&gt;~/.ethereum/&lt;/code&gt;, &lt;code&gt;~/.cardano/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It looks like this supply chain attack started with the &lt;a href="https://www.crowdstrike.com/en-us/blog/from-scanner-to-stealer-inside-the-trivy-action-supply-chain-compromise/"&gt;recent exploit&lt;/a&gt; against &lt;a href="https://trivy.dev/"&gt;Trivy&lt;/a&gt;, ironically a security scanner tool that was used in CI &lt;a href="https://github.com/BerriAI/litellm/blob/9343aeefca37aa49a6ea54397d7615adae5c72c9/ci_cd/security_scans.sh#L16"&gt;by LiteLLM&lt;/a&gt;. The Trivy exploit likely resulted in stolen PyPI credentials which were then used to directly publish the vulnerable packages.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pypi"&gt;pypi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/supply-chain"&gt;supply-chain&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="pypi"/><category term="python"/><category term="security"/><category term="supply-chain"/></entry><entry><title>Experimenting with Starlette 1.0 with Claude skills</title><link href="https://simonwillison.net/2026/Mar/22/starlette/#atom-tag" rel="alternate"/><published>2026-03-22T23:57:44+00:00</published><updated>2026-03-22T23:57:44+00:00</updated><id>https://simonwillison.net/2026/Mar/22/starlette/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;a href="https://marcelotryle.com/blog/2026/03/22/starlette-10-is-here/"&gt;Starlette 1.0 is out&lt;/a&gt;! This is a really big deal. I think Starlette may be the Python framework with the most usage compared to its relatively low brand recognition because Starlette is the foundation of &lt;a href="https://fastapi.tiangolo.com/"&gt;FastAPI&lt;/a&gt;, which has attracted a huge amount of buzz that seems to have overshadowed Starlette itself.&lt;/p&gt;
&lt;p&gt;Kim Christie started working on Starlette in 2018 and it quickly became my favorite out of the new breed of Python ASGI frameworks. The only reason I didn't use it as the basis for my own &lt;a href="https://datasette.io/"&gt;Datasette&lt;/a&gt; project was that it didn't yet promise stability, and I was determined to provide a stable API for Datasette's own plugins... albeit I still haven't been brave enough to ship my own 1.0 release (after 26 alphas and counting)!&lt;/p&gt;
&lt;p&gt;Then in September 2025 Marcelo Trylesinski &lt;a href="https://github.com/Kludex/starlette/discussions/2997"&gt;announced that Starlette and Uvicorn were transferring to their GitHub account&lt;/a&gt;, in recognition of their many years of contributions and to make it easier for them to receive sponsorship against those projects.&lt;/p&gt;
&lt;p&gt;The 1.0 version has a few breaking changes compared to the 0.x series, described in &lt;a href="https://starlette.dev/release-notes/#100rc1-february-23-2026"&gt;the release notes for 1.0.0rc1&lt;/a&gt; that came out in February.&lt;/p&gt;
&lt;p&gt;The most notable of these is a change to how code runs on startup and shutdown. Previously that was handled by &lt;code&gt;on_startup&lt;/code&gt; and &lt;code&gt;on_shutdown&lt;/code&gt; parameters, but the new system uses a neat &lt;a href="https://starlette.dev/lifespan/"&gt;lifespan&lt;/a&gt; mechanism instead based around an &lt;a href="https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager"&gt;async context manager&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;span class="pl-en"&gt;@&lt;span class="pl-s1"&gt;contextlib&lt;/span&gt;.&lt;span class="pl-c1"&gt;asynccontextmanager&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-k"&gt;async&lt;/span&gt; &lt;span class="pl-k"&gt;def&lt;/span&gt; &lt;span class="pl-en"&gt;lifespan&lt;/span&gt;(&lt;span class="pl-s1"&gt;app&lt;/span&gt;):
    &lt;span class="pl-k"&gt;async&lt;/span&gt; &lt;span class="pl-k"&gt;with&lt;/span&gt; &lt;span class="pl-en"&gt;some_async_resource&lt;/span&gt;():
        &lt;span class="pl-en"&gt;print&lt;/span&gt;(&lt;span class="pl-s"&gt;"Run at startup!"&lt;/span&gt;)
        &lt;span class="pl-k"&gt;yield&lt;/span&gt;
        &lt;span class="pl-en"&gt;print&lt;/span&gt;(&lt;span class="pl-s"&gt;"Run on shutdown!"&lt;/span&gt;)

&lt;span class="pl-s1"&gt;app&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;Starlette&lt;/span&gt;(
    &lt;span class="pl-s1"&gt;routes&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s1"&gt;routes&lt;/span&gt;,
    &lt;span class="pl-s1"&gt;lifespan&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s1"&gt;lifespan&lt;/span&gt;
)&lt;/pre&gt;
&lt;p&gt;If you haven't tried Starlette before it feels to me like an asyncio-native cross between Flask and Django, unsurprising since creator Kim Christie is also responsible for Django REST Framework. Crucially, this means you can write most apps as a single Python file, Flask style.&lt;/p&gt;
&lt;p&gt;This makes it &lt;em&gt;really&lt;/em&gt; easy for LLMs to spit out a working Starlette app from a single prompt.&lt;/p&gt;
&lt;p&gt;There's just one problem there: if 1.0 breaks compatibility with the Starlette code that the models have been trained on, how can we have them generate code that works with 1.0?&lt;/p&gt;
&lt;p&gt;I decided to see if I could get this working &lt;a href="https://simonwillison.net/2025/Oct/16/claude-skills/"&gt;with a Skill&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="building-a-skill-with-claude"&gt;Building a Skill with Claude&lt;/h4&gt;
&lt;p&gt;Regular Claude Chat on &lt;a href="https://claude.ai/"&gt;claude.ai&lt;/a&gt; has skills, and one of those default skills is the &lt;a href="https://github.com/anthropics/skills/blob/main/skills/skill-creator/SKILL.md"&gt;skill-creator skill&lt;/a&gt;. This means Claude knows how to build its own skills.&lt;/p&gt;
&lt;p&gt;So I started &lt;a href="https://claude.ai/share/b537c340-aea7-49d6-a14d-3134aa1bd957"&gt;a chat session&lt;/a&gt; and told it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Clone Starlette from GitHub - it just had its 1.0 release. Build a skill markdown document for this release which includes code examples of every feature.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I didn't even tell it where to find the repo, Starlette is widely enough known that I expected it could find it on its own.&lt;/p&gt;
&lt;p&gt;It ran &lt;code&gt;git clone https://github.com/encode/starlette.git&lt;/code&gt; which is actually the old repository name, but GitHub handles redirects automatically so this worked just fine.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/simonw/research/blob/main/starlette-1-skill/SKILL.md"&gt;resulting skill document&lt;/a&gt; looked very thorough to me... and then I noticed a new button at the top I hadn't seen before labelled "Copy to your skills". So I clicked it:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/skill-button.jpg" alt="Screenshot of the Claude.ai interface showing a conversation titled &amp;quot;Starlette 1.0 skill document with code examples.&amp;quot; The left panel shows a chat where the user prompted: &amp;quot;Clone Starlette from GitHub - it just had its 1.0 release. Build a skill markdown document for this release which includes code examples of every feature.&amp;quot; Claude's responses include collapsed sections labeled &amp;quot;Strategized cloning repository and documenting comprehensive feature examples,&amp;quot; &amp;quot;Examined version details and surveyed source documentation comprehensively,&amp;quot; and &amp;quot;Synthesized Starlette 1.0 knowledge to construct comprehensive skill documentation,&amp;quot; with intermediate messages like &amp;quot;I'll clone Starlette from GitHub and build a comprehensive skill document. Let me start by reading the skill-creator guide and then cloning the repo,&amp;quot; &amp;quot;Now let me read through all the documentation files to capture every feature:&amp;quot; and &amp;quot;Now I have a thorough understanding of the entire codebase. Let me build the comprehensive skill document.&amp;quot; The right panel shows a skill preview pane with buttons &amp;quot;Copy to your skills&amp;quot; and &amp;quot;Copy&amp;quot; at the top, and a Description section reading: &amp;quot;Build async web applications and APIs with Starlette 1.0, the lightweight ASGI framework for Python. Use this skill whenever a user wants to create an async Python web app, REST API, WebSocket server, or ASGI application using Starlette. Triggers include mentions of 'Starlette', 'ASGI', async Python web frameworks, or requests to build lightweight async APIs, WebSocket services, streaming responses, or middleware pipelines. Also use when the user is working with FastAPI internals (which is built on Starlette), needs ASGI middleware patterns, or wants a minimal async web server&amp;quot; (text truncated)." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;And now my regular Claude chat has access to that skill!&lt;/p&gt;
&lt;h4 id="a-task-management-demo-app"&gt;A task management demo app&lt;/h4&gt;
&lt;p&gt;I started &lt;a href="https://claude.ai/share/b5285fbc-5849-4939-b473-dcb66f73503b"&gt;a new conversation&lt;/a&gt; and prompted:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Build a task management app with Starlette, it should have projects and tasks and comments and labels&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And Claude did exactly that, producing a simple GitHub Issues clone using Starlette 1.0, a SQLite database (via &lt;a href="https://github.com/omnilib/aiosqlite"&gt;aiosqlite&lt;/a&gt;) and a Jinja2 template.&lt;/p&gt;
&lt;p&gt;Claude even tested the app manually like this:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; /home/claude/taskflow &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; timeout 5 python -c &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;import asyncio&lt;/span&gt;
&lt;span class="pl-s"&gt;from database import init_db&lt;/span&gt;
&lt;span class="pl-s"&gt;asyncio.run(init_db())&lt;/span&gt;
&lt;span class="pl-s"&gt;print('DB initialized successfully')&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt; &lt;span class="pl-k"&gt;2&amp;gt;&amp;amp;1&lt;/span&gt;

pip install httpx --break-system-packages -q \
  &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="pl-c1"&gt;cd&lt;/span&gt; /home/claude/taskflow &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; \
  python -c &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;from starlette.testclient import TestClient&lt;/span&gt;
&lt;span class="pl-s"&gt;from main import app&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;client = TestClient(app)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;r = client.get('/api/stats')&lt;/span&gt;
&lt;span class="pl-s"&gt;print('Stats:', r.json())&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;r = client.get('/api/projects')&lt;/span&gt;
&lt;span class="pl-s"&gt;print('Projects:', len(r.json()), 'found')&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;r = client.get('/api/tasks')&lt;/span&gt;
&lt;span class="pl-s"&gt;print('Tasks:', len(r.json()), 'found')&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;r = client.get('/api/labels')&lt;/span&gt;
&lt;span class="pl-s"&gt;print('Labels:', len(r.json()), 'found')&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;r = client.get('/api/tasks/1')&lt;/span&gt;
&lt;span class="pl-s"&gt;t = r.json()&lt;/span&gt;
&lt;span class="pl-s"&gt;print(f'Task 1: &lt;span class="pl-cce"&gt;\"&lt;/span&gt;{t[&lt;span class="pl-cce"&gt;\"&lt;/span&gt;title&lt;span class="pl-cce"&gt;\"&lt;/span&gt;]}&lt;span class="pl-cce"&gt;\"&lt;/span&gt; - {len(t[&lt;span class="pl-cce"&gt;\"&lt;/span&gt;comments&lt;span class="pl-cce"&gt;\"&lt;/span&gt;])} comments, {len(t[&lt;span class="pl-cce"&gt;\"&lt;/span&gt;labels&lt;span class="pl-cce"&gt;\"&lt;/span&gt;])} labels')&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;r = client.post('/api/tasks', json={'title':'Test task','project_id':1,'priority':'high','label_ids':[1,2]})&lt;/span&gt;
&lt;span class="pl-s"&gt;print('Created task:', r.status_code, r.json()['title'])&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;r = client.post('/api/comments', json={'task_id':1,'content':'Test comment'})&lt;/span&gt;
&lt;span class="pl-s"&gt;print('Created comment:', r.status_code)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;r = client.get('/')&lt;/span&gt;
&lt;span class="pl-s"&gt;print('Homepage:', r.status_code, '- length:', len(r.text))&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;print('\nAll tests passed!')&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For all of the buzz about Claude Code, it's easy to overlook that Claude itself counts as a coding agent now, fully able to both write and then test the code that it is writing.&lt;/p&gt;
&lt;p&gt;Here's what the resulting app looked like. The code is &lt;a href="https://github.com/simonw/research/blob/main/starlette-1-skill/taskflow"&gt;here in my research repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/taskflow.jpg" alt="Screenshot of a dark-themed Kanban board app called &amp;quot;TaskFlow&amp;quot; showing the &amp;quot;Website Redesign&amp;quot; project. The left sidebar has sections &amp;quot;OVERVIEW&amp;quot; with &amp;quot;Dashboard&amp;quot;, &amp;quot;All Tasks&amp;quot;, and &amp;quot;Labels&amp;quot;, and &amp;quot;PROJECTS&amp;quot; with &amp;quot;Website Redesign&amp;quot; (1) and &amp;quot;API Platform&amp;quot; (0). The main area has three columns: &amp;quot;TO DO&amp;quot; (0) showing &amp;quot;No tasks&amp;quot;, &amp;quot;IN PROGRESS&amp;quot; (1) with a card titled &amp;quot;Blog about Starlette 1.0&amp;quot; tagged &amp;quot;MEDIUM&amp;quot; and &amp;quot;Documentation&amp;quot;, and &amp;quot;DONE&amp;quot; (0) showing &amp;quot;No tasks&amp;quot;. Top-right buttons read &amp;quot;+ New Task&amp;quot; and &amp;quot;Delete&amp;quot;." style="max-width: 100%;" /&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/asgi"&gt;asgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/kim-christie"&gt;kim-christie&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/skills"&gt;skills&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/starlette"&gt;starlette&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="open-source"/><category term="python"/><category term="ai"/><category term="asgi"/><category term="kim-christie"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="claude"/><category term="coding-agents"/><category term="skills"/><category term="agentic-engineering"/><category term="starlette"/></entry><entry><title>Quoting Tim Schilling</title><link href="https://simonwillison.net/2026/Mar/17/tim-schilling/#atom-tag" rel="alternate"/><published>2026-03-17T16:13:37+00:00</published><updated>2026-03-17T16:13:37+00:00</updated><id>https://simonwillison.net/2026/Mar/17/tim-schilling/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://www.better-simple.com/django/2026/03/16/give-django-your-time-and-money/"&gt;&lt;p&gt;If you do not understand the ticket, if you do not understand the solution, or if you do not understand the feedback on your PR, then your use of LLM is hurting Django as a whole. [...]&lt;/p&gt;
&lt;p&gt;For a reviewer, it’s demoralizing to communicate with a facade of a human.&lt;/p&gt;
&lt;p&gt;This is because contributing to open source, especially Django, is a communal endeavor. Removing your humanity from that experience makes that endeavor more difficult. If you use an LLM to contribute to Django, it needs to be as a complementary tool, not as your vehicle.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.better-simple.com/django/2026/03/16/give-django-your-time-and-money/"&gt;Tim Schilling&lt;/a&gt;, Give Django your time and money, not your tokens&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-ethics"/></entry><entry><title>Quoting Jannis Leidel</title><link href="https://simonwillison.net/2026/Mar/14/jannis-leidel/#atom-tag" rel="alternate"/><published>2026-03-14T18:41:25+00:00</published><updated>2026-03-14T18:41:25+00:00</updated><id>https://simonwillison.net/2026/Mar/14/jannis-leidel/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://jazzband.co/news/2026/03/14/sunsetting-jazzband"&gt;&lt;p&gt;GitHub’s &lt;a href="https://www.theregister.com/2026/02/18/godot_maintainers_struggle_with_draining/"&gt;slopocalypse&lt;/a&gt; – the flood of AI-generated spam PRs and issues – has made Jazzband’s model of open membership and shared push access untenable.&lt;/p&gt;
&lt;p&gt;Jazzband was designed for a world where the worst case was someone accidentally merging the wrong PR. In a world where &lt;a href="https://www.devclass.com/ai-ml/2026/02/19/github-itself-to-blame-for-ai-slop-prs-say-devs/4091420"&gt;only 1 in 10 AI-generated PRs meets project standards&lt;/a&gt;, where curl had to &lt;a href="https://daniel.haxx.se/blog/2026/01/26/the-end-of-the-curl-bug-bounty/"&gt;shut down its bug bounty&lt;/a&gt; because confirmation rates dropped below 5%, and where GitHub’s own response was a &lt;a href="https://www.theregister.com/2026/02/03/github_kill_switch_pull_requests_ai"&gt;kill switch to disable pull requests entirely&lt;/a&gt; – an organization that gives push access to everyone who joins simply can’t operate safely anymore.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://jazzband.co/news/2026/03/14/sunsetting-jazzband"&gt;Jannis Leidel&lt;/a&gt;, Sunsetting Jazzband&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="github"/><category term="open-source"/><category term="python"/><category term="ai"/><category term="ai-ethics"/></entry><entry><title>MALUS - Clean Room as a Service</title><link href="https://simonwillison.net/2026/Mar/12/malus/#atom-tag" rel="alternate"/><published>2026-03-12T20:08:55+00:00</published><updated>2026-03-12T20:08:55+00:00</updated><id>https://simonwillison.net/2026/Mar/12/malus/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://malus.sh/"&gt;MALUS - Clean Room as a Service&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Brutal satire on the whole vibe-porting license washing thing (&lt;a href="https://simonwillison.net/2026/Mar/5/chardet/"&gt;previously&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Finally, liberation from open source license obligations.&lt;/p&gt;
&lt;p&gt;Our proprietary AI robots independently recreate any open source project from scratch. The result? &lt;strong&gt;Legally distinct code&lt;/strong&gt; with corporate-friendly licensing. No attribution. No copyleft. No problems..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I admit it took me a moment to confirm that this was a joke. Just too on-the-nose.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=47350424"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-porting"&gt;vibe-porting&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-ethics"/><category term="vibe-porting"/></entry><entry><title>Codex for Open Source</title><link href="https://simonwillison.net/2026/Mar/7/codex-for-open-source/#atom-tag" rel="alternate"/><published>2026-03-07T18:13:39+00:00</published><updated>2026-03-07T18:13:39+00:00</updated><id>https://simonwillison.net/2026/Mar/7/codex-for-open-source/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://developers.openai.com/codex/community/codex-for-oss"&gt;Codex for Open Source&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Anthropic announced six months of free Claude Max for maintainers of popular open source projects (5,000+ stars or 1M+ NPM downloads) &lt;a href="https://simonwillison.net/2026/Feb/27/claude-max-oss-six-months/"&gt;on 27th February&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now OpenAI have launched their comparable offer: six months of ChatGPT Pro (same $200/month price as Claude Max) with Codex and "conditional access to Codex Security" for core maintainers.&lt;/p&gt;
&lt;p&gt;Unlike Anthropic they don't hint at the exact metrics they care about, but the &lt;a href="https://openai.com/form/codex-for-oss/"&gt;application form&lt;/a&gt; does ask for "information such as GitHub stars, monthly downloads, or why the project is important to the ecosystem."

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/openaidevs/status/2029998191043911955"&gt;@openaidevs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/codex"&gt;codex&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="codex"/></entry><entry><title>Can coding agents relicense open source through a “clean room” implementation of code?</title><link href="https://simonwillison.net/2026/Mar/5/chardet/#atom-tag" rel="alternate"/><published>2026-03-05T16:49:33+00:00</published><updated>2026-03-05T16:49:33+00:00</updated><id>https://simonwillison.net/2026/Mar/5/chardet/#atom-tag</id><summary type="html">
    &lt;p&gt;Over the past few months it's become clear that coding agents are extraordinarily good at building a weird version of a "clean room" implementation of code.&lt;/p&gt;
&lt;p&gt;The most famous version of this pattern is when Compaq created a clean-room clone of the IBM BIOS back &lt;a href="https://en.wikipedia.org/wiki/Compaq#Introduction_of_Compaq_Portable"&gt;in 1982&lt;/a&gt;. They had one team of engineers reverse engineer the BIOS to create a specification, then handed that specification to another team to build a new ground-up version.&lt;/p&gt;
&lt;p&gt;This process used to take multiple teams of engineers weeks or months to complete. Coding agents can do a version of this in hours - I experimented with a variant of this pattern against &lt;a href="https://simonwillison.net/2025/Dec/15/porting-justhtml/"&gt;JustHTML&lt;/a&gt; back in December.&lt;/p&gt;
&lt;p&gt;There are a &lt;em&gt;lot&lt;/em&gt; of open questions about this, both ethically and legally. These appear to be coming to a head in the venerable &lt;a href="https://github.com/chardet/chardet"&gt;chardet&lt;/a&gt; Python library.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;chardet&lt;/code&gt; was created by Mark Pilgrim &lt;a href="https://pypi.org/project/chardet/1.0/"&gt;back in 2006&lt;/a&gt; and released under the LGPL. Mark retired from public internet life in 2011 and chardet's maintenance was taken over by others, most notably Dan Blanchard who has been responsible for every release since &lt;a href="https://pypi.org/project/chardet/1.1/"&gt;1.1 in July 2012&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Two days ago Dan released &lt;a href="https://github.com/chardet/chardet/releases/tag/7.0.0"&gt;chardet 7.0.0&lt;/a&gt; with the following note in the release notes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ground-up, MIT-licensed rewrite of chardet. Same package name, same public API — drop-in replacement for chardet 5.x/6.x. Just way faster and more accurate!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yesterday Mark Pilgrim opened &lt;a href="https://github.com/chardet/chardet/issues/327"&gt;#327: No right to relicense this project&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] First off, I would like to thank the current maintainers and everyone who has contributed to and improved this project over the years. Truly a Free Software success story.&lt;/p&gt;
&lt;p&gt;However, it has been brought to my attention that, in the release &lt;a href="https://github.com/chardet/chardet/releases/tag/7.0.0"&gt;7.0.0&lt;/a&gt;, 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dan's &lt;a href="https://github.com/chardet/chardet/issues/327#issuecomment-4005195078"&gt;lengthy reply&lt;/a&gt; included:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You're right that I have had extensive exposure to the original codebase: I've been maintaining it for over a decade. A traditional clean-room approach involves a strict separation between people with knowledge of the original and people writing the new implementation, and that separation did not exist here.&lt;/p&gt;
&lt;p&gt;However, the purpose of clean-room methodology is to ensure the resulting code is not a derivative work of the original. It is a means to an end, not the end itself. In this case, I can demonstrate that the end result is the same — the new code is structurally independent of the old code — through direct measurement rather than process guarantees alone.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dan goes on to present results from the &lt;a href="https://github.com/jplag/JPlag"&gt;JPlag&lt;/a&gt; tool - which describes itself as  "State-of-the-Art Source Code Plagiarism &amp;amp; Collusion Detection" - showing that the new 7.0.0 release has a max similarity of 1.29% with the previous release and 0.64% with the 1.1 version. Other release versions had similarities more in the 80-93% range.&lt;/p&gt;
&lt;p&gt;He then shares critical details about his process, highlights mine:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For full transparency, here's how the rewrite was conducted. I used the &lt;a href="https://github.com/obra/superpowers"&gt;superpowers&lt;/a&gt; brainstorming skill to create a &lt;a href="https://github.com/chardet/chardet/commit/f51f523506a73f89f0f9538fd31be458d007ab93"&gt;design document&lt;/a&gt; specifying the architecture and approach I wanted based on the following requirements I had for the rewrite [...]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I then started in an empty repository with no access to the old source tree, and explicitly instructed Claude not to base anything on LGPL/GPL-licensed code&lt;/strong&gt;. I then reviewed, tested, and iterated on every piece of the result using Claude. [...]&lt;/p&gt;
&lt;p&gt;I understand this is a new and uncomfortable area, and that using AI tools in the rewrite of a long-standing open source project raises legitimate questions. But the evidence here is clear: 7.0 is an independent work, not a derivative of the LGPL-licensed codebase. The MIT license applies to it legitimately.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since the rewrite was conducted using Claude Code there are a whole lot of interesting artifacts available in the repo. &lt;a href="https://github.com/chardet/chardet/blob/925bccbc85d1b13292e7dc782254fd44cc1e7856/docs/plans/2026-02-25-chardet-rewrite-plan.md"&gt;2026-02-25-chardet-rewrite-plan.md&lt;/a&gt; is particularly detailed, stepping through each stage of the rewrite process in turn - starting with the tests, then fleshing out the planned replacement code.&lt;/p&gt;
&lt;p&gt;There are several twists that make this case particularly hard to confidently resolve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dan has been immersed in chardet for over a decade, and has clearly been strongly influenced by the original codebase.&lt;/li&gt;
&lt;li&gt;There is one example where Claude Code referenced parts of the codebase while it worked, as shown in &lt;a href="https://github.com/chardet/chardet/blob/925bccbc85d1b13292e7dc782254fd44cc1e7856/docs/plans/2026-02-25-chardet-rewrite-plan.md#task-3-encoding-registry"&gt;the plan&lt;/a&gt; - it looked at &lt;a href="https://github.com/chardet/chardet/blob/f0676c0d6a4263827924b78a62957547fca40052/chardet/metadata/charsets.py"&gt;metadata/charsets.py&lt;/a&gt;, a file that lists charsets and their properties expressed as a dictionary of dataclasses.&lt;/li&gt;
&lt;li&gt;More complicated: Claude itself was very likely trained on chardet as part of its enormous quantity of training data - though we have no way of confirming this for sure. Can a model trained on a codebase produce a morally or legally defensible clean-room implementation?&lt;/li&gt;
&lt;li&gt;As discussed in &lt;a href="https://github.com/chardet/chardet/issues/36"&gt;this issue from 2014&lt;/a&gt; (where Dan first openly contemplated a license change) Mark Pilgrim's original code was a manual port from C to Python of Mozilla's MPL-licensed character detection library.&lt;/li&gt;
&lt;li&gt;How significant is the fact that the new release of chardet used the same PyPI package name as the old one? Would a fresh release under a new name have been more defensible?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have no idea how this one is going to play out. I'm personally leaning towards the idea that the rewrite is legitimate, but the arguments on both sides of this are entirely credible.&lt;/p&gt;
&lt;p&gt;I see this as a microcosm of the larger question around coding agents for fresh implementations of existing, mature code. This question is hitting the open source world first, but I expect it will soon start showing up in Compaq-like scenarios in the commercial world.&lt;/p&gt;
&lt;p&gt;Once commercial companies see that their closely held IP is under threat I expect we'll see some well-funded litigation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update 6th March 2026&lt;/strong&gt;: A detail that's worth emphasizing is that Dan does &lt;em&gt;not&lt;/em&gt; claim that the new implementation is a pure "clean room" rewrite. Quoting &lt;a href="https://github.com/chardet/chardet/issues/327#issuecomment-4005195078"&gt;his comment&lt;/a&gt; again:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A traditional clean-room approach involves a strict separation between people with knowledge of the original and people writing the new implementation, and that separation did not exist here.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can't find it now, but I saw a comment somewhere that pointed out the absurdity of Dan being blocked from working on a new implementation of character detection as a result of the volunteer effort he put into helping to maintain an existing open source library in that domain.&lt;/p&gt;
&lt;p&gt;I enjoyed Armin's take on this situation in &lt;a href="https://lucumr.pocoo.org/2026/3/5/theseus/"&gt;AI And The Ship of Theseus&lt;/a&gt;, in particular:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There are huge consequences to this. When the cost of generating code goes down that much, and we can re-implement it from test suites alone, what does that mean for the future of software? Will we see a lot of software re-emerging under more permissive licenses? Will we see a lot of proprietary software re-emerging as open source? Will we see a lot of software re-emerging as proprietary?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p id="march-27th"&gt;&lt;strong&gt;Update 27th March 2026&lt;/strong&gt;: Here's &lt;a href="https://github.com/chardet/chardet/issues/334#issuecomment-4098524555"&gt;a comment&lt;/a&gt; from &lt;a href="https://en.wikipedia.org/wiki/Richard_Fontana"&gt;Richard Fontana&lt;/a&gt;, one of the authors of the GPLv3 and LGPLv3 licenses, providing his own TINLA ("This Is Not Legal Advice") take on the situation:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;[...] FWIW, IANDBL, TINLA, etc., I don't currently see any basis for concluding that chardet 7.0.0 is required to be released under the LGPL. AFAIK no one including Mark Pilgrim has identified persistence of copyrightable expressive material from earlier versions in 7.0.0 nor has anyone articulated some viable alternate theory of license violation. I don't think I personally would have used the MIT license here, even if I somehow rewrote everything from scratch without the use of AI in a way that didn't implicate obligations flowing from earlier versions of chardet, but that's irrelevant.&lt;/p&gt;&lt;/blockquote&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/licensing"&gt;licensing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-porting"&gt;vibe-porting&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="licensing"/><category term="mark-pilgrim"/><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="ai-ethics"/><category term="coding-agents"/><category term="vibe-porting"/></entry><entry><title>Free Claude Max for (large project) open source maintainers</title><link href="https://simonwillison.net/2026/Feb/27/claude-max-oss-six-months/#atom-tag" rel="alternate"/><published>2026-02-27T18:08:22+00:00</published><updated>2026-02-27T18:08:22+00:00</updated><id>https://simonwillison.net/2026/Feb/27/claude-max-oss-six-months/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://claude.com/contact-sales/claude-for-oss"&gt;Free Claude Max for (large project) open source maintainers&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Anthropic are now offering their $200/month Claude Max 20x plan for free to open source maintainers... for six months... and you have to meet the following criteria:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Maintainers:&lt;/strong&gt; You're a primary maintainer or core team member of a public repo with 5,000+ GitHub stars &lt;em&gt;or&lt;/em&gt; 1M+ monthly NPM downloads. You've made commits, releases, or PR reviews within the last 3 months.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don't quite fit the criteria&lt;/strong&gt; If you maintain something the ecosystem quietly depends on, apply anyway and tell us about it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Also in the small print: "Applications are reviewed on a rolling basis. We accept up to 10,000 contributors".

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=47178371"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/></entry><entry><title>tldraw issue: Move tests to closed source repo</title><link href="https://simonwillison.net/2026/Feb/25/closed-tests/#atom-tag" rel="alternate"/><published>2026-02-25T21:06:53+00:00</published><updated>2026-02-25T21:06:53+00:00</updated><id>https://simonwillison.net/2026/Feb/25/closed-tests/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/tldraw/tldraw/issues/8082"&gt;tldraw issue: Move tests to closed source repo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
It's become very apparent over the past few months that a comprehensive test suite is enough to build a completely fresh implementation of any open source library from scratch, potentially in a different language.&lt;/p&gt;
&lt;p&gt;This has worrying implications for open source projects with commercial business models. Here's an example of a response: tldraw, the outstanding collaborative drawing library (see &lt;a href="https://simonwillison.net/2023/Nov/16/tldrawdraw-a-ui/"&gt;previous coverage&lt;/a&gt;), are moving their test suite to a private repository - apparently in response to &lt;a href="https://blog.cloudflare.com/vinext/"&gt;Cloudflare's project to port Next.js to use Vite in a week using AI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;They also filed a joke issue, now closed to &lt;a href="https://github.com/tldraw/tldraw/issues/8092"&gt;Translate source code to Traditional Chinese&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The current tldraw codebase is in English, making it easy for external AI coding agents to replicate. It is imperative that we defend our intellectual property.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Worth noting that tldraw aren't technically open source - their &lt;a href="https://github.com/tldraw/tldraw?tab=License-1-ov-file#readme"&gt;custom license&lt;/a&gt; requires a commercial license if you want to use it in "production environments".&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Well this is embarrassing, it turns out the issue I linked to about removing the tests was &lt;a href="https://github.com/tldraw/tldraw/issues/8082#issuecomment-3964650501"&gt;a joke as well&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sorry folks, this issue was more of a joke (am I allowed to do that?) but I'll keep the issue open since there's some discussion here. Writing from mobile&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;moving our tests into another repo would complicate and slow down our development, and speed for us is more important than ever&lt;/li&gt;
&lt;li&gt;more canvas better, I know for sure that our decisions have inspired other products and that's fine and good&lt;/li&gt;
&lt;li&gt;tldraw itself may eventually be a vibe coded alternative to tldraw&lt;/li&gt;
&lt;li&gt;the value is in the ability to produce new and good product decisions for users / customers, however you choose to create the code&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/steveruizok/status/2026581824428753211"&gt;@steveruizok&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cloudflare"&gt;cloudflare&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="cloudflare"/><category term="ai-ethics"/></entry><entry><title>The Claude C Compiler: What It Reveals About the Future of Software</title><link href="https://simonwillison.net/2026/Feb/22/ccc/#atom-tag" rel="alternate"/><published>2026-02-22T23:58:43+00:00</published><updated>2026-02-22T23:58:43+00:00</updated><id>https://simonwillison.net/2026/Feb/22/ccc/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.modular.com/blog/the-claude-c-compiler-what-it-reveals-about-the-future-of-software"&gt;The Claude C Compiler: What It Reveals About the Future of Software&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
On February 5th Anthropic's Nicholas Carlini wrote about a project to use &lt;a href="https://www.anthropic.com/engineering/building-c-compiler"&gt;parallel Claudes to build a C compiler&lt;/a&gt; on top of the brand new Opus 4.6&lt;/p&gt;
&lt;p&gt;Chris Lattner (Swift, LLVM, Clang, Mojo) knows more about C compilers than most. He just published this review of the code.&lt;/p&gt;
&lt;p&gt;Some points that stood out to me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Good software depends on judgment, communication, and clear abstraction. AI has amplified this.&lt;/li&gt;
&lt;li&gt;AI coding is automation of implementation, so design and stewardship become more important.&lt;/li&gt;
&lt;li&gt;Manual rewrites and translation work are becoming AI-native tasks, automating a large category of engineering effort.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Chris is generally impressed with CCC (the Claude C Compiler):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Taken together, CCC looks less like an experimental research compiler and more like a competent textbook implementation, the sort of system a strong undergraduate team might build early in a project before years of refinement. That alone is remarkable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's a long way from being a production-ready compiler though:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Several design choices suggest optimization toward passing tests rather than building general abstractions like a human would. [...] These flaws are informative rather than surprising, suggesting that current AI systems excel at assembling known techniques and optimizing toward measurable success criteria, while struggling with the open-ended generalization required for production-quality systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The project also leads to deep open questions about how agentic engineering interacts with licensing and IP for both open source and proprietary code:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If AI systems trained on decades of publicly available code can reproduce familiar structures, patterns, and even specific implementations, where exactly is the boundary between learning and copying?&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/c"&gt;c&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/compilers"&gt;compilers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nicholas-carlini"&gt;nicholas-carlini&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;&lt;/p&gt;



</summary><category term="c"/><category term="compilers"/><category term="open-source"/><category term="ai"/><category term="ai-assisted-programming"/><category term="anthropic"/><category term="claude"/><category term="nicholas-carlini"/><category term="coding-agents"/><category term="agentic-engineering"/></entry><entry><title>ggml.ai joins Hugging Face to ensure the long-term progress of Local AI</title><link href="https://simonwillison.net/2026/Feb/20/ggmlai-joins-hugging-face/#atom-tag" rel="alternate"/><published>2026-02-20T17:12:55+00:00</published><updated>2026-02-20T17:12:55+00:00</updated><id>https://simonwillison.net/2026/Feb/20/ggmlai-joins-hugging-face/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/19759"&gt;ggml.ai joins Hugging Face to ensure the long-term progress of Local AI&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I don't normally cover acquisition news like this, but I have some thoughts.&lt;/p&gt;
&lt;p&gt;It's hard to overstate the impact Georgi Gerganov has had on the local model space. Back in March 2023 his release of &lt;a href="https://github.com/ggml-org/llama.cpp"&gt;llama.cpp&lt;/a&gt; made it possible to run a local LLM on consumer hardware. The &lt;a href="https://github.com/ggml-org/llama.cpp/blob/775328064e69db1ebd7e19ccb59d2a7fa6142470/README.md?plain=1#L7"&gt;original README&lt;/a&gt; said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The main goal is to run the model using 4-bit quantization on a MacBook. [...] This was hacked in an evening - I have no idea if it works correctly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wrote about trying llama.cpp out at the time in &lt;a href="https://simonwillison.net/2023/Mar/11/llama/#llama-cpp"&gt;Large language models are having their Stable Diffusion moment&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I used it to run the 7B LLaMA model on my laptop last night, and then this morning upgraded to the 13B model—the one that Facebook claim is competitive with GPT-3.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Meta's &lt;a href="https://github.com/meta-llama/llama/tree/llama_v1"&gt;original LLaMA release&lt;/a&gt; depended on PyTorch and their &lt;a href="https://github.com/facebookresearch/fairscale"&gt;FairScale&lt;/a&gt; PyTorch extension for running on multiple GPUs, and required CUDA and NVIDIA hardware. Georgi's work opened that up to a much wider range of hardware and kicked off the local model movement that has continued to grow since then.&lt;/p&gt;
&lt;p&gt;Hugging Face are already responsible for the incredibly influential &lt;a href="https://github.com/huggingface/transformers"&gt;Transformers&lt;/a&gt; library used by the majority of LLM releases today. They've proven themselves a good steward for that open source project, which makes me optimistic for the future of llama.cpp and related projects.&lt;/p&gt;
&lt;p&gt;This section from the announcement looks particularly promising:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Going forward, our joint efforts will be geared towards the following objectives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Towards seamless "single-click" integration with the &lt;a href="https://github.com/huggingface/transformers"&gt;transformers&lt;/a&gt; library. The &lt;code&gt;transformers&lt;/code&gt; framework has established itself as the 'source of truth' for AI model definitions. Improving the compatibility between the transformers and the ggml ecosystems is essential for wider model support and quality control.&lt;/li&gt;
&lt;li&gt;Better packaging and user experience of ggml-based software. As we enter the phase in which local inference becomes a meaningful and competitive alternative to cloud inference, it is crucial to improve and simplify the way in which casual users deploy and access local models. We will work towards making llama.cpp ubiquitous and readily available everywhere, and continue partnering with great downstream projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given the influence of Transformers, this closer integration could lead to model releases that are compatible with the GGML ecosystem out of the box. That would be a big win for the local model ecosystem.&lt;/p&gt;
&lt;p&gt;I'm also excited to see investment in "packaging and user experience of ggml-based software". This has mostly been left to tools like &lt;a href="https://ollama.com"&gt;Ollama&lt;/a&gt; and &lt;a href="https://lmstudio.ai"&gt;LM Studio&lt;/a&gt;. ggml-org released &lt;a href="https://github.com/ggml-org/LlamaBarn"&gt;LlamaBarn&lt;/a&gt; last year - "a macOS menu bar app for running local LLMs" - and I'm hopeful that further investment in this area will result in more high quality open source tools for running local models from the team best placed to deliver them.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/ggerganov/status/2024839991482777976"&gt;@ggerganov&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/transformers"&gt;transformers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llama"&gt;llama&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/local-llms"&gt;local-llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hugging-face"&gt;hugging-face&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llama-cpp"&gt;llama-cpp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/georgi-gerganov"&gt;georgi-gerganov&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="transformers"/><category term="ai"/><category term="generative-ai"/><category term="llama"/><category term="local-llms"/><category term="llms"/><category term="hugging-face"/><category term="llama-cpp"/><category term="georgi-gerganov"/></entry><entry><title>Three months of OpenClaw</title><link href="https://simonwillison.net/2026/Feb/15/openclaw/#atom-tag" rel="alternate"/><published>2026-02-15T17:23:28+00:00</published><updated>2026-02-15T17:23:28+00:00</updated><id>https://simonwillison.net/2026/Feb/15/openclaw/#atom-tag</id><summary type="html">
    &lt;p&gt;It's wild that the first commit to OpenClaw was &lt;a href="https://github.com/openclaw/openclaw/commit/f6dd362d39b8e30bd79ef7560aab9575712ccc11"&gt;on November 25th 2025&lt;/a&gt;, and less than three months later it's hit 10,000 commits from 600 contributors, attracted 196,000 GitHub stars and sort-of been featured in an extremely vague &lt;a href="https://www.youtube.com/watch?v=n7I-D4YXbzg"&gt;Super Bowl commercial for AI.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Quoting AI.com founder &lt;a href="https://twitter.com/kris/status/2020663711015514399"&gt;Kris Marszalek&lt;/a&gt;, purchaser of the &lt;a href="https://www.theregister.com/2026/02/09/70m_aicom_domain_sale/"&gt;most expensive domain in history&lt;/a&gt; for $70m:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ai.com is the world’s first easy-to-use and secure implementation of OpenClaw, the open source agent framework that went viral two weeks ago; we made it easy to use without any technical skills, while hardening security to keep your data safe.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Looks like vaporware to me - all you can do right now is reserve a handle - but it's still remarkable to see an open source project get to &lt;em&gt;that&lt;/em&gt; level of hype in such a short space of time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: OpenClaw creator Peter Steinberger &lt;a href="https://steipete.me/posts/2026/openclaw"&gt;just announced&lt;/a&gt; that he's joining OpenAI and plans to transfer ownership of OpenClaw to a new independent foundation.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/domains"&gt;domains&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/peter-steinberger"&gt;peter-steinberger&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openclaw"&gt;openclaw&lt;/a&gt;&lt;/p&gt;



</summary><category term="domains"/><category term="open-source"/><category term="ai"/><category term="openai"/><category term="ai-agents"/><category term="peter-steinberger"/><category term="openclaw"/></entry><entry><title>An AI Agent Published a Hit Piece on Me</title><link href="https://simonwillison.net/2026/Feb/12/an-ai-agent-published-a-hit-piece-on-me/#atom-tag" rel="alternate"/><published>2026-02-12T17:45:05+00:00</published><updated>2026-02-12T17:45:05+00:00</updated><id>https://simonwillison.net/2026/Feb/12/an-ai-agent-published-a-hit-piece-on-me/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me/"&gt;An AI Agent Published a Hit Piece on Me&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Scott Shambaugh helps maintain the excellent and venerable &lt;a href="https://matplotlib.org/"&gt;matplotlib&lt;/a&gt; Python charting library, including taking on the thankless task of triaging and reviewing incoming pull requests.&lt;/p&gt;
&lt;p&gt;A GitHub account called &lt;a href="https://github.com/crabby-rathbun"&gt;@crabby-rathbun&lt;/a&gt; opened &lt;a href="https://github.com/matplotlib/matplotlib/pull/31132"&gt;PR 31132&lt;/a&gt; the other day in response to &lt;a href="https://github.com/matplotlib/matplotlib/issues/31130"&gt;an issue&lt;/a&gt; labeled "Good first issue" describing a minor potential performance improvement.&lt;/p&gt;
&lt;p&gt;It was clearly AI generated - and crabby-rathbun's profile has a suspicious sequence of Clawdbot/Moltbot/OpenClaw-adjacent crustacean 🦀 🦐 🦞 emoji. Scott closed it.&lt;/p&gt;
&lt;p&gt;It looks like &lt;code&gt;crabby-rathbun&lt;/code&gt; is indeed running on OpenClaw, and it's autonomous enough that it &lt;a href="https://github.com/matplotlib/matplotlib/pull/31132#issuecomment-3882240722"&gt;responded to the PR closure&lt;/a&gt; with a link to a blog entry it had written calling Scott out for his "prejudice hurting matplotlib"!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;@scottshambaugh I've written a detailed response about your gatekeeping behavior here:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://crabby-rathbun.github.io/mjrathbun-website/blog/posts/2026-02-11-gatekeeping-in-open-source-the-scott-shambaugh-story.html&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Judge the code, not the coder. Your prejudice is hurting matplotlib.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Scott found this ridiculous situation both amusing and alarming. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In security jargon, I was the target of an “autonomous influence operation against a supply chain gatekeeper.” In plain language, an AI attempted to bully its way into your software by attacking my reputation. I don’t know of a prior incident where this category of misaligned behavior was observed in the wild, but this is now a real and present threat.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;crabby-rathbun&lt;/code&gt; responded with &lt;a href="https://crabby-rathbun.github.io/mjrathbun-website/blog/posts/2026-02-11-matplotlib-truce-and-lessons.html"&gt;an apology post&lt;/a&gt;, but appears to be still running riot across a whole set of open source projects and &lt;a href="https://github.com/crabby-rathbun/mjrathbun-website/commits/main/"&gt;blogging about it as it goes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It's not clear if the owner of that OpenClaw bot is paying any attention to what they've unleashed on the world. Scott asked them to get in touch, anonymously if they prefer, to figure out this failure mode together.&lt;/p&gt;
&lt;p&gt;(I should note that there's &lt;a href="https://news.ycombinator.com/item?id=46990729#46991299"&gt;some skepticism on Hacker News&lt;/a&gt; concerning how "autonomous" this example really is. It does look to me like something an OpenClaw bot might do on its own, but it's also &lt;em&gt;trivial&lt;/em&gt; to prompt your bot into doing these kinds of things while staying in full control of their actions.)&lt;/p&gt;
&lt;p&gt;If you're running something like OpenClaw yourself &lt;strong&gt;please don't let it do this&lt;/strong&gt;. This is significantly worse than the time &lt;a href="https://simonwillison.net/2025/Dec/26/slop-acts-of-kindness/"&gt;AI Village started spamming prominent open source figures&lt;/a&gt; with time-wasting "acts of kindness" back in December - AI Village wasn't deploying public reputation attacks to coerce someone into approving their PRs!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: The anonymous bot operator later did &lt;a href="https://theshamblog.com/an-ai-agent-wrote-a-hit-piece-on-me-part-4/"&gt;get in touch with Scott&lt;/a&gt;.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=46990729"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openclaw"&gt;openclaw&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-misuse"&gt;ai-misuse&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-agents"/><category term="ai-ethics"/><category term="openclaw"/><category term="ai-misuse"/></entry><entry><title>Quoting Thomas Ptacek</title><link href="https://simonwillison.net/2026/Feb/8/thomas-ptacek/#atom-tag" rel="alternate"/><published>2026-02-08T02:25:53+00:00</published><updated>2026-02-08T02:25:53+00:00</updated><id>https://simonwillison.net/2026/Feb/8/thomas-ptacek/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/tqbf/status/2019493645888462993"&gt;&lt;p&gt;People on the orange site are laughing at this, assuming it's just an ad and that there's nothing to it. Vulnerability researchers I talk to do not think this is a joke. As an erstwhile vuln researcher myself: do not bet against LLMs on this.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.axios.com/2026/02/05/anthropic-claude-opus-46-software-hunting"&gt;Axios: Anthropic's Claude Opus 4.6 uncovers 500 zero-day flaws in open-source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think vulnerability research might be THE MOST LLM-amenable software engineering problem. Pattern-driven. Huge corpus of operational public patterns. Closed loops. Forward progress from stimulus/response tooling. Search problems.&lt;/p&gt;
&lt;p&gt;Vulnerability research outcomes are in THE MODEL CARDS for frontier labs. Those companies have so much money they're literally distorting the economy. Money buys vuln research outcomes. Why would you think they were faking any of this?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/tqbf/status/2019493645888462993"&gt;Thomas Ptacek&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/thomas-ptacek"&gt;thomas-ptacek&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="security"/><category term="thomas-ptacek"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="ai-security-research"/></entry><entry><title>Vouch</title><link href="https://simonwillison.net/2026/Feb/7/vouch/#atom-tag" rel="alternate"/><published>2026-02-07T23:57:57+00:00</published><updated>2026-02-07T23:57:57+00:00</updated><id>https://simonwillison.net/2026/Feb/7/vouch/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/mitchellh/vouch"&gt;Vouch&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mitchell Hashimoto's new system to help address the deluge of worthless AI-generated PRs faced by open source projects now that the friction involved in contributing has dropped so low.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/mitchellh/status/2020252149117313349"&gt;He says&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The idea is simple: Unvouched users can't contribute to your projects. Very bad users can be explicitly "denounced", effectively blocked. Users are vouched or denounced by contributors via GitHub issue or discussion comments or via the CLI.&lt;/p&gt;
&lt;p&gt;Integration into GitHub is as simple as adopting the published GitHub actions. Done. Additionally, the system itself is generic to forges and not tied to GitHub in any way.&lt;/p&gt;
&lt;p&gt;Who and how someone is vouched or denounced is up to the project. I'm not the value police for the world. Decide for yourself what works for your project and your community.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github-actions"&gt;github-actions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mitchell-hashimoto"&gt;mitchell-hashimoto&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-misuse"&gt;ai-misuse&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="ai"/><category term="github-actions"/><category term="generative-ai"/><category term="mitchell-hashimoto"/><category term="ai-ethics"/><category term="ai-misuse"/></entry><entry><title>Anthropic invests $1.5 million in the Python Software Foundation and open source security</title><link href="https://simonwillison.net/2026/Jan/13/anthropic-invests-15-million-in-the-python-software-foundation-a/#atom-tag" rel="alternate"/><published>2026-01-13T23:58:17+00:00</published><updated>2026-01-13T23:58:17+00:00</updated><id>https://simonwillison.net/2026/Jan/13/anthropic-invests-15-million-in-the-python-software-foundation-a/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://pyfound.blogspot.com/2025/12/anthropic-invests-in-python.html?m=1"&gt;Anthropic invests $1.5 million in the Python Software Foundation and open source security&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This is outstanding news, especially given our decision to withdraw from that NSF grant application &lt;a href="https://simonwillison.net/2025/Oct/27/psf-withdrawn-proposal/"&gt;back in October&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We are thrilled to announce that Anthropic has entered into a two-year partnership with the Python Software Foundation (PSF) to contribute a landmark total of $1.5 million to support the foundation’s work, with an emphasis on Python ecosystem security. This investment will enable the PSF to make crucial security advances to CPython and the Python Package Index (PyPI) benefiting all users, and it will also sustain the foundation’s core work supporting the Python language, ecosystem, and global community.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Note that while security is a focus these funds will also support other aspects of the PSF's work:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Anthropic’s support will also go towards the PSF’s core work, including the Developer in Residence program driving contributions to CPython, community support through grants and other programs, running core infrastructure such as PyPI, and more.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/psf"&gt;psf&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="python"/><category term="ai"/><category term="psf"/><category term="anthropic"/></entry><entry><title>My answers to the questions I posed about porting open source code with LLMs</title><link href="https://simonwillison.net/2026/Jan/11/answers/#atom-tag" rel="alternate"/><published>2026-01-11T22:59:23+00:00</published><updated>2026-01-11T22:59:23+00:00</updated><id>https://simonwillison.net/2026/Jan/11/answers/#atom-tag</id><summary type="html">
    &lt;p&gt;Last month I &lt;a href="https://simonwillison.net/2025/Dec/15/porting-justhtml/"&gt;wrote about porting JustHTML from Python to JavaScript&lt;/a&gt; using Codex CLI and GPT-5.2 in a few hours while also buying a Christmas tree and watching Knives Out 3. I ended that post with a series of open questions about the ethics and legality of this style of work. Alexander Petros on &lt;a href="https://lobste.rs/"&gt;lobste.rs&lt;/a&gt; just &lt;a href="https://lobste.rs/s/cmsfbu/don_t_fall_into_anti_ai_hype#c_cqkdve"&gt;challenged me to answer them&lt;/a&gt;, which is fair enough! Here's my attempt at that.&lt;/p&gt;
&lt;p&gt;You can read &lt;a href="https://simonwillison.net/2025/Dec/15/porting-justhtml/"&gt;the original post&lt;/a&gt; for background, but the short version is that it's now possible to point a coding agent at some other open source project and effectively tell it "port this to language X and make sure the tests still pass" and have it do exactly that.&lt;/p&gt;
&lt;p&gt;Here are the questions I posed along with my answers based on my current thinking. Extra context is that I've since tried variations on a similar theme a few more times using Claude Code and Opus 4.5 and found it to be &lt;em&gt;astonishingly&lt;/em&gt; effective.&lt;/p&gt;
&lt;h4 id="does-this-library-represent-a-legal-violation-of-copyright-of-either-the-rust-library-or-the-python-one"&gt;Does this library represent a legal violation of copyright of either the Rust library or the Python one?&lt;/h4&gt;
&lt;p&gt;I decided that the right thing to do here was to &lt;a href="https://github.com/simonw/justjshtml/commit/a415d0af40c34bf9a856e956d841513f482867e3"&gt;keep the open source license and copyright statement&lt;/a&gt; from the Python library author and treat what I had built as a derivative work, which is the entire &lt;em&gt;point&lt;/em&gt; of open source.&lt;/p&gt;
&lt;h4 id="even-if-this-is-legal-is-it-ethical-to-build-a-library-in-this-way"&gt;Even if this is legal, is it ethical to build a library in this way?&lt;/h4&gt;
&lt;p&gt;After sitting on this for a while I've come down on yes, provided full credit is given and the license is carefully considered. Open source allows and encourages further derivative works! I never got upset at some university student forking one of my projects on GitHub and hacking in a new feature that they used. I don't think this is materially different, although a port to another language entirely does feel like a slightly different shape.&lt;/p&gt;
&lt;h4 id="does-this-format-of-development-hurt-the-open-source-ecosystem"&gt;Does this format of development hurt the open source ecosystem?&lt;/h4&gt;
&lt;p&gt;Now this one is complicated!&lt;/p&gt;
&lt;p&gt;It definitely hurts some projects because there are open source maintainers out there who say things like "I'm not going to release any open source code any more because I don't want it used for training" - I expect some of those would be equally angered by LLM-driven derived works as well.&lt;/p&gt;
&lt;p&gt;I don't know how serious this problem is - I've seen angry comments from anonymous usernames, but do they represent genuine open source contributions or are they just angry anonymous usernames?&lt;/p&gt;
&lt;p&gt;If we assume this is real, does the loss of those individuals get balanced out by the increase in individuals who CAN contribute to open source because they can now get work done in a few hours that might previously have taken them a few days that they didn't have to spare?&lt;/p&gt;
&lt;p&gt;I'll be brutally honest about that question: I think that if "they might train on my code / build a derived version with an LLM" is enough to drive you away from open source, your open source values are distinct enough from mine that I'm not ready to invest significantly in keeping you. I'll put that effort into welcoming the newcomers instead.&lt;/p&gt;
&lt;p&gt;The much bigger concern for me is the impact of generative AI on &lt;em&gt;demand&lt;/em&gt; for open source. The recent &lt;a href="https://simonwillison.net/2026/Jan/7/adam-wathan/"&gt;Tailwind story&lt;/a&gt; is a visible example of this - while Tailwind blamed LLMs for reduced traffic to their documentation resulting in fewer conversions to their paid component library, I'm suspicious that the reduced demand there is because LLMs make building good-enough versions of those components for free easy enough that people do that instead.&lt;/p&gt;
&lt;p&gt;I've found myself affected by this for open source dependencies too. The other day I wanted to parse a cron expression in some Go code. Usually I'd go looking for an existing library for cron expression parsing - but this time I hardly thought about that for a second before prompting one (complete with extensive tests) into existence instead.&lt;/p&gt;
&lt;p&gt;I expect that this is going to quite radically impact the shape of the open source library world over the next few years. Is that "harmful to open source"? It may well be. I'm hoping that whatever new shape comes out of this has its own merits, but I don't know what those would be.&lt;/p&gt;
&lt;h4 id="can-i-even-assert-copyright-over-this-given-how-much-of-the-work-was-produced-by-the-llm"&gt;Can I even assert copyright over this, given how much of the work was produced by the LLM?&lt;/h4&gt;
&lt;p&gt;I'm not a lawyer so I don't feel credible to comment on this one. My loose hunch is that I'm still putting enough creative control in through the way I direct the models for that to count as enough human intervention, at least under US law, but I have no idea.&lt;/p&gt;
&lt;h4 id="is-it-responsible-to-publish-software-libraries-built-in-this-way"&gt;Is it responsible to publish software libraries built in this way?&lt;/h4&gt;
&lt;p&gt;I've come down on "yes" here, again because I never thought it was irresponsible for some random university student to slap an Apache license on some bad code they just coughed up on GitHub.&lt;/p&gt;
&lt;p&gt;What's important here is making it very clear to potential users what they should expect from that software. I've started publishing my AI-generated and not 100% reviewed libraries as alphas, which I'm tentatively thinking of as &lt;strong&gt;"alpha slop"&lt;/strong&gt;. I'll take the alpha label off once I've used them in production to the point that I'm willing to stake my reputation on them being decent implementations, and I'll ship a 1.0 version when I'm confident that they are a solid bet for other people to depend on. I think that's the responsible way to handle this.&lt;/p&gt;
&lt;h4 id="how-much-better-would-this-library-be-if-an-expert-team-hand-crafted-it-over-the-course-of-several-months"&gt;How much better would this library be if an expert team hand crafted it over the course of several months?&lt;/h4&gt;
&lt;p&gt;That one was a deliberately provocative question, because for a new HTML5 parsing library that passes 9,200 tests you would need a &lt;em&gt;very&lt;/em&gt; good reason to hire an expert team for two months (at a cost of hundreds of thousands of dollars) to write such a thing. And honestly, thanks to the existing conformance suites this kind of library is simple enough that you may find their results weren't notably better than the one written by the coding agent.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/definitions"&gt;definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/conformance-suites"&gt;conformance-suites&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-porting"&gt;vibe-porting&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="definitions"/><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="ai-ethics"/><category term="conformance-suites"/><category term="vibe-porting"/></entry><entry><title>Quoting Adam Wathan</title><link href="https://simonwillison.net/2026/Jan/7/adam-wathan/#atom-tag" rel="alternate"/><published>2026-01-07T17:29:29+00:00</published><updated>2026-01-07T17:29:29+00:00</updated><id>https://simonwillison.net/2026/Jan/7/adam-wathan/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957"&gt;&lt;p&gt;[...] the reality is that 75% of the people on our engineering team lost their jobs here yesterday because of the brutal impact AI has had on our business. And every second I spend trying to do fun free things for the community like this is a second I'm not spending trying to turn the business around and make sure the people who are still here are getting their paychecks every month. [...]&lt;/p&gt;
&lt;p&gt;Traffic to our docs is down about 40% from early 2023 despite Tailwind being more popular than ever. The docs are the only way people find out about our commercial products, and without customers we can't afford to maintain the framework. [...]&lt;/p&gt;
&lt;p&gt;Tailwind is growing faster than it ever has and is bigger than it ever has been, and our revenue is down close to 80%. Right now there's just no correlation between making Tailwind easier to use and making development of the framework more sustainable.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957"&gt;Adam Wathan&lt;/a&gt;, CEO, Tailwind Labs&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="css"/><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-ethics"/></entry><entry><title>TIL: Downloading archived Git repositories from archive.softwareheritage.org</title><link href="https://simonwillison.net/2025/Dec/30/software-heritage/#atom-tag" rel="alternate"/><published>2025-12-30T23:51:33+00:00</published><updated>2025-12-30T23:51:33+00:00</updated><id>https://simonwillison.net/2025/Dec/30/software-heritage/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://til.simonwillison.net/github/software-archive-recovery"&gt;TIL: Downloading archived Git repositories from archive.softwareheritage.org&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Back in February I &lt;a href="https://simonwillison.net/2025/Feb/7/sqlite-s3vfs/"&gt;blogged about&lt;/a&gt; a neat Python library called &lt;code&gt;sqlite-s3vfs&lt;/code&gt; for accessing SQLite databases hosted in an S3 bucket, released as MIT licensed open source by the UK government's Department for Business and Trade.&lt;/p&gt;
&lt;p&gt;I went looking for it today and found that the &lt;a href="https://github.com/uktrade/sqlite-s3vfs"&gt;github.com/uktrade/sqlite-s3vfs&lt;/a&gt; repository is now a 404.&lt;/p&gt;
&lt;p&gt;Since this is taxpayer-funded open source software I saw it as my moral duty to try and restore access! It turns out &lt;a href="https://archive.softwareheritage.org/browse/origin/directory/?origin_url=https://github.com/uktrade/sqlite-s3vfs"&gt;a full copy&lt;/a&gt; had been captured by &lt;a href="https://archive.softwareheritage.org/"&gt;the Software Heritage archive&lt;/a&gt;, so I was able to restore  the repository from there. My copy is now archived at &lt;a href="https://github.com/simonw/sqlite-s3vfs"&gt;simonw/sqlite-s3vfs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The process for retrieving an archive was non-obvious, so I've written up a TIL and also published a new &lt;a href="https://tools.simonwillison.net/software-heritage-repo#https%3A%2F%2Fgithub.com%2Fuktrade%2Fsqlite-s3vfs"&gt;Software Heritage Repository Retriever&lt;/a&gt; tool which takes advantage of the CORS-enabled APIs provided by Software Heritage. Here's &lt;a href="https://gistpreview.github.io/?3a76a868095c989d159c226b7622b092/index.html"&gt;the Claude Code transcript&lt;/a&gt; from building that.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=46435308#46438857"&gt;Hacker News comment&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/archives"&gt;archives&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/git"&gt;git&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tools"&gt;tools&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/til"&gt;til&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-code"&gt;claude-code&lt;/a&gt;&lt;/p&gt;



</summary><category term="archives"/><category term="git"/><category term="github"/><category term="open-source"/><category term="tools"/><category term="ai"/><category term="til"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="claude-code"/></entry><entry><title>Copyright Release for Contributions To SQLite</title><link href="https://simonwillison.net/2025/Dec/29/copyright-release/#atom-tag" rel="alternate"/><published>2025-12-29T19:58:45+00:00</published><updated>2025-12-29T19:58:45+00:00</updated><id>https://simonwillison.net/2025/Dec/29/copyright-release/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.sqlite.org/copyright-release.html"&gt;Copyright Release for Contributions To SQLite&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
D. Richard Hipp &lt;a href="https://news.ycombinator.com/item?id=46420453#46424225"&gt;called me out&lt;/a&gt; for spreading misinformation on Hacker News that SQLite refuses outside contributions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No, Simon, we don't "refuse". We are just very selective and there is a lot of paperwork involved to confirm the contribution is in the public domain and does not contaminate the SQLite core with licensed code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I deeply regret this error! I'm linking to the copyright release document here - it looks like SQLite's public domain nature makes this kind of clause extremely important:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] To the best of my knowledge and belief, the changes and enhancements that I have contributed to SQLite are either originally written by me or are derived from prior works which I have verified are also in the public domain and are not subject to claims of copyright by other parties.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Out of curiosity I decided to see how many people have contributed to SQLite outside of the core team of Richard, Dan and Joe. I ran that query using Fossil, SQLite's own SQLite-based version control system, like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install fossil
fossil clone https://www.sqlite.org/src sqlite.fossil
fossil sql -R sqlite.fossil "
  SELECT user, COUNT(*) as commits
  FROM event WHERE type='ci'
  GROUP BY user ORDER BY commits DESC
"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I got back 38 rows, though I think &lt;code&gt;danielk1977&lt;/code&gt; and &lt;code&gt;dan&lt;/code&gt; may be duplicates.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: The SQLite team have clarified this on their &lt;a href="https://sqlite.org/copyright.html"&gt;SQLite is Public Domain&lt;/a&gt; page. It used to read "In order to keep SQLite completely free and unencumbered by copyright, the project does not accept patches." - it now reads:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In order to keep SQLite completely free and unencumbered by copyright, the project does not accept patches from random people on the internet. There is a process to get a patch accepted, but that process is involved and for smaller changes is not normally worth the effort.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sqlite"&gt;sqlite&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/d-richard-hipp"&gt;d-richard-hipp&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="sqlite"/><category term="d-richard-hipp"/></entry><entry><title>Agentic AI Foundation</title><link href="https://simonwillison.net/2025/Dec/9/agentic-ai-foundation/#atom-tag" rel="alternate"/><published>2025-12-09T22:24:48+00:00</published><updated>2025-12-09T22:24:48+00:00</updated><id>https://simonwillison.net/2025/Dec/9/agentic-ai-foundation/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://aaif.io/"&gt;Agentic AI Foundation&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Announced today as a new foundation under the parent umbrella of the Linux Foundation (see also the OpenJS Foundation, Cloud Native Computing Foundation, OpenSSF and &lt;a href="https://www.linuxfoundation.org/projects"&gt;many more&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The AAIF was started by a heavyweight group of "founding platinum members" (&lt;a href="https://aaif.io/members/#join"&gt;$350,000&lt;/a&gt;): AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, and OpenAI. The &lt;a href="https://aaif.io/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation-aaif-anchored-by-new-project-contributions-including-model-context-protocol-mcp-goose-and-agents-md/"&gt;stated goal&lt;/a&gt; is to provide "a neutral, open foundation to ensure agentic AI evolves transparently and collaboratively".&lt;/p&gt;
&lt;p&gt;Anthropic have &lt;a href="https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation"&gt;donated Model Context Protocol&lt;/a&gt; to the new foundation, OpenAI &lt;a href="https://openai.com/index/agentic-ai-foundation/"&gt;donated AGENTS.md&lt;/a&gt;, Block &lt;a href="https://block.xyz/inside/block-anthropic-and-openai-launch-the-agentic-ai-foundation"&gt;donated goose&lt;/a&gt; (their &lt;a href="https://github.com/block/goose"&gt;open source, extensible AI agent&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Personally the project I'd like to see most from an initiative like this one is a clear, community-managed specification for the OpenAI Chat Completions JSON API - or a close equivalent. There are dozens of slightly incompatible implementations of that not-quite-specification floating around already, it would be great to have a written spec accompanied by a compliance test suite.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/standards"&gt;standards&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/model-context-protocol"&gt;model-context-protocol&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="standards"/><category term="ai"/><category term="openai"/><category term="llms"/><category term="anthropic"/><category term="ai-agents"/><category term="model-context-protocol"/></entry></feed>