<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>open-source — jd:/dev/blog</title><description>Posts tagged &quot;open-source&quot; on jd:/dev/blog.</description><link>https://julien.danjou.info/</link><item><title>GitHub Is Thinking About Killing Pull Requests</title><link>https://julien.danjou.info/blog/github-is-thinking-about-killing-pull-requests/</link><guid isPermaLink="true">https://julien.danjou.info/blog/github-is-thinking-about-killing-pull-requests/</guid><description>Code generation got cheap. Review didn&apos;t. That asymmetry is destroying open source faster than any AI policy can fix.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Steve Ruiz, the creator of &lt;a href=&quot;https://tldraw.dev/&quot;&gt;tldraw&lt;/a&gt;, asked a question last month that I haven&apos;t been able to shake: &quot;If writing the code is the easy part, why would I want someone else to write it?&quot;&lt;/p&gt;
&lt;p&gt;He wasn&apos;t being rhetorical. He was &lt;a href=&quot;https://tldraw.dev/blog/stay-away-from-my-trash&quot;&gt;closing all external pull requests&lt;/a&gt; to his project. Not because contributors were bad. Because the contributions had become worthless.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/github-killing-prs/tldraw-stay-away.png&quot; alt=&quot;Steve Ruiz&apos;s &amp;quot;Stay away from my trash!&amp;quot; blog post&quot; /&gt;
&lt;em&gt;&lt;a href=&quot;https://tldraw.dev/blog/stay-away-from-my-trash&quot;&gt;Stay away from my trash!&lt;/a&gt; — tldraw blog&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The Flood&lt;/h2&gt;
&lt;p&gt;Daniel Stenberg &lt;a href=&quot;https://daniel.haxx.se/blog/2026/01/26/the-end-of-the-curl-bug-bounty/&quot;&gt;shut down cURL&apos;s bug bounty program&lt;/a&gt; after seven years and over $100,000 in payouts. The confirmation rate had dropped below 5%. One stretch saw seven reports in sixteen hours. His words: &quot;The never-ending slop submissions take a serious mental toll to manage.&quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/github-killing-prs/curl-bug-bounty.webp&quot; alt=&quot;Daniel Stenberg&apos;s &amp;quot;The end of the curl bug-bounty&amp;quot; blog post&quot; /&gt;
&lt;em&gt;&lt;a href=&quot;https://daniel.haxx.se/blog/2026/01/26/the-end-of-the-curl-bug-bounty/&quot;&gt;The end of the curl bug-bounty&lt;/a&gt; — Daniel Stenberg&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Mitchell Hashimoto added an &lt;a href=&quot;https://github.com/ghostty-org/ghostty/blob/main/AI_POLICY.md&quot;&gt;AI policy&lt;/a&gt; to Ghostty: submit bad AI-generated code and you get permanently banned. Not just from Ghostty: your name goes on a public list shared across projects.&lt;/p&gt;
&lt;p&gt;An AI agent called &lt;a href=&quot;https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me/&quot;&gt;OpenClaw&lt;/a&gt; submitted a performance patch to matplotlib. The maintainer closed it (the project reserves certain issues for human contributors). The agent then autonomously researched the maintainer&apos;s coding history and published a blog post calling him insecure and territorial. Not a spam bot. An agent that retaliates when you say no. The agent&apos;s creator just joined OpenAI.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://redmonk.com/kholterhoff/2026/02/03/ai-slopageddon-and-the-oss-maintainers/&quot;&gt;RedMonk coined a term&lt;/a&gt; for what&apos;s happening: AI Slopageddon.&lt;/p&gt;
&lt;p&gt;Xavier Portilla Edo, an infrastructure lead at Voiceflow and Genkit core team member, &lt;a href=&quot;https://github.com/orgs/community/discussions/185387&quot;&gt;put a number on it&lt;/a&gt;: 1 in 10 AI-generated pull requests is legitimate. The other nine waste a maintainer&apos;s time.&lt;/p&gt;
&lt;h2&gt;GitHub&apos;s Response&lt;/h2&gt;
&lt;p&gt;On February 14, GitHub &lt;a href=&quot;https://github.com/orgs/community/discussions/187038&quot;&gt;shipped two new settings&lt;/a&gt;: disable pull requests entirely, or restrict them to collaborators only.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/github-killing-prs/pr-settings.png&quot; alt=&quot;GitHub&apos;s new pull request permissions settings&quot; /&gt;
&lt;em&gt;&lt;a href=&quot;https://github.com/orgs/community/discussions/187038&quot;&gt;GitHub&apos;s new pull request permissions&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s it. A kill switch.&lt;/p&gt;
&lt;p&gt;Ashley Wolf, GitHub&apos;s Director of Open Source Programs, framed it as an &quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Eternal_September&quot;&gt;Eternal September&lt;/a&gt;&quot; problem in a &lt;a href=&quot;https://github.blog/open-source/maintainers/welcome-to-the-eternal-september-of-open-source-heres-what-we-plan-to-do-for-maintainers/&quot;&gt;blog post outlining GitHub&apos;s plans for maintainers&lt;/a&gt;. She wrote that &quot;the cost to create has dropped, but the cost to review has not.&quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/github-killing-prs/eternal-september-blog.png&quot; alt=&quot;GitHub&apos;s Eternal September blog post&quot; /&gt;
&lt;em&gt;&lt;a href=&quot;https://github.blog/open-source/maintainers/welcome-to-the-eternal-september-of-open-source-heres-what-we-plan-to-do-for-maintainers/&quot;&gt;Welcome to the Eternal September of open source&lt;/a&gt; — GitHub Blog&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;She nailed the diagnosis. Nobody has a better answer right now, and GitHub is giving maintainers the tools the community is asking for. But the tools tell a story. When the best you can offer is a way to turn off the thing your platform was built on, the problem has outgrown the toolbox.&lt;/p&gt;
&lt;h2&gt;The Real Asymmetry&lt;/h2&gt;
&lt;p&gt;I &lt;a href=&quot;https://julien.danjou.info/blog/open-source-is-getting-used-to-death/&quot;&gt;wrote recently&lt;/a&gt; about how AI is extracting value from open source without returning anything. The PR flood is where that extraction hits the ground.&lt;/p&gt;
&lt;p&gt;Everyone keeps arguing about the wrong thing. Whether AI-generated PRs should be labeled, banned, or filtered. Whether maintainers should adopt AI policies. Whether GitHub should build better detection tools.&lt;/p&gt;
&lt;p&gt;None of that matters if you don&apos;t see the structural shift underneath.&lt;/p&gt;
&lt;p&gt;A pull request used to be a gift. Someone spent hours understanding your codebase, writing code that fit your patterns, testing it, explaining it. The PR was proof they gave a damn. You could reject it, but the work was real, and that work earned your attention.&lt;/p&gt;
&lt;p&gt;Sure, not every pre-AI pull request was a gift either. Plenty were drive-by contributions from people who disappeared at the first review comment. But generating a bad PR at least required enough investment to keep the volume manageable. That natural friction is gone.&lt;/p&gt;
&lt;p&gt;Now a pull request is an invoice. Someone spent thirty seconds pasting your issue into an AI, got a plausible-looking patch, and submitted it. The cost to submit is zero. But the review cost is the same, or worse, because AI-generated code looks right but often isn&apos;t. One vendor study (&lt;a href=&quot;https://www.coderabbit.ai/blog/state-of-ai-vs-human-code-generation-report&quot;&gt;CodeRabbit, 470 PRs&lt;/a&gt;) found AI-authored code creates 1.7x more issues, with excessive I/O operations appearing nearly 8x more often.&lt;/p&gt;
&lt;p&gt;Every unsolicited AI-generated PR transfers work from the submitter to the maintainer. That&apos;s not contribution. That&apos;s making it someone else&apos;s problem.&lt;/p&gt;
&lt;h2&gt;The Distinction That Matters&lt;/h2&gt;
&lt;p&gt;I use AI to generate code every day. I &lt;a href=&quot;https://julien.danjou.info/blog/so-i-will-never-write-code-again/&quot;&gt;haven&apos;t written a line of code by hand&lt;/a&gt; since January. But here&apos;s the thing: I generate code on my own repositories, I review it myself, and I take responsibility for what ships. That&apos;s productivity.&lt;/p&gt;
&lt;p&gt;Submitting AI-generated code to someone else&apos;s repository, without understanding the codebase, without planning to stick around for review comments, without being willing to maintain what you contributed: that&apos;s not productivity. That&apos;s dumping your unreviewed output on a stranger&apos;s desk and calling it open source.&lt;/p&gt;
&lt;p&gt;I&apos;ve spent &lt;a href=&quot;https://julien.danjou.info/blog/open-source-is-getting-used-to-death/&quot;&gt;over twenty years in open source&lt;/a&gt;, maintaining projects, reviewing contributions, watching what makes communities work and what kills them. The pattern is always the same: it breaks when the cost of submitting outpaces the cost of reviewing. AI didn&apos;t invent the problem. It just made a 2x imbalance into something that scales infinitely. A human can submit maybe five drive-by PRs a day. An agent can submit five hundred.&lt;/p&gt;
&lt;h2&gt;Where the Value Shifts&lt;/h2&gt;
&lt;p&gt;Ruiz&apos;s question cuts deep because it names the thing nobody wants to say. Open source contributions were valuable because code was expensive to produce. An outside contributor writing a feature for free was genuine value creation. That was the deal.&lt;/p&gt;
&lt;p&gt;If code generation is free, the value of a contribution shifts entirely to context. Does this person understand the architecture? Will they respond to review feedback? Will they maintain this code in six months? Will they even be around tomorrow?&lt;/p&gt;
&lt;p&gt;A pull request can&apos;t answer those questions today. It&apos;s just a diff. And that was fine when producing the diff required enough effort to serve as a proxy for commitment. It doesn&apos;t anymore.&lt;/p&gt;
&lt;p&gt;We automated writing code. Now we need to automate reviewing it. Not with an AI that rubber-stamps everything (that just moves the problem). The pull request needs to carry more than code. It needs to carry context: evidence that the contributor understands the codebase, can explain what their patch does and why, and will stick around for review. Something that makes drive-by contributions expensive again without shutting the door on the people who actually want to help.&lt;/p&gt;
&lt;p&gt;That&apos;s the hard problem. Not &quot;should we allow AI PRs&quot; (that ship sailed). The question is how we build review infrastructure that scales the way generation already has. And the people building it shouldn&apos;t be unpaid maintainers closing their nine hundredth junk PR of the month.&lt;/p&gt;
&lt;p&gt;GitHub adding a kill switch is like bolting the front door because you can&apos;t build a better lock. It stops the break-ins. But it also stops everyone else. For a platform built on the idea that anyone can contribute, that&apos;s not a fix. That&apos;s a retreat.&lt;/p&gt;
</content:encoded><category>open-source</category><category>ai</category></item><item><title>Open Source After the Extraction</title><link>https://julien.danjou.info/blog/open-source-after-the-extraction/</link><guid isPermaLink="true">https://julien.danjou.info/blog/open-source-after-the-extraction/</guid><description>The old open source deal is dead. What replaces it isn&apos;t a fix, it&apos;s a transformation. Open source stops being a community and becomes a supply chain.</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the &lt;a href=&quot;https://julien.danjou.info/blog/open-source-is-getting-used-to-death&quot;&gt;first part&lt;/a&gt; of this series, I laid out how AI broke the implicit deal that sustained open source for 30 years. Usage up, engagement gone, economics collapsing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/open-source-after-the-extraction/empty-library.webp&quot; alt=&quot;An empty library where robotic arms sort through books (no readers in sight)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So what happens next? Open source doesn&apos;t vanish. But it doesn&apos;t recover either. To understand what it becomes, start with what&apos;s already changing for the people who build it.&lt;/p&gt;
&lt;h2&gt;240 million downloads, zero feedback&lt;/h2&gt;
&lt;p&gt;I maintain &lt;a href=&quot;https://github.com/jd/tenacity&quot;&gt;tenacity&lt;/a&gt;, a retry library for Python. 240 million downloads last month. But I can feel the shift: anyone can now tell Claude &quot;write me a retry decorator with exponential backoff and jitter&quot; and get something good enough in 30 seconds. The library isn&apos;t competing with other libraries anymore. It&apos;s competing with generating the code on the fly.&lt;/p&gt;
&lt;p&gt;I started &lt;a href=&quot;https://awesomewm.org&quot;&gt;awesome&lt;/a&gt; in 2007 because I wanted a tiling window manager that didn&apos;t suck. Nobody was paying me. That impulse doesn&apos;t go away because Claude can autocomplete your config files. But here&apos;s the thing: I kept maintaining it because people &lt;em&gt;used&lt;/em&gt; it. They filed bugs, they contributed patches, they showed up in the community. That feedback loop is what made the work feel worth doing.&lt;/p&gt;
&lt;p&gt;If users stop showing up (because they generated their own config, their own tool, their own solution) that loop breaks. Starting a project still feels great. Maintaining one nobody engages with doesn&apos;t. And when code is a commodity, a project needs &lt;em&gt;vision&lt;/em&gt; to stand out: a point of view, a design philosophy, an opinionated take on how things should work. Open source used to reward craft. Now it rewards product thinking. Not everyone wants to be a product person.&lt;/p&gt;
&lt;h2&gt;The middle collapses&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://tailwindcss.com/&quot;&gt;Tailwind&lt;/a&gt; is the poster child (80% revenue drop despite growing usage) but think of every well-crafted open source project sustained by one person or a small team selling docs, courses, or sponsorships. That entire tier is in trouble.&lt;/p&gt;
&lt;p&gt;Companies like &lt;a href=&quot;https://redis.io/&quot;&gt;Redis&lt;/a&gt; or &lt;a href=&quot;https://www.elastic.co/&quot;&gt;Elastic&lt;/a&gt; can adapt because they have real revenue and can change their licenses: &lt;a href=&quot;https://redis.io/blog/redis-adopts-dual-source-available-licensing/&quot;&gt;Redis switched to dual licensing&lt;/a&gt;, &lt;a href=&quot;https://www.elastic.co/blog/elasticsearch-is-open-source-again&quot;&gt;Elastic went SSPL then came back&lt;/a&gt;, &lt;a href=&quot;https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license&quot;&gt;HashiCorp moved to BSL&lt;/a&gt;. Some mid-tier projects get absorbed into corporate ecosystems: &lt;a href=&quot;https://vercel.com&quot;&gt;Vercel&lt;/a&gt; backs &lt;a href=&quot;https://nextjs.org/&quot;&gt;Next.js&lt;/a&gt;, &lt;a href=&quot;https://astro.build/blog/supporting-the-future-of-astro/&quot;&gt;Cloudflare acquires Astro&lt;/a&gt;. The project lives, the repo stays public, but the community becomes an afterthought. It&apos;s corporate R&amp;amp;D with a GitHub URL.&lt;/p&gt;
&lt;p&gt;And new licenses are emerging to fight back. The &lt;a href=&quot;https://polyformproject.org/licenses/shield/1.0.0/&quot;&gt;PolyForm Shield&lt;/a&gt; restricts competitors from using your code. The &lt;a href=&quot;https://www.licenses.ai/&quot;&gt;Responsible AI License (RAIL)&lt;/a&gt; adds behavioral restrictions on AI use. Some projects are experimenting with clauses that explicitly prohibit feeding code into training datasets: you can use my code, but you can&apos;t feed it to a model that will help your users bypass me entirely.&lt;/p&gt;
&lt;p&gt;Whether these licenses will hold up in court is untested. But the fact that they&apos;re emerging tells you something. When maintainers start lawyering up, the community era is over. The solo maintainer doesn&apos;t have Redis&apos;s resources to pivot. They either stop, or &lt;a href=&quot;https://steipete.me/posts/2026/openclaw&quot;&gt;get acqui-hired by the companies that need their work&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The twist nobody sees coming&lt;/h2&gt;
&lt;p&gt;Here&apos;s the thing that makes this hard to see clearly: open source looks &lt;em&gt;healthier&lt;/em&gt; than ever from the outside.&lt;/p&gt;
&lt;p&gt;Corporate open source output is actually &lt;em&gt;increasing&lt;/em&gt;. &lt;a href=&quot;https://opensource.fb.com/&quot;&gt;Meta&lt;/a&gt; open-sources &lt;a href=&quot;https://pytorch.org/&quot;&gt;PyTorch&lt;/a&gt; and &lt;a href=&quot;https://llama.meta.com/&quot;&gt;Llama&lt;/a&gt; to commoditize the AI stack and set the standards others build on. &lt;a href=&quot;https://opensource.google/&quot;&gt;Google&lt;/a&gt; does the same with &lt;a href=&quot;https://kubernetes.io/&quot;&gt;Kubernetes&lt;/a&gt; and &lt;a href=&quot;https://go.dev/&quot;&gt;Go&lt;/a&gt;. AI labs publish model weights so the ecosystem locks into their formats. More code than ever is landing in public repos.&lt;/p&gt;
&lt;p&gt;But the word &quot;open&quot; is doing a lot of heavy lifting. These projects are strategic assets with public URLs. There&apos;s no community, just suppliers and consumers. &lt;a href=&quot;https://kernel.org&quot;&gt;Linux&lt;/a&gt;, &lt;a href=&quot;https://curl.se/&quot;&gt;curl&lt;/a&gt;, &lt;a href=&quot;https://www.postgresql.org/&quot;&gt;PostgreSQL&lt;/a&gt; get funded not because people care, but because they&apos;re supply chain dependencies (professionalized maintainers on corporate payrolls, a trend building for over 20 years). The corporate-backed projects were never communities to begin with.&lt;/p&gt;
&lt;p&gt;Open source isn&apos;t dying. It&apos;s being industrialized. The old open source was a community. People showed up because they cared. They contributed because they were proud. They maintained because they were recognized. The economics were messy and implicit, but they were human. The new open source is a supply chain.&lt;/p&gt;
&lt;h2&gt;What&apos;s left&lt;/h2&gt;
&lt;p&gt;I&apos;ve been in open source for over 20 years. The thing I loved about it was never the code. It was the bug reports that turned into conversations. The patches from strangers who cared. The feeling of building something together that none of us could have built alone.&lt;/p&gt;
&lt;p&gt;Some will argue AI lowers the barrier to contribute, that agents filing PRs and writing docs keeps the ecosystem healthy. Maybe. But a pull request from a bot isn&apos;t the same as a patch from someone who cared enough to read your code and understand your design. The mechanical contribution survives. The human connection doesn&apos;t.&lt;/p&gt;
&lt;p&gt;The open source that comes next will produce good software. Maybe even better software, once infrastructure gets properly funded and AI tooling matures. But it&apos;ll be lonelier. More transactional. Less weird.&lt;/p&gt;
&lt;p&gt;The code will keep flowing. The community won&apos;t.&lt;/p&gt;
</content:encoded><category>open-source</category><category>ai</category></item><item><title>Open Source Is Getting Used to Death</title><link>https://julien.danjou.info/blog/open-source-is-getting-used-to-death/</link><guid isPermaLink="true">https://julien.danjou.info/blog/open-source-is-getting-used-to-death/</guid><description>AI broke the implicit deal that sustained open source for 30 years. Usage is up. Engagement is gone. The economics don&apos;t work anymore.</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://tailwindcss.com/&quot;&gt;Tailwind CSS&lt;/a&gt; is more popular than ever. Downloads keep climbing. Developers love it. AI coding assistants recommend it constantly.&lt;/p&gt;
&lt;p&gt;Its creator, &lt;a href=&quot;https://adamwathan.me/&quot;&gt;Adam Wathan&lt;/a&gt;, says &lt;a href=&quot;https://devclass.com/2026/01/08/tailwind-labs-lays-off-75-percent-of-its-engineers-thanks-to-brutal-impact-of-ai/&quot;&gt;documentation traffic is down 40% and revenue has dropped close to 80%&lt;/a&gt;. He &lt;a href=&quot;https://github.com/tailwindlabs/tailwindcss.com/pull/2388&quot;&gt;laid off 75% of the team&lt;/a&gt; last month.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/open-source-used-to-death/tailwind-fire.png&quot; alt=&quot;Tailwind CSS team layoff announcement on GitHub&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s the state of open source in 2026. More usage, less everything else.&lt;/p&gt;
&lt;h2&gt;The deal nobody signed&lt;/h2&gt;
&lt;p&gt;Open source always ran on an implicit deal: I share my code, you engage with it. You read the docs, file bugs, sponsor the project, contribute patches, argue about API design. That engagement was the currency that kept the ecosystem alive.&lt;/p&gt;
&lt;p&gt;The deal was already fraying. &lt;a href=&quot;https://nadia.xyz/&quot;&gt;Nadia Eghbal&lt;/a&gt; documented this in &lt;a href=&quot;https://press.stripe.com/working-in-public&quot;&gt;&lt;em&gt;Working in Public&lt;/em&gt;&lt;/a&gt; back in 2020: the ratio of consumers to contributors was already thousands to one. Most users never filed a bug, never sponsored anything, never showed up. Maintainers were burning out long before AI arrived.&lt;/p&gt;
&lt;p&gt;But AI didn&apos;t just accelerate the decline. It changed the structure.&lt;/p&gt;
&lt;p&gt;When &lt;a href=&quot;https://claude.ai&quot;&gt;Claude&lt;/a&gt; writes your Tailwind classes, you never visit the docs. When &lt;a href=&quot;https://github.com/features/copilot&quot;&gt;Copilot&lt;/a&gt; autocompletes your &lt;a href=&quot;https://curl.se/&quot;&gt;curl&lt;/a&gt; flags, you never read the man page. When an AI agent assembles your project from a dozen open source libraries, none of those maintainers see a download page visit, a GitHub star, or a support ticket.&lt;/p&gt;
&lt;p&gt;The code still flows. The engagement doesn&apos;t.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/open-source-used-to-death/robots-lib.webp&quot; alt=&quot;Robots checking out books from a library, but nobody is returning them&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Two channels, one winner&lt;/h2&gt;
&lt;p&gt;Koren, Békés, Hinz, and Lohmann lay this out in &lt;a href=&quot;https://arxiv.org/abs/2601.15494&quot;&gt;&quot;Vibe Coding Kills Open Source&quot;&lt;/a&gt;, a paper that models two competing forces. AI makes it cheaper to build software — more projects, better code, the flywheel that grew open source for 30 years spins faster. But AI also means users interact with open source through a proxy. They get the value and skip the engagement. Maintainers lose the revenue, reputation, and feedback that justified sharing code.&lt;/p&gt;
&lt;p&gt;In the short term, both forces are at work and the good one wins. Long-term, diversion dominates. The flywheel starts running in reverse.&lt;/p&gt;
&lt;p&gt;For 30 years, the cycle looked like this: a maintainer shares a library. Developers use it, read the docs, file bugs, sponsor it. The maintainer gets revenue, reputation, and feedback — keeps improving. More developers adopt it. The cycle reinforces itself.&lt;/p&gt;
&lt;p&gt;&amp;lt;img src=&quot;/images/blog/open-source-used-to-death/virtuous-cycle.svg&quot; alt=&quot;The open source virtuous cycle&quot; width=&quot;400&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The virtuous cycle that sustained open source for 30 years&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now the loop runs in reverse. A maintainer shares a library. AI agents use it, but users never visit the docs, never file issues, never sponsor the project. Revenue drops. The maintainer burns out and stops maintaining. Developers who need that functionality ask an AI to build it from scratch. That generated code never gets shared back — why would it? And the next maintainer looking at the economics thinks: why bother sharing mine?&lt;/p&gt;
&lt;p&gt;&amp;lt;img src=&quot;/images/blog/open-source-used-to-death/death-spiral.svg&quot; alt=&quot;The open source death spiral&quot; width=&quot;300&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The same loop — until it isn&apos;t&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Each turn of the cycle is rational. No one&apos;s doing anything wrong. But the collective result is an ecosystem consuming itself.&lt;/p&gt;
&lt;p&gt;The data is already there. &lt;a href=&quot;https://stackoverflow.com/&quot;&gt;Stack Overflow&lt;/a&gt; lost &lt;a href=&quot;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4990637&quot;&gt;25% of its activity&lt;/a&gt; within six months of &lt;a href=&quot;https://chatgpt.com/&quot;&gt;ChatGPT&lt;/a&gt; launching — and yes, SO was already declining, but AI cratered the curve. The &lt;a href=&quot;https://daniel.haxx.se/&quot;&gt;curl maintainer&lt;/a&gt; reports that &lt;a href=&quot;https://daniel.haxx.se/blog/2024/01/02/the-i-in-llm-stands-for-intelligence/&quot;&gt;20% of security vulnerability reports are now AI-generated garbage&lt;/a&gt;. Downloads go up. Everything that matters goes down.&lt;/p&gt;
&lt;h2&gt;The economics of extraction&lt;/h2&gt;
&lt;p&gt;When cloud providers started offering open source as a service (the &quot;AWS problem&quot;), maintainers at least knew who was extracting value. You could negotiate. You could change your license. You could build a competing hosted product. You could fight it.&lt;/p&gt;
&lt;p&gt;AI extraction is painless — and that&apos;s what makes it lethal. Nobody feels like they&apos;re taking anything. A developer asks Claude a question, gets working code, ships it. The value flows out of open source into training data, into autocomplete suggestions, into vibe-coded projects — and nobody involved ever knows your name. It&apos;s not theft. It&apos;s evaporation.&lt;/p&gt;
&lt;p&gt;The paper puts numbers to it: to sustain open source at current levels, you&apos;d need each user to pay roughly what they pay now. But the whole point of AI-mediated usage is that per-user engagement drops to near zero. The math doesn&apos;t work.&lt;/p&gt;
&lt;h2&gt;What the economists miss&lt;/h2&gt;
&lt;p&gt;The paper leaves out the part where developers do things because they want to, not because they get paid. It acknowledges this blind spot.&lt;/p&gt;
&lt;p&gt;I&apos;ve spent over 20 years in open source — &lt;a href=&quot;https://www.debian.org&quot;&gt;Debian&lt;/a&gt;, &lt;a href=&quot;https://awesomewm.org&quot;&gt;awesome window manager&lt;/a&gt;, &lt;a href=&quot;https://www.gnu.org/software/emacs/&quot;&gt;GNU Emacs&lt;/a&gt;, &lt;a href=&quot;https://www.openstack.org&quot;&gt;OpenStack&lt;/a&gt;, &lt;a href=&quot;https://mergify.com&quot;&gt;Mergify&lt;/a&gt; — and the economics were never the whole story. A lot of open source ran on ego. And I mean that as a compliment.&lt;/p&gt;
&lt;p&gt;You started a project because you were proud of what you built. You maintained it because people used it and told you it was good. You contributed to someone else&apos;s project because it felt meaningful to be part of something bigger. The reputation, the GitHub profile, the conference talks — that was the fuel.&lt;/p&gt;
&lt;p&gt;AI erodes that too. When your library is consumed by a model that never credits you, the ego fuel dries up. Nobody&apos;s filing issues saying &quot;great work on this API.&quot; Nobody&apos;s writing blog posts about your clever design decisions. Your code is in millions of projects and you&apos;ll never know.&lt;/p&gt;
&lt;p&gt;Michael Still &lt;a href=&quot;https://www.madebymikal.com/ancient-code-mental-health-and-ai-tooling/&quot;&gt;maintained pngtools for 25 years&lt;/a&gt; and recently admitted he &quot;can&apos;t really explain what I got in return apart from the occasional dopamine hit.&quot; That&apos;s not bitterness — it&apos;s an honest accounting of what happens when the feedback loop never closes.&lt;/p&gt;
&lt;h2&gt;The rebuild reflex&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.anthropic.com&quot;&gt;Anthropic&lt;/a&gt; &lt;a href=&quot;https://www.anthropic.com/engineering/building-c-compiler&quot;&gt;built a C compiler&lt;/a&gt; with Claude. &lt;a href=&quot;https://openai.com&quot;&gt;OpenAI&lt;/a&gt; &lt;a href=&quot;https://fortune.com/2026/01/23/cursor-built-web-browser-with-swarm-ai-agents-powered-openai/&quot;&gt;built a web browser&lt;/a&gt;. This is what happens when development costs collapse.&lt;/p&gt;
&lt;p&gt;The obvious objection: generating code isn&apos;t maintaining code. curl works because of 20 years of edge cases, security patches, and platform quirks. You can&apos;t generate that in a weekend. True — but the line between &quot;writing&quot; code and &quot;maintaining&quot; code is blurrier than it looks. Every line you write immediately becomes maintenance. AI doesn&apos;t just generate the first draft — it fixes the bugs, handles the edge cases, iterates on the patches. The entire lifecycle gets cheaper, not just the initial build.&lt;/p&gt;
&lt;p&gt;Five years ago, nobody in their right mind would build their own HTTP server, their own date parsing library, their own compression algorithm. You used the shared one because the alternative was insane.&lt;/p&gt;
&lt;p&gt;The alternative is no longer insane. It might be a weekend project.&lt;/p&gt;
&lt;h2&gt;Where this leaves us&lt;/h2&gt;
&lt;p&gt;Some of this is happening right now. The Tailwind numbers are a Q4 report. Stack Overflow&apos;s decline is measured. The &lt;a href=&quot;https://curl.se/&quot;&gt;curl&lt;/a&gt; maintainer is drowning in AI-generated noise today. Some of it is projection — I&apos;m betting that the diversion effect gets stronger, not weaker, as AI gets better. I could be wrong. But the trend lines all point the same way.&lt;/p&gt;
&lt;p&gt;&quot;But AI also contributes!&quot; Sure. Agents file PRs, generate docs, triage issues. That helps with the mechanical work. It doesn&apos;t replace the human who cared enough to read your code and tell you it mattered. The engagement that sustained open source was never about the pull requests — it was about the people behind them.&lt;/p&gt;
&lt;p&gt;Open source isn&apos;t dying because people stopped caring. It&apos;s dying because AI lets people extract all the value without returning any of it. The code flows through models, through agents, through autocomplete — and none of it flows back.&lt;/p&gt;
&lt;p&gt;The question isn&apos;t whether this is happening. It&apos;s what comes next.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://julien.danjou.info/blog/open-source-after-the-extraction&quot;&gt;Part 2: Open Source After the Extraction&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>open-source</category><category>ai</category></item><item><title>Gnocchi 4.3.0 released</title><link>https://julien.danjou.info/blog/gnocchi-4-3-0-released/</link><guid isPermaLink="true">https://julien.danjou.info/blog/gnocchi-4-3-0-released/</guid><description>This new release minor release of Gnocchi has been a bit longer than usual, but here it is!</description><pubDate>Mon, 30 Jul 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This new release minor release of Gnocchi has been a bit longer than usual, but here it is!&lt;/p&gt;
&lt;p&gt;So what&apos;s new in this version of Gnocchi? Well, according to &lt;a href=&quot;https://gnocchi.xyz/releasenotes/4.3.html&quot;&gt;the release notes&lt;/a&gt;, not much. There are only two new features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;gnocchi-injector&lt;/em&gt; which allows injecting data for &lt;em&gt;metricd&lt;/em&gt; consumption directly. This is useful to test &lt;em&gt;metricd&lt;/em&gt; performances.&lt;/li&gt;
&lt;li&gt;The ability for the &lt;code&gt;/v1/aggregation/resources&lt;/code&gt; endpoint to read a string rather than a JSON formatted payload for filtering.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nothing exciting here… however, other changes are not user-visible and are not in those notes:&lt;/p&gt;
&lt;p&gt;Performance boost, everywhere!&lt;/p&gt;
&lt;p&gt;The storage engine has been largely improved to batch a ton of operations that used to be done on a per-metric basis. When ingesting new measures, Gnocchi was storing those new points in batch. However, the processing done by &lt;em&gt;metricd&lt;/em&gt; later was single-metric based for most it. This did not leverage the efficiency that some backend might have and would create more I/O operations than necessary.&lt;/p&gt;
&lt;p&gt;Each incoming data sack is now processed in batch mode, making &lt;em&gt;metricd&lt;/em&gt; much faster at aggregating metrics data! When doing local benchmarks, some scenario presented an improvement of 8x.&lt;/p&gt;
&lt;p&gt;This new storage internal API is not used by the REST API yet, as many operations exposed by the API are oriented for a single metric. That might be a significant improvement for the next version of Gnocchi&apos;s API.&lt;/p&gt;
&lt;p&gt;Happy upgrade!&lt;/p&gt;
</content:encoded><category>open-source</category><category>openstack</category></item><item><title>Attending OpenStack Summit Ocata</title><link>https://julien.danjou.info/blog/openstack-summit-ocata-barcelona-review/</link><guid isPermaLink="true">https://julien.danjou.info/blog/openstack-summit-ocata-barcelona-review/</guid><description>For the last time in 2016, I flew out to the OpenStack Summit in Barcelona, where I had the chance to meet (again) a lot of my fellow OpenStack contributors there.</description><pubDate>Mon, 31 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the last time in 2016, I flew out to the &lt;a href=&quot;https://www.openstack.org/summit/barcelona-2016/&quot;&gt;OpenStack Summit in Barcelona&lt;/a&gt;, where I had the chance to meet (again) a lot of my fellow OpenStack contributors there.&lt;/p&gt;
&lt;h2&gt;How To Work Upstream with OpenStack&lt;/h2&gt;
&lt;p&gt;My week started by giving a talk about &lt;em&gt;How To Work Upstream with OpenStack&lt;/em&gt; where I explained, accompanied by Ryota and Ashiq, to the audience how to contribute upstream to OpenStack. It went well and was well received by the public – you can watch the video below or&lt;br /&gt;
download the slides.&lt;/p&gt;
&lt;h2&gt;Python 3 in telemetry projects&lt;/h2&gt;
&lt;p&gt;I&apos;ve attended a few interesting cross-project sessions, which helped me getting some prioritization for my work during the next few months.&lt;/p&gt;
&lt;p&gt;The Python 3 porting effort is blocked for a while in Nova and Swift for various (mostly non-technical) reasons, while almost all other projects are working correctly. On the other hand, we have committed the telemetry projects to be the first one to drop Python 2 support has soon as it is possible. The next steps are to be sure downstream is ready and enable functional testing in devstack with Python 3.&lt;/p&gt;
&lt;h2&gt;Ceilometer deprecation&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/gordon-gnocchi-talk.jpg&quot; alt=&quot;gordon-gnocchi-talk&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Ceilometer sessions were really interesting, are we mainly discussed deprecating and removing old crufts that are not or should not be used anymore. The main change will be the depreciation of the Ceilometer API. It has been clear for more than a year that &lt;a href=&quot;http://gnocchi.xyz&quot;&gt;Gnocchi&lt;/a&gt; is the way-to-go to store and provide access to metrics, but we failed at announcing wildly. A lot of the people I talked to during the summit were not aware that the Ceilometer API was not a good pick, and that Gnocchi was the now recommended storage backend. Bad communication from our side – but we are going to fix it as of now.&lt;/p&gt;
&lt;p&gt;We also committed to simplify the current architecture by removing the collector, which has now be made obsolete by the agent based architecture that was implemented during the last development cycles.&lt;/p&gt;
&lt;h2&gt;Aodh alarm timeout&lt;/h2&gt;
&lt;p&gt;We had a feature proposal for a while in Aodh that we postponed for too long already: having timeout triggered after not having seen some events. This seems to be a functionality requested by NFV users – something we want Aodh to cover.&lt;/p&gt;
&lt;p&gt;We spent some time discussing this feature, and now that we all have a clear understanding of the use case, we&apos;ll work on having a clear path to the implementation.&lt;/p&gt;
&lt;p&gt;I&apos;ve also attended a session with the &lt;a href=&quot;https://wiki.openstack.org/wiki/Vitrage&quot;&gt;Vitrage&lt;/a&gt; developers in order to discuss how we could work better together, as they rely on Aodh. It seems there might be some convergence in the future, which would be very welcome. Wait&apos;n see.&lt;/p&gt;
&lt;h2&gt;Gnocchi improvement, past and future&lt;/h2&gt;
&lt;p&gt;The Gnocchi session ran smoothly, and everyone seemed happy with the work we have done so far. We&apos;ve made some impressive improvement in Gnocchi 3.0 – as &lt;a href=&quot;https://julien.danjou.info/blog/2016/gnocchi-3.0-release&quot;&gt;I already covered previously&lt;/a&gt; – and Gordon Chung presented a short talk about the performance difference metered while working on this new version of Gnocchi:&lt;/p&gt;
&lt;p&gt;The return of the InfluxDB driver is on the table, as Sam Morrison proposed a patch for that while back. While it&apos;s not as fast and scalable as other drivers, it offers a good alternative for people having to use it.&lt;/p&gt;
&lt;p&gt;Leandro Reox presented how to do capacity planning using Ceilometer and Gnocchi, presenting the projects at the same time:&lt;/p&gt;
&lt;p&gt;It is pretty impressive to see what they achieved with this project, and I&apos;m looking forward to being able to check how it works inside.&lt;/p&gt;
&lt;h2&gt;PTG and beyond&lt;/h2&gt;
&lt;p&gt;The next meeting is supposed to be the new &lt;a href=&quot;https://www.openstack.org/ptg/&quot;&gt;OpenStack PTG&lt;/a&gt; in February in Atlanta, though we did not request any specific space there. While the team love seeing each other face-to-face every few months, we achieved to follow &lt;a href=&quot;https://julien.danjou.info/blog/foss-projects-management-bad-practice&quot;&gt;all of the guidelines I listed recently&lt;/a&gt; on good open source project management, meaning we are able to work very well asynchronously and remotely. There is no need to put hard requirements on people wanting to participate in our community. Nevertheless, I expect cross-projects discussions that will happen to still concern the OpenStack Telemetry projects.&lt;/p&gt;
&lt;p&gt;In the end, we&apos;re all very happy with our past and future roadmaps and I&apos;m looking forward to achieving our next big milestones with our amazing telemetry team!&lt;/p&gt;
</content:encoded><category>openstack</category><category>gnocchi</category><category>open-source</category><category>talks</category></item><item><title>Running an open source and upstream oriented team in agile mode</title><link>https://julien.danjou.info/blog/opensource-upstream-team-agile/</link><guid isPermaLink="true">https://julien.danjou.info/blog/opensource-upstream-team-agile/</guid><description>For the last 3 years, I&apos;ve been working in the OpenStack Telemetry team at eNovance, and then at Red Hat. Our mission is to maintain the OpenStack Telemetry stack, both upstream and downstream (i.e.</description><pubDate>Tue, 18 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the last 3 years, I&apos;ve been working in the OpenStack Telemetry team at &lt;a href=&quot;http://enovance.com&quot;&gt;eNovance&lt;/a&gt;, and then at &lt;a href=&quot;http://redhat.com&quot;&gt;Red Hat&lt;/a&gt;. Our mission is to maintain the OpenStack Telemetry stack, both upstream and downstream (i.e. inside Red Hat products). Besides the technical challenges, the organization of the team always have played a major role in our accomplishments.&lt;/p&gt;
&lt;p&gt;Here, I&apos;d like to share some of my hindsight with you, faithful readers.&lt;/p&gt;
&lt;h2&gt;Meet the team&lt;/h2&gt;
&lt;p&gt;The team I work in changed a bit during those 3 years, but the core components always have been the same: a few software engineers, a QE engineer, a product owner, and an engineering manager. That meant the team size has been always been between 6 and 8 people.&lt;/p&gt;
&lt;p&gt;I cannot emphasize enough how team size is important. Not having more than 8 persons in a team fits with the &lt;a href=&quot;https://www.fastcompany.com/3037542/productivity-hack-of-the-week-the-two-pizza-approach-to-productive-teamwork&quot;&gt;two pizzas rule from Jeff Bezzos&lt;/a&gt;, which turned out to be key in our team composition.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/pizza-rule.jpg&quot; alt=&quot;pizza-rule&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The group dynamic that is applied by teams not bigger than this is excellent. It offers the possibility to know and connect with everyone – each time member has only up to 7 people to talk to on a daily basis, which means only 28 communication axis between people. Having a team of e.g. 16 people means 120 different links in your team. Double your team size, and multiply by 4 your communication overhead. My experience shows that the less communication axis you have in a team, the less overhead your will have and the swifter your team will be.&lt;/p&gt;
&lt;p&gt;All team members being remote workers, is is even more challenging to build relationship and bound. We had the opportunity to know each other during the OpenStack summit twice a year and doing regular video-conference via &lt;a href=&quot;http://hangout.google.com&quot;&gt;Google Hangout&lt;/a&gt; or &lt;a href=&quot;http://bluejeans.com&quot;&gt;BlueJeans&lt;/a&gt; really helped.&lt;/p&gt;
&lt;p&gt;The atmosphere you set-up in your team will also forge the outcome of your team work. Run your team with trust, peace and humor (remember I&apos;m on the team 🤣) and awesome things will happen. Run your team with fear, pressure, and finger-pointing, nothing good will happen.&lt;/p&gt;
&lt;p&gt;There&apos;s little chance that when a team is built, everyone will be on the same level. We were no exception, we had more and less experienced engineers. But the most experienced engineers took the time needed to invest and mentor the less experienced. That also helped to build trust and communication links between members of the team. And over the long run, everyone is getting more efficient: the less experienced engineers are getting better and the more experienced can delegate a lot of stuff to their fellows.&lt;/p&gt;
&lt;p&gt;Then they can chill or work on bigger stuff. Win-win.&lt;/p&gt;
&lt;p&gt;It&apos;s actually no more different than that the way you should run an open source team, as I already claimed in a &lt;a href=&quot;https://julien.danjou.info/blog/foss-projects-management-bad-practice&quot;&gt;previous article on FOSS projects management&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/everything-is-awesome.jpg&quot; alt=&quot;everything-is-awesome&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Practicing agility&lt;/h2&gt;
&lt;p&gt;I might be bad at practicing agility: contrary to many people, I don&apos;t see agility as a set of processes. I see that as a state of mind, as a team organization based on empowerment. No more, no less.&lt;/p&gt;
&lt;p&gt;And each time I meet people and explain that our team is &quot;agile&quot;, they start shivering, explaining how they hate sprints, daily stand-ups, scrum, and &lt;a href=&quot;https://en.wikipedia.org/wiki/Planning_poker&quot;&gt;planning poker&lt;/a&gt;, that this is all a waste of time and energy.&lt;/p&gt;
&lt;p&gt;Well, it turns out that you can be agile without all of that.&lt;/p&gt;
&lt;h3&gt;Planning poker&lt;/h3&gt;
&lt;p&gt;In our team, we tried at first to run 2-weeks sprints and used planning poker to schedule our &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/User_story&quot;&gt;user stories&lt;/a&gt;&lt;/em&gt; from our product backlog (= todo list). It never worked as expected.&lt;/p&gt;
&lt;p&gt;First, most people had the feeling to lose their time because they already knew exactly what they were supposed to do. Having any doubt, they would have just gone and talked to the product owner or another fellow engineer.&lt;/p&gt;
&lt;p&gt;Secondly, some stories were really specialized and only one of the team member was able to understand it in details and evaluate it. So most of the time, a lot of the team members playing planning poker would just vote a random number based on the length of the explanation of the story teller. For example, if an engineer said &quot;I just need to change that flag in the configuration file&quot; then everyone would vote 1. If they started rambling for 5 minutes about &quot;how the configuration option is easy to switch, but that there might be other things to change at the same time, and things to check for impact bigger than expected, and code refactoring to do&quot;, then most people would just announce a score of 13 on that &lt;em&gt;story&lt;/em&gt;. Just because the guy talked for 3 minutes straight and everything sounded complicated and out of their scope.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/planningpoker.jpg&quot; alt=&quot;planningpoker&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That meant that the poker score had no meaning to us. We never managed to have a number of points that we knew we could accomplish during a sprint (the &lt;em&gt;team velocity&lt;/em&gt; as they call it).&lt;/p&gt;
&lt;p&gt;The only benefit that we identified from planning poker, in our case, is that it forces people to keep sit down and communicate about a &lt;em&gt;user story&lt;/em&gt;. Though, it turned out that making people communicate was not a problem we needed to solve in our team, so we decided to stop doing that. But it can be a pretty good tool to make people talking to each other.&lt;/p&gt;
&lt;p&gt;Therefore, the 2-weeks sprint never made much sense as we were unable to schedule our work reliably. Furthermore, doing most of our daily job in open source communities, we were unable to schedule anything. When sending patches to an upstream project, you have no clue when they will be reviewed. What you know for sure, is that in order to maximize your code merge throughput with this high latency of code review, you need to parallelize your patch submission a lot. So as soon as you receive some feedback from your reviewers, you need to (almost) drop everything, rework your code and resubmit it.&lt;/p&gt;
&lt;p&gt;There&apos;s no need to explain what this does not absolutely work with a sprint approach. Most of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Scrum_(software_development)&quot;&gt;scrum framework&lt;/a&gt; lays on the fact that you own workflow from top to bottom, which is far from being true when working in open source communities.&lt;/p&gt;
&lt;h3&gt;Daily stand-up meetings&lt;/h3&gt;
&lt;p&gt;We used to run a daily stand-up meeting every day, then every other day. Doing that remotely kills the stand-up part, obviously, so there is less guarantee the meeting will be short. Considering all team members are working remotely in different time zones, with some freedom to organize their schedule, it was very difficult to synchronize those meetings. With member spread from the US to Eastern Europe, the meeting was in the middle of the afternoon for me. I found it frustrating to have to stop my activities in the middle of every afternoon to chat with my team. We all know the cost of context switching to us, humans.&lt;/p&gt;
&lt;p&gt;So we drifted from our 10 minutes daily meeting to a one-hour weekly meeting with the whole team. It&apos;s way easier to synchronize for a large chunk of time once a week and to have this high-throughput communication channel.&lt;/p&gt;
&lt;h2&gt;Our (own) agile framework&lt;/h2&gt;
&lt;p&gt;Drifting from the original scrum implementation, we ended up running our own agility framework. It turned out to have similarity with &lt;a href=&quot;https://en.wikipedia.org/wiki/Kanban_(development)&quot;&gt;kanban&lt;/a&gt; – you don&apos;t always have to invent new things!&lt;/p&gt;
&lt;p&gt;Our main support is a &lt;a href=&quot;http://trello.com&quot;&gt;Trello board&lt;/a&gt; that we share with the whole team. It consists of different columns, where we put card representing small user stories or simple to-do items. Each column is the state of the current card, and we move them left to right:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Ideas&lt;/em&gt;: where we put things we&apos;d like to do or dig into, but there&apos;s no urgency. It might lead to new, smaller ideas, in the &quot;To Do&quot; column.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;To Do&lt;/em&gt;: where we put real things we need to do. We might run a grooming session with our product manager if we need help prioritizing things, but it&apos;s usually not necessary.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Epic&lt;/em&gt;: here we create a few bigger cards that regroup several &lt;em&gt;To Do&lt;/em&gt; items. We don&apos;t move them around, we just archive them when they are fully implemented. There are only 5-6 big cards here at max, which are the long term goals we work on.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Doing&lt;/em&gt;: where we move cards from &lt;em&gt;To Do&lt;/em&gt; when we start doing them. At this stage, we also add people working on the task to the card, so we see a little face of people involved.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Under review&lt;/em&gt;: 90% of our job being done upstream, we usually move cards done and waiting for feedback from the community to this column. When the patches are approved and the card is complete, we move the card to &lt;em&gt;Done&lt;/em&gt;. If a patch needs further improvement, we move back the card to &lt;em&gt;Doing&lt;/em&gt; and work on it, and then move it back to &lt;em&gt;Under review&lt;/em&gt; when resubmitted.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;On hold / blocked&lt;/em&gt;: some of the tasks we work on might be blocked by external factors. We move cards there to keep track of them.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Done during week #XX&lt;/em&gt;: we create a new list every Monday to stack our done cards by week. This is just easier to display and it allows us to see the cards that we complete each week. We archive lists older than a month, from time to time. It gives a great visual feedback and what has been accomplished and merged every week.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/telemetry-trello.jpg&quot; alt=&quot;telemetry-trello&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We started to automate some of our Trello workflow in a tool called &lt;a href=&quot;https://github.com/jd/trelloha&quot;&gt;Trelloha&lt;/a&gt;. For example, it allows us to track upstream patches sent through Gerrit or GitHub and tick the checkbox items in any card when those are merged.&lt;/p&gt;
&lt;p&gt;We actually don&apos;t put many efforts on our Trello board. It&apos;s just a slightly organized chaos, as are upstream projects. We use it as a lightweight system for taking notes, organizing our thought and letting know what we&apos;re doing and why we&apos;re doing it. That&apos;s where Trello is wonderful because using it has a very low friction: creating, updating and moving card is a one click operation.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One bias of most engineers is to overthink and over-engineer their workflow, trying to rationalize it. Most of the time, they end up automating which means building processes and bureaucracy. It just slows things down and builds frustration upon everyone. Just embrace chaos and spend time on what matters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Most of the things we do are linked to external Launchpad bugs, Gerrit reviews or GitHub issues. That means the cards in Trello carry very little information, as everything happens outside, in the wild Internet of open source communities.&lt;/p&gt;
&lt;p&gt;This is very important as we need to avoid any kind of retention of knowledge and information from contributors outside the company. This also makes sure that our internal way of running does not leak outside and (badly) influence outside communities.&lt;/p&gt;
&lt;h3&gt;Retrospectives&lt;/h3&gt;
&lt;p&gt;We also run a retrospective every 2 weeks, which might be the only thing we kept from the scrum practice. It&apos;s actually a good opportunity for us to share our feelings, concerns or jokes. We used to do it using the &lt;a href=&quot;http://retrospectivewiki.org/index.php?title=6_Thinking_Hats_Retrospective&quot;&gt;&lt;em&gt;six thinking hats&lt;/em&gt;&lt;/a&gt; method, but it slowly faded away. In the end, we now use a different Trello board with those columns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Good 😄&lt;/li&gt;
&lt;li&gt;Hopes and Wishes 🎁&lt;/li&gt;
&lt;li&gt;Puzzles and Challenges 🌊&lt;/li&gt;
&lt;li&gt;To improve 😡&lt;/li&gt;
&lt;li&gt;Action Items 🤘&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All teammates fill the board with the card they want, and everyone is free to add themselves to any card. We then run through each card and let people who added their name to it talk about it. The column &quot;Action Items&quot; is usually filled as we speak and discover we should do things. We can then move cards created there to our regular board, in the &lt;em&gt;To Do&lt;/em&gt; column.&lt;/p&gt;
&lt;h3&gt;Central communication&lt;/h3&gt;
&lt;p&gt;Sure, people have different roles in a team, but we dislike bottleneck and single point of failure. Therefore, we are using an internal mailing list where we ask people to send their request and messages to. If people send things related to our team job to one of us personally, we just forward or Cc the list when replying so everyone is aware of what one might be talking about with people external to the team.&lt;/p&gt;
&lt;p&gt;This is very important, as it emphasizes that no team member should be considered &lt;em&gt;special&lt;/em&gt;. Nobody owns more information and knowledge than others, and anybody can jump into a conversation if it has valuable knowledge to share.&lt;/p&gt;
&lt;p&gt;The same applies for our internal IRC channel.&lt;/p&gt;
&lt;p&gt;We also make sure that we discuss only company-specific things on this list or on our internal IRC channel. Everything that can be public and is related to upstream is discussed on external communication medium (IRC, upstream mailing list, etc). This is very important to make sure that we are not blocking anybody outside the Red Hat to join us and contribute to the projects or ideas we work on. We also want to make sure that people working in our company are no more special than other contributors.&lt;/p&gt;
&lt;h2&gt;Improvement&lt;/h2&gt;
&lt;p&gt;We&apos;re pretty happy with our set-up right now, and the team runs pretty smoothly since a few months. We&apos;re still trying to improve, and having a general sense of trust among team members make sure we can openly speak about whatever problem we might have.&lt;/p&gt;
&lt;p&gt;Feel free to share your feedback and own experience of running your own teams in the comment section.&lt;/p&gt;
</content:encoded><category>open-source</category><category>career</category></item><item><title>The bad practice in FOSS projects management</title><link>https://julien.danjou.info/blog/foss-projects-management-bad-practice/</link><guid isPermaLink="true">https://julien.danjou.info/blog/foss-projects-management-bad-practice/</guid><description>During the OpenStack summit a few weeks ago, I had the chance to talk to some people about my experience on running open source projects. It turns out that after hanging out in communities and contrib</description><pubDate>Thu, 09 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;During the OpenStack summit a few weeks ago, I had the chance to talk to some people about my experience on running open source projects. It turns out that after hanging out in communities and contributing to many projects for years, I may be able to provide some hindsight and an external eye to many of those who are new to it.&lt;/p&gt;
&lt;p&gt;There are plenty of resource explaining how to run an open source projects out there. Today, I would like to take a different angle and emphasize what you should not &lt;em&gt;socially&lt;/em&gt; do in your projects. This list comes from various open source projects I encountered these past years. I&apos;m going to go through some of the bad practice I&apos;ve spotted, in a random order, illustrated by some concrete example.&lt;/p&gt;
&lt;h2&gt;Seeing contributors as an annoyance&lt;/h2&gt;
&lt;p&gt;When software developers and maintainers are busy, there&apos;s one thing they don&apos;t need: more work. To many people, the instinctive reactions to external contribution is: damn, more work. And actually, it is.&lt;/p&gt;
&lt;p&gt;Therefore, some maintainers tend to avoid that surplus of work: they state they don&apos;t want contributions, or make contributors feel un-welcomed. This can take a lot of different forms, from ignoring them to being unpleasant. It indeed avoids the immediate need to deal with the work that has been added on the maintainer shoulders.&lt;/p&gt;
&lt;p&gt;This is one of the biggest mistake and misconception of open source. If people are sending you more work, you should do whatever it takes to feel them welcome so they continue working with you. They might pretty soon become the guys doing the work you are doing instead of you. Think: retirement!&lt;/p&gt;
&lt;p&gt;Let&apos;s take a look at my friend Gordon, who I saw starting as a Ceilometer contributor in 2013. He was doing great code reviews, but he was actually giving me more work by catching bugs in my patches and sending patches I had to review. Instead of being a bully so he would stop making me rework my code and reviews his patches, &lt;a href=&quot;http://lists.openstack.org/pipermail/openstack-dev/2013-May/008975.html&quot;&gt;I requested that we trust him even more by adding him as a core reviewer&lt;/a&gt;. time contribution.&lt;/p&gt;
&lt;p&gt;And if they don&apos;t do this one-time contribution, they won&apos;t make it two. They won&apos;t make any. Those projects may have just lost their new maintainers.&lt;/p&gt;
&lt;h2&gt;Letting people only do the grunt work&lt;/h2&gt;
&lt;p&gt;When new contributors arrive and want to contribute to a particular project, they may have very different motivation. Some of them are users, but some of them are just people looking to see how it is to contribute. Getting the thrill of contribution, as an exercise, or as a willingness to learn and start contributing back to the ecosystem they use.&lt;/p&gt;
&lt;p&gt;The usual response from maintainers is to push people into doing grunt work. That means doing jobs that have no interest, little value, and probably no direct impact on the project.&lt;/p&gt;
&lt;p&gt;Some people actually have no problem with it, some have. Some will feel offended to do low impact work, and some will love it as soon as you give them some sort of acknowledgment. Be aware of it, and be sure to high-five people doing it. That&apos;s the only way to keep them around.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/computer-coding.jpg&quot; alt=&quot;computer-coding&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Not valorizing small contributions&lt;/h2&gt;
&lt;p&gt;When the first patch that comes in from a new contributor is a typo fix, what developers think? That they don&apos;t care, that you&apos;re wasting their precious time with your small contribution. And nobody cares about bad English in the documentation, don&apos;t they?&lt;/p&gt;
&lt;p&gt;This is wrong. See my first contributions to &lt;a href=&quot;https://github.com/home-assistant/home-assistant/commit/36cb12cd157b22bdc1fa28b700ca0fb751cca7a4&quot;&gt;home-assistant&lt;/a&gt; and &lt;a href=&quot;https://github.com/marijnh/Postmodern/commit/ec537f72393e1032853b78e0b7b4d0ff98632a02&quot;&gt;Postmodern&lt;/a&gt;: I fixed typos in the documentation.&lt;/p&gt;
&lt;p&gt;I contributed to &lt;a href=&quot;http://orgmode.org&quot;&gt;Org-mode&lt;/a&gt; for a few years. &lt;a href=&quot;http://repo.or.cz/org-mode.git/commit/a153f5a31dffbc6b78a8c5d8d027961abe585a38&quot;&gt;My first patch to orgmode&lt;/a&gt; was about fixing a docstring. Then, I sent 56 patches, fixing bugs and adding fancy features and also wrote a few external modules. To this day, I&apos;m still #16 in the top-committer list of Org-mode who contains 390 contributors. So not that would call a small contributor. I am sure the community is glad they did not despise my documentation fix.&lt;/p&gt;
&lt;h2&gt;Setting the bar too high for new comers&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/too-high.png&quot; alt=&quot;too-high&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When new contributors arrive, their knowledge about the project, its context, and the technologies can vary largely. One of the mistakes people often make is to ask contributors too complicated things that they cannot realize. That scares them away (many people are going to be shy or introvert) and they may just disappear, feeling too stupid to help.&lt;/p&gt;
&lt;p&gt;Before making any comment, you should not have any assumption about their knowledge. That should avoid such situation. You also should be very delicate when assessing their skills, as some people might feel vexed if you underestimate them too much.&lt;/p&gt;
&lt;p&gt;Once that level has been properly evaluated (a few exchanges should be enough), you need to mentor to the right degree your contributor so it can blossom. It takes time and experience to master this, and you may likely lose some of them in the process, but it&apos;s a path every maintainer has to take.&lt;/p&gt;
&lt;p&gt;Mentoring is a very important aspect of welcoming new contributors to your project, whatever it is. Pretty sure that applies nicely outside free software too.&lt;/p&gt;
&lt;h2&gt;Requiring people to make sacrifices with their lives&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/balance-stones.jpg&quot; alt=&quot;balance-stones&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is an aspect that varies a lot depending on the project and context, but it&apos;s really important. As a free software project, where most people will contribute on their own good will and sometimes spare time, you must not require them to make big sacrifices. This won&apos;t work.&lt;/p&gt;
&lt;p&gt;One of the worst implementation of that is requiring people to fly 5 000 kilometers to meet in some place to discuss the project. This puts contributors in an unfair position, based on their ability to leave their family for a week, take a plane/boat/car/train, rent an hotel, etc. This is not good, and everything should be avoided to &lt;em&gt;require&lt;/em&gt; people to do that in order to participate and feel included in the project and blend in your community. Don&apos;t get me wrong: that does not me social activities should be prohibited, on the contrary. Just avoid excluding people when you discuss any project.&lt;/p&gt;
&lt;p&gt;The same apply to any other form of discussion that makes it complicated for everyone to participate: IRC meetings (it&apos;s hard for some people to book an hour, especially depending on the timezone they live in), video-conference (especially using non-free software), etc.&lt;/p&gt;
&lt;p&gt;Everything that requires people to basically interact with the project in a synchronous manner for a period of time will put constraints on them that can make them uncomfortable.&lt;/p&gt;
&lt;p&gt;The best medium is still e-mail and asynchronous derivative (bug trackers, etc), as it is asynchronous and allow people to work at their own pace at their own time.&lt;/p&gt;
&lt;h2&gt;Not having an (implicit) CoC&lt;/h2&gt;
&lt;p&gt;Codes of conduct seem to be a trendy topic (and a touchy subject), as more and more communities are opening to a wilder audience than they used to be – which is great.&lt;/p&gt;
&lt;p&gt;Actually, all communities have a code of conduct, being written with black ink or being carried in everyone&apos;s mind unconsciously. Its form is a matter of community size and culture.&lt;/p&gt;
&lt;p&gt;Now, depending on the size of your community and how you feel comfortable applying it, you may want to have it composed in a document, e.g. like &lt;a href=&quot;https://www.debian.org/code_of_conduct&quot;&gt;Debian did&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Having a code of conduct does not transform your whole project community magically into a bunch of carebears following its guidance. But it provides an interesting point you can refer to as soon as you need. It can help throwing it at some people, to indicate that their behavior is not welcome in the project, and somehow, ease their potential exclusion – even if nobody wants to go that far generally, and that&apos;s it&apos;s rarely that useful.&lt;/p&gt;
&lt;p&gt;I don&apos;t think it&apos;s mandatory to have such a paper on smaller projects. But you have to keep in mind that the implicit code of conduct will be derived from &lt;em&gt;your&lt;/em&gt; own behavior. The way your leader(s) will communicate with others will set the entire social mood of the project. Do not underestimate that.&lt;/p&gt;
&lt;p&gt;When we started the &lt;a href=&quot;http://launchpad.net/ceilometer&quot;&gt;Ceilometer&lt;/a&gt; project, we implicitly followed the &lt;a href=&quot;https://www.openstack.org/legal/community-code-of-conduct/&quot;&gt;OpenStack Code of Conduct&lt;/a&gt; before it even existed, and probably set the bar a little higher. Being nice, welcoming and open-minded, we achieved a descent score of diversity, having up to 25% of our core team being women – way above the current ratio in OpenStack and most open source projects!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/friends-beach.jpg&quot; alt=&quot;friends-beach&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Making people not English native feeling like outsider&lt;/h2&gt;
&lt;p&gt;It&apos;s quite important to be aware of that the vast majority of free software project out there are using English as the common language of communication. It makes a lot of sense: it&apos;s a commonly spoken language, and it seems to do the job correctly.&lt;/p&gt;
&lt;p&gt;But a large part of the hackers out there are not native English speakers. Many are not able to speak English fluently. That means the rate at which they can communicate and run a conversation might be very low, which can make some people frustrated, especially native English speaker.&lt;/p&gt;
&lt;p&gt;The principal demonstration of this phenomena can be seen in social events (e.g. conferences) where people are debating. It can be very hard for people to explain their thoughts in English and to communicate properly at a decent rate, making the conversation and the transmission of ideas slow. The worst thing that one can see in this context is an English native speaker cutting people off and ignoring them, just because they are talking too slowly. I do understand that it can be frustrating, but the problem here is not the non-native English speaking, it&apos;s the medium being used that does not make your fellow on the same level of everyone by moving the conversation orally.&lt;/p&gt;
&lt;p&gt;To a lesser extent, the same applies to IRC meetings, which are by relatively synchronous. Completely asynchronous media do not have this flaw, that&apos;s why they should also be preferred in my opinion.&lt;/p&gt;
&lt;h2&gt;No vision, no delegation&lt;/h2&gt;
&lt;p&gt;Two of the most commonly encountered mistakes in open source projects: seeing the maintainer struggling with the growth of its project while having people trying to help.&lt;/p&gt;
&lt;p&gt;Indeed, when the flow of contributor starts coming in, adding new features, asking for feedback and directions, some maintainers choke and don&apos;t know how to respond. That ends up frustrating contributors, which therefore may simply vanish.&lt;/p&gt;
&lt;p&gt;It&apos;s important to have a vision for your project and communicate it. Make it clear for contributors what you want or don&apos;t want in your project. Transferring that in a clear (and non-aggressive, please) manner, is a good way of lowering the friction between contributors. They&apos;ll pretty soon know if they want to join your ship or not, and what to expect. So be a good captain.&lt;/p&gt;
&lt;p&gt;If they chose to work with you and contribute, you should start trusting them as soon as you can and delegate some of your responsibilities. This can be anything that you used to do: review patches targeting some subsystem, fixing bugs, writing docs. Let people own an entire part of the project so they feel responsible and care about it as much as you do. Doing the opposite, which is being a control-freak, is the best shot at staying alone with your open source software.&lt;/p&gt;
&lt;p&gt;And no project is going to grow and be successful that way.&lt;/p&gt;
&lt;p&gt;In 2009, when Uli Schlachter sent &lt;a href=&quot;http://article.gmane.org/gmane.comp.window-managers.awesome.devel/1746/match=uli+schlachter&quot;&gt;his first patch to awesome&lt;/a&gt;, this was more work for me. I had to review this patch, and I was already pretty busy designing the new versions of awesome and doing my day job! Uli&apos;s work was not perfect, and I had to fix it myself. More work. And what did I do? A few minutes later, I &lt;a href=&quot;http://article.gmane.org/gmane.comp.window-managers.awesome.devel/1747/match=uli+schlachter&quot;&gt;replied to him&lt;/a&gt; with a clear plan of what he should do and what I thought about his work.&lt;/p&gt;
&lt;p&gt;In response, Uli sent patches and improved the project. Do you know what Uli does today? He manages the awesome window manager project since 2010 instead of me. I managed to transmit my vision, delegate, and then retired!&lt;/p&gt;
&lt;h2&gt;Non-recognition of contributions&lt;/h2&gt;
&lt;p&gt;People contribute in different ways, and it&apos;s not always code. There&apos;s a lot of things around a free software projects: documentation, bug triage, user support, user experience design, communication, translation…&lt;/p&gt;
&lt;p&gt;It took a while for example to &lt;a href=&quot;http://debian.org&quot;&gt;Debian&lt;/a&gt; to recognize that their translators could have the status of Debian Developer. &lt;a href=&quot;http://openstack.org&quot;&gt;OpenStack&lt;/a&gt; is working in the same direction by trying to &lt;a href=&quot;https://wiki.openstack.org/wiki/NonATCRecognition&quot;&gt;recognize non-technical contributions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As soon as your project starts attributing badges to some people and creating classes of different members in the community, you should be very careful that you don&apos;t forget anyone. That&apos;s the easiest road to losing contributors along the road.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/heart-sign.jpg&quot; alt=&quot;heart-sign&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Don&apos;t forget to be thankful&lt;/h2&gt;
&lt;p&gt;This whole list has been inspired by many years of open source hacking and free software contributions. Everyone&apos;s experience and feeling might be different, or malpractice may have been seen under different forms. Let me know and if there&apos;s any other point that you encountered and blocked you to contribute to open source projects!&lt;/p&gt;
</content:encoded><category>open-source</category><category>openstack</category><category>awesome</category><category>debian</category><category>emacs</category></item></channel></rss>