<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>README — open-source</title>
<link>https://readme.news/tags/open-source/</link>
<atom:link href="https://readme.news/tags/open-source/feed.xml" rel="self" type="application/rss+xml"/>
<description>README pieces tagged open-source.</description>
<language>en-us</language>
<lastBuildDate>Thu, 01 Oct 2026 13:20:31 +0000</lastBuildDate>
<item><title>The unreasonable effectiveness of a changelog</title><link>https://readme.news/the-unreasonable-effectiveness-of-a-changelog/</link><guid isPermaLink="true">https://readme.news/the-unreasonable-effectiveness-of-a-changelog/</guid><pubDate>Wed, 22 Jul 2026 09:00:00 +0000</pubDate><description>A file that takes ten minutes per release and answers most of the questions your users would otherwise ask you.</description><content:encoded><![CDATA[<p>Most projects do not have a changelog. Most projects have a commit log and a release page auto-generated from pull request titles, which is not the same thing and does not serve the same purpose.</p>
<p>A real changelog is a small amount of work with an outsized return.</p>
<h2 id="what-it-is-for">what it is for<a class="anchor" href="#what-it-is-for" aria-label="link to this section">#</a></h2>
<p><strong>Deciding whether to upgrade.</strong> The single most common reason someone reads a changelog. They are on version 3.2, version 3.7 exists, and they want to know whether it is worth the risk.</p>
<p><strong>Knowing what will break.</strong> The most important information you can provide, and the thing auto-generated release notes are worst at.</p>
<p><strong>Debugging.</strong> "This started failing after we upgraded" — a good changelog turns that into "here is the change that caused it" in thirty seconds.</p>
<p><strong>Finding out what exists.</strong> People discover features by reading changelogs. This is a real and underrated distribution channel for your own work.</p>
<h2 id="why-generated-release-notes-are-not-enough">why generated release notes are not enough<a class="anchor" href="#why-generated-release-notes-are-not-enough" aria-label="link to this section">#</a></h2>
<p>A list of merged pull request titles has three problems.</p>
<p><strong>It is written for the wrong audience.</strong> "Refactor connection handling" means something to the maintainer and nothing to the user. What changed <em>for them</em>?</p>
<p><strong>It has no hierarchy.</strong> A breaking change and a typo fix appear as sibling bullets of equal weight.</p>
<p><strong>It has no migration guidance.</strong> "Remove deprecated <code>parse()</code> method" tells you something broke. It does not tell you what to do about it.</p>
<h2 id="the-format">the format<a class="anchor" href="#the-format" aria-label="link to this section">#</a></h2>
<p>Keep a Changelog is the established convention and it is good. The structure:</p>
<div class="code"><span class="code-lang">markdown</span><pre><code class="lang-markdown">## [4.2.0] - 2026-07-22

### Breaking
- `Client.connect()` no longer accepts a positional timeout.
  Pass `timeout=` as a keyword.
      # before
      client.connect(host, 30)
      # after
      client.connect(host, timeout=30)

### Added
- `Client.ping()` for health checks without a full round trip (#412)
- Support for Unix domain sockets via `unix://` URLs (#398)

### Fixed
- Connections leaked when the handshake timed out (#405).
  If you saw file descriptor exhaustion under load, this was it.

### Deprecated
- `Client.legacy_mode` — will be removed in 5.0. Use `compatibility=`.

### Security
- Fixed a case where credentials could appear in debug logs (GHSA-xxxx-xxxx).
  Affects 4.0.0–4.1.3. Rotate credentials if debug logging was enabled.</code></pre></div>
<h2 id="the-rules-that-make-it-useful">the rules that make it useful<a class="anchor" href="#the-rules-that-make-it-useful" aria-label="link to this section">#</a></h2>
<p><strong>Breaking changes first, always.</strong> That is what people are scanning for. Do not bury them under twelve feature bullets.</p>
<p><strong>Include the migration.</strong> A breaking change without "do this instead" makes the reader open your source code. Two lines of before-and-after saves everyone time.</p>
<p><strong>Describe the user-visible effect, not the implementation.</strong> Not "refactored the retry logic." Rather: "<a class="xref" href="/retries-a-complete-guide-to-not-making-it-worse/" title="Retries: a complete guide to not making it worse">retries</a> now use exponential backoff with jitter; if you relied on the previous fixed 1-second interval, set <code>retry_delay=1.0</code>."</p>
<p><strong>Say who is affected.</strong> "If you use X, this changes for you. Otherwise nothing changes." Most readers can then stop reading, which is a service.</p>
<p><strong>Link to the issue or pull request</strong> for anyone who wants detail. The changelog is a summary, not a substitute.</p>
<p><strong>Date every release</strong>, in ISO format. Version numbers alone do not tell you whether you are two months or three years behind.</p>
<p><strong>Write it as you go</strong>, not at release time. An <code>Unreleased</code> section at the top that each pull request adds to. Reconstructing a changelog from git history at release time is miserable and it is why changelogs get skipped.</p>
<h2 id="the-security-section-specifically">the security section specifically<a class="anchor" href="#the-security-section-specifically" aria-label="link to this section">#</a></h2>
<p>If you fix a security issue, say so, with:</p>
<ul><li>Which versions are affected.</li><li>What the impact is.</li><li>Whether any action beyond upgrading is required.</li></ul>
<p>That last one is the part that gets omitted and it is critical. "Upgrade to 4.2.0" is insufficient if credentials may have been exposed — the user also needs to rotate them, and they will not know unless you say so.</p>
<h2 id="for-internal-projects">for internal projects<a class="anchor" href="#for-internal-projects" aria-label="link to this section">#</a></h2>
<p>The same file works for internal services, and the audience is your future self and the person who takes over the service.</p>
<p>The most valuable internal changelog entries are the ones that record a decision:</p>
<div class="code"><span class="code-lang">markdown</span><pre><code class="lang-markdown">## 2026-07-14
- Switched from polling to webhooks for order status. Polling was
  costing ~40 requests/second against the vendor's rate limit and
  we were getting throttled during peaks.</code></pre></div>
<p>Six months later, when someone asks why there is webhook infrastructure, the answer is in one place.</p>
<h2 id="the-return-on-investment">the return on investment<a class="anchor" href="#the-return-on-investment" aria-label="link to this section">#</a></h2>
<p>Ten minutes per release. In exchange:</p>
<ul><li>Fewer support questions.</li><li>Faster upgrades by your users, which means fewer people on old versions you have to support.</li><li>Fewer surprised users after a breaking change.</li><li>A record you can search when debugging.</li></ul>
<p>There are not many ten-minute tasks with that profile.</p>]]></content:encoded></item><item><title>Licenses: a practical guide for people who ship</title><link>https://readme.news/licenses-a-practical-guide-for-people-who-ship/</link><guid isPermaLink="true">https://readme.news/licenses-a-practical-guide-for-people-who-ship/</guid><pubDate>Wed, 17 Jun 2026 09:00:00 +0000</pubDate><description>Not legal advice. A working engineer&#x27;s map of what the common licenses actually require you to do.</description><content:encoded><![CDATA[<p>Most engineers can name three licenses and could not tell you what any of them require. That is a problem when your product ships hundreds of dependencies and somebody in legal eventually asks.</p>
<p>This is not legal advice. It is the working map.</p>
<h2 id="the-permissive-family">the permissive family<a class="anchor" href="#the-permissive-family" aria-label="link to this section">#</a></h2>
<p><strong>MIT, BSD (2- and 3-clause), ISC, Apache 2.0.</strong></p>
<p><strong>What you must do:</strong> include the license text and the copyright notice with your distribution. That is essentially it.</p>
<p><strong>What you may do:</strong> everything. Use it commercially, modify it, ship it in a closed product, sublicense it.</p>
<p><strong>Apache 2.0 additionally:</strong> grants patent rights explicitly, and terminates those rights if you sue a contributor for patent infringement over the software. It also requires you to state significant changes you made.</p>
<p>That patent grant is why Apache 2.0 is preferred over MIT by legal departments at larger companies. MIT is silent on patents, which is not the same as safe.</p>
<p><strong>In practice:</strong> include a <code>NOTICES</code> file or an attribution page listing your dependencies and their license texts. Generate it from your dependency tree. This is the entire compliance obligation for the permissive family and most products do not do it.</p>
<h2 id="the-weak-copyleft-family">the weak copyleft family<a class="anchor" href="#the-weak-copyleft-family" aria-label="link to this section">#</a></h2>
<p><strong>LGPL, MPL 2.0, EPL.</strong></p>
<p><strong>The rule:</strong> modifications to the licensed files must be released under the same license. Your own code that merely uses the library does not have to be.</p>
<p><strong>MPL 2.0 is file-based</strong>, which is the cleanest formulation: if you modify a file that came under MPL, that file stays MPL. Everything else is yours.</p>
<p><strong>LGPL is linking-based</strong> and the details matter. Dynamic linking is generally considered fine — the user must be able to replace the library. Static linking requires either providing object files so the user can relink, or releasing under compatible terms.</p>
<p>For most modern language ecosystems, "dynamic linking" does not map cleanly onto how code is actually distributed, and this is a genuine gray area. If you statically link LGPL code into a distributed binary, that is worth a real legal conversation.</p>
<p><strong>In practice:</strong> MPL and EPL are unproblematic for most commercial use. LGPL is usually fine and deserves attention if you are shipping a compiled binary rather than running a service.</p>
<h2 id="the-strong-copyleft-family">the strong copyleft family<a class="anchor" href="#the-strong-copyleft-family" aria-label="link to this section">#</a></h2>
<p><strong>GPL v2, GPL v3.</strong></p>
<p><strong>The rule:</strong> if you distribute a work based on GPL code, the whole work must be under the GPL, and you must provide source.</p>
<p><strong>The key question is what "distribute" means.</strong> Running GPL software on your server and letting users access it over a network is not distribution. This is why a very large amount of GPL software runs inside commercial SaaS products without obligation — Linux being the obvious example.</p>
<p><strong>GPL v3 additionally:</strong> anti-tivoization (you must let users install modified versions on hardware you ship), and explicit patent provisions.</p>
<p><strong>In practice:</strong> GPL dependencies in a hosted service are usually fine. GPL dependencies in software you ship to customers make your software GPL, which is usually not what you intended.</p>
<p>Know which of your dependencies are GPL. Most people do not.</p>
<h2 id="the-network-copyleft-family">the network copyleft family<a class="anchor" href="#the-network-copyleft-family" aria-label="link to this section">#</a></h2>
<p><strong>AGPL v3.</strong></p>
<p><strong>The rule:</strong> GPL, plus — if users interact with the software over a network, they must be able to get the source, including your modifications.</p>
<p>This closes the "SaaS loophole" deliberately. It is why many companies have a blanket policy prohibiting AGPL dependencies: the obligation is triggered by normal SaaS operation, and determining exactly how much of your system counts as "the software" is a question nobody wants to litigate.</p>
<p><strong>In practice:</strong> if your company has a license policy, AGPL is almost certainly on the prohibited list. Check before you add the dependency, not after.</p>
<h2 id="the-source-available-family">the source-available family<a class="anchor" href="#the-source-available-family" aria-label="link to this section">#</a></h2>
<p><strong>BUSL, SSPL, Elastic License, various "fair source" licenses.</strong></p>
<p><strong>These are not open source licenses.</strong> They restrict commercial use, usually prohibiting offering the software as a service that competes with the licensor.</p>
<p>They exist because hyperscalers built managed services on open source projects without contributing back, and the projects had no recourse. That grievance is real.</p>
<p><strong>In practice:</strong> read the actual text, every time. They differ substantially. Many convert to an open source license after a delay — BUSL typically becomes Apache 2.0 after four years — which means the version you are using today may become permissive before you care.</p>
<p>The specific question to answer: does your use case compete with the licensor's commercial offering? Usually the answer is obviously no and you are fine.</p>
<h2 id="the-practical-program">the practical program<a class="anchor" href="#the-practical-program" aria-label="link to this section">#</a></h2>
<p><strong>1. Generate an SBOM in CI.</strong> Every build, listing every dependency and its license. Tooling for this is mature in every major ecosystem.</p>
<p><strong>2. Fail the build on prohibited licenses.</strong> Have a policy — usually: permissive fine, weak copyleft fine, GPL depends on whether you distribute, AGPL and source-available require review.</p>
<p><strong>3. Generate the attribution file automatically.</strong> This is the actual compliance obligation for the licenses you are most likely to use, and generating it is a build step, not a project.</p>
<p><strong>4. Check when you add, not when you ship.</strong> The cost of removing a dependency after it is embedded is enormous. The cost of checking at <code>npm add</code> time is zero.</p>
<h2 id="the-thing-that-trips-people-up">the thing that trips people up<a class="anchor" href="#the-thing-that-trips-people-up" aria-label="link to this section">#</a></h2>
<p><strong>License compatibility is not transitive intuition.</strong> You can use GPL code in a GPL project. You cannot use GPL code in an Apache-licensed library that others will embed in proprietary software — you have made your library effectively GPL, and your users will find out later.</p>
<p>If you publish a library, its license must be compatible with every dependency it pulls in. Check that specifically, because it is the mistake that is expensive to discover after adoption.</p>]]></content:encoded></item><item><title>Open source funding: five models, honestly compared</title><link>https://readme.news/open-source-funding-five-models-honestly-compared/</link><guid isPermaLink="true">https://readme.news/open-source-funding-five-models-honestly-compared/</guid><pubDate>Wed, 20 May 2026 09:00:00 +0000</pubDate><description>Donations, foundations, dual licensing, open core, and hosted service. Each works for a specific shape of project.</description><content:encoded><![CDATA[<p>The open source sustainability problem is not that the models do not exist. It is that projects pick a model that does not fit their shape, and then conclude that funding open source is impossible.</p>
<p>Five models. Each works. Each works for a specific kind of project.</p>
<h2 id="1-donations-and-sponsorship">1. donations and sponsorship<a class="anchor" href="#1-donations-and-sponsorship" aria-label="link to this section">#</a></h2>
<p><strong>Works for:</strong> developer-facing tools with a large individual user base and an identifiable maintainer.</p>
<p><strong>Does not work for:</strong> libraries deep in a dependency tree, infrastructure nobody knows they use, anything without a personality attached.</p>
<p>The honest arithmetic: donation income correlates with visibility, not with importance. A well-marketed CLI tool with a charismatic maintainer will out-earn a critical cryptography library by a large multiple.</p>
<p>The corporate sponsorship version works better than individual donations and requires the maintainer to do sales, which most maintainers are bad at and hate.</p>
<h2 id="2-foundation-governance">2. foundation governance<a class="anchor" href="#2-foundation-governance" aria-label="link to this section">#</a></h2>
<p><strong>Works for:</strong> infrastructure that multiple large companies depend on and that none of them wants a competitor to control.</p>
<p><strong>Does not work for:</strong> small projects. The overhead — governance, legal, trademark, process — is substantial, and a foundation with one project and no funded staff is just more paperwork.</p>
<p>The real value of a foundation is not money. It is neutrality: it makes a project safe for competitors to invest in together, which unlocks contribution that would not otherwise happen.</p>
<h2 id="3-dual-licensing">3. dual licensing<a class="anchor" href="#3-dual-licensing" aria-label="link to this section">#</a></h2>
<p><strong>Works for:</strong> libraries embedded in other products, where the copyleft obligation is genuinely inconvenient for commercial users.</p>
<p>Ship under a strong copyleft license, sell a commercial license to companies that cannot comply.</p>
<p><strong>Does not work for:</strong> anything permissively licensed already (no leverage), anything not embedded (the obligation does not bite), or anything with a permissive competitor of similar quality.</p>
<p>Effective when it fits, and it produces a genuine tension: the license that makes the business work is the one that limits adoption.</p>
<h2 id="4-open-core">4. open core<a class="anchor" href="#4-open-core" aria-label="link to this section">#</a></h2>
<p><strong>Works for:</strong> products where enterprise features are genuinely separable from the core — SSO, audit logs, RBAC, compliance reporting, multi-tenancy.</p>
<p><strong>Does not work for:</strong> libraries. There is no enterprise tier of a date-parsing library.</p>
<p>The failure mode is well documented: the line between core and commercial moves toward commercial over time, under revenue pressure, and the community that built your adoption watches features they use get moved behind the paywall.</p>
<p>If you do this, <strong>write down the line publicly, early, and honor it.</strong> "Anything that a single developer needs is open; anything that exists because you have a compliance department is commercial" is a defensible line. Moving it later costs more trust than the revenue is worth.</p>
<h2 id="5-hosted-service">5. hosted service<a class="anchor" href="#5-hosted-service" aria-label="link to this section">#</a></h2>
<p><strong>Works for:</strong> anything that is annoying to operate. Databases, search, <a class="xref" href="/the-queues-you-did-not-know-you-had/" title="The queues you did not know you had">queues</a>, observability, CI.</p>
<p>Give away the software, sell the operation of it. This is the strongest model when it fits, because the value you sell — not having to run it — is real and continuous, and it does not require withholding anything.</p>
<p><strong>The risk:</strong> a hyperscaler offers a managed version of your software, at scale, without contributing back. This has happened repeatedly and it is why the source- available licenses exist.</p>
<p>Those licenses solve the problem and cost you the open source designation, which costs you contributors, ecosystem inclusion, and some corporate adoption. It is a real trade with real costs on both sides, and the projects that made it mostly survived, which is the empirical answer to whether it works.</p>
<h2 id="what-actually-kills-projects">what actually kills projects<a class="anchor" href="#what-actually-kills-projects" aria-label="link to this section">#</a></h2>
<p>Not the absence of a model. Three other things:</p>
<p><strong>Solo maintainer burnout.</strong> One person, unpaid, receiving an unbounded stream of issues, feature requests, and entitled demands. Funding helps and does not fix it — the fix is more maintainers, which is a governance problem.</p>
<p><strong>Success without support.</strong> A project that becomes critical infrastructure while its maintainer count stays at one. This is the most dangerous state and it is extremely common.</p>
<p><strong>Corporate abandonment.</strong> A company open-sources a project, staffs it with employees, then reorganizes. The external community was never built because it was never needed. Now nobody knows the code.</p>
<h2 id="what-companies-should-do">what companies should do<a class="anchor" href="#what-companies-should-do" aria-label="link to this section">#</a></h2>
<p>If your business depends on open source — and it does — the highest-leverage actions, in order:</p>
<ol><li><strong>Pay maintainers of your critical dependencies.</strong> Directly. Small amounts to many projects beat large amounts to a few.</li><li><strong>Assign employee time to upstream contribution.</strong> More valuable than money and much rarer.</li><li><strong>Do not send compliance questionnaires to volunteers.</strong> They owe you nothing and the license says so.</li><li><strong>When you fix a bug in a vendored dependency, upstream it.</strong> The number of companies carrying private patches for bugs everyone has is enormous.</li></ol>
<p>None of that requires a strategy document. It requires someone with budget deciding it matters, which is the actual bottleneck.</p>]]></content:encoded></item><item><title>The Cyber Resilience Act and the unpaid maintainer</title><link>https://readme.news/the-cyber-resilience-act-and-the-unpaid-maintainer/</link><guid isPermaLink="true">https://readme.news/the-cyber-resilience-act-and-the-unpaid-maintainer/</guid><pubDate>Mon, 20 Apr 2026 09:00:00 +0000</pubDate><description>Europe is about to regulate software security across the whole product lifecycle. Open source is mostly carved out, and mostly is doing a lot of work.</description><content:encoded><![CDATA[<p>The EU Cyber Resilience Act imposes security requirements on products with digital elements sold in the EU. Reporting obligations for actively exploited vulnerabilities begin this September; the main obligations follow at the end of 2027.</p>
<p>If you sell software into Europe, this is a real compliance project. If you maintain open source, the situation is more nuanced than either the panic or the reassurance suggests.</p>
<h2 id="what-it-requires">what it requires<a class="anchor" href="#what-it-requires" aria-label="link to this section">#</a></h2>
<p>For products with digital elements — which is essentially any software or connected device sold commercially:</p>
<ul><li><strong>Security by design and by default.</strong> Documented, with a risk assessment.</li><li><strong>No known exploitable vulnerabilities at time of release.</strong></li><li><strong>Security updates for a support period</strong>, minimum five years or the expected product lifetime.</li><li><strong>A software bill of materials</strong>, maintained.</li><li><strong>Vulnerability disclosure process</strong>, published.</li><li><strong>Reporting of actively exploited vulnerabilities</strong> to the authorities within 24 hours of becoming aware, with follow-ups.</li><li><strong>CE marking</strong> and conformity assessment, the depth of which scales with product criticality.</li></ul>
<p>That last set of obligations is the near-term one and the 24-hour clock is aggressive.</p>
<h2 id="the-open-source-position">the open source position<a class="anchor" href="#the-open-source-position" aria-label="link to this section">#</a></h2>
<p>The Act was substantially amended after the initial draft caused an outcry from the open source community. The current position, roughly:</p>
<p><strong>Not covered:</strong> software developed and supplied outside the course of a commercial activity. A maintainer publishing a library for free is not a manufacturer.</p>
<p><strong>Covered:</strong> anyone who integrates that library into a commercial product. The obligation lands on the person selling the product, not on the upstream.</p>
<p><strong>Partially covered:</strong> a new category of "open source software steward" — foundations and organizations that support the development of open source used in commercial products. Stewards have lighter-touch obligations around security policy and cooperation with authorities, not full manufacturer duties.</p>
<p>That structure is basically correct. The obligation should sit with the entity taking money for the product.</p>
<h2 id="the-part-that-will-still-hurt">the part that will still hurt<a class="anchor" href="#the-part-that-will-still-hurt" aria-label="link to this section">#</a></h2>
<p>The obligation may not flow upstream legally, and it will flow upstream socially.</p>
<p>A company that must produce an SBOM, attest to no known exploitable vulnerabilities, and report incidents within 24 hours will start asking questions of its dependencies. Those questions arrive as GitHub issues addressed to unpaid maintainers:</p>
<ul><li>"Can you provide an SBOM for this library?"</li><li>"What is your vulnerability disclosure policy?"</li><li>"Can you commit to a support period?"</li><li>"Please fill out this 40-question security questionnaire."</li></ul>
<p>None of that is legally required of the maintainer. All of it will land in their inbox, and the maintainer of a two-thousand-line utility with a hundred million downloads is going to receive a lot of it.</p>
<p>The predictable outcome: some maintainers will comply out of conscientiousness and burn out. Some will add a line to their README saying they provide no warranties and will not respond to compliance requests, which is entirely their right. Some will archive the project.</p>
<h2 id="what-companies-should-actually-do">what companies should actually do<a class="anchor" href="#what-companies-should-actually-do" aria-label="link to this section">#</a></h2>
<p>If you are the one with the obligation:</p>
<p><strong>Do not send questionnaires upstream.</strong> Answer the questions yourself, about your product, using the information that is publicly available. That is what the regulation asks of you.</p>
<p><strong>Generate the SBOM from your build</strong>, not by asking your dependencies. Tooling for this is mature.</p>
<p><strong>Fund the projects you depend on.</strong> This is the actually effective response, it is cheap relative to compliance costs, and it is the only thing that improves the underlying situation. A maintainer with funding can respond to security reports; one without cannot.</p>
<p><strong>Have a vendored fallback plan</strong> for critical dependencies with a single maintainer. If they archive the project, what do you do? Answer that before you need to.</p>
<h2 id="the-honest-assessment">the honest assessment<a class="anchor" href="#the-honest-assessment" aria-label="link to this section">#</a></h2>
<p>The Act is trying to fix a real problem: consumer devices ship with known vulnerabilities and are never patched, and there has been no consequence for that. The obligations on manufacturers are reasonable and overdue.</p>
<p>The risk is that compliance cost lands disproportionately on small companies and that pressure lands informally on volunteers who owe nobody anything.</p>
<p>The mitigation for both is the same and it is boring: fund maintenance, generate your own compliance artifacts, and do not treat your dependencies' authors as your vendors. They are not, they never agreed to be, and the license says so explicitly.</p>]]></content:encoded></item><item><title>Gemini CLI puts a free agent in your terminal</title><link>https://readme.news/gemini-cli-puts-a-free-agent-in-your-terminal/</link><guid isPermaLink="true">https://readme.news/gemini-cli-puts-a-free-agent-in-your-terminal/</guid><pubDate>Thu, 26 Jun 2025 09:00:00 +0000</pubDate><description>Apache 2.0, generous free limits, and a very direct shot at the terminal-agent category.</description><content:encoded><![CDATA[<p>Google released Gemini CLI: an open-source terminal agent under Apache 2.0, with a free tier that includes a large daily request allowance and access to <a class="xref" href="/gemini-25-pro-is-googles-best-model-and-it-shows/" title="Gemini 2.5 Pro is Google&#x27;s best model and it shows">Gemini 2.5 Pro</a> with its million-token context.</p>
<p>The free tier is the story. This is a competitive move priced at zero.</p>
<h2 id="what-it-does">what it does<a class="anchor" href="#what-it-does" aria-label="link to this section">#</a></h2>
<p>The familiar shape: a terminal agent with filesystem access, shell execution, git awareness, and web search. It reads a <code>GEMINI.md</code> for project-specific instructions. It supports MCP servers for extending its tool set.</p>
<div class="code"><span class="code-lang">bash</span><pre><code class="lang-bash">npx https://github.com/google-gemini/gemini-cli</code></pre></div>
<p>Sign in with a Google account and you are running. No API key, no billing setup, no credit card.</p>
<h2 id="why-free">why free<a class="anchor" href="#why-free" aria-label="link to this section">#</a></h2>
<p>Two reasons, both strategic.</p>
<p><strong>TPU economics.</strong> Google serves its own models on its own silicon in its own datacenters. The marginal cost of inference is genuinely lower for them than for anyone renting Nvidia capacity, and they can afford a free tier that competitors cannot match without eating a loss.</p>
<p><strong>Developer mindshare is a leading indicator.</strong> The developers who adopt a tool today choose the platform their company standardizes on in two years. Google has lost that fight repeatedly — to AWS in cloud, to OpenAI in AI APIs — and this is a deliberate attempt to not lose it again.</p>
<h2 id="the-open-source-part">the open source part<a class="anchor" href="#the-open-source-part" aria-label="link to this section">#</a></h2>
<p>Apache 2.0 on the whole client. That means you can fork it, audit it, run it against a different model endpoint if you rewire it, and inspect exactly what it sends where.</p>
<p>That last one matters more than people acknowledge. A terminal agent has filesystem and shell access. "What does this thing actually transmit" is a question a security team will ask, and "here is the source" is a much better answer than a data processing addendum.</p>
<p>I expect the open-source-ness to be adopted as table stakes. It is very hard to argue for a closed terminal agent when a competitive one is Apache 2.0.</p>
<h2 id="the-current-state-of-the-category">the current state of the category<a class="anchor" href="#the-current-state-of-the-category" aria-label="link to this section">#</a></h2>
<p>By my count there are now four credible terminal-based coding agents from major vendors, plus several from startups, plus a healthy open-source contingent. All shipped within about six months.</p>
<p>They are converging fast on the same feature set: filesystem tools, shell, project instruction files, MCP support, permission prompts, git integration. The differences that remain:</p>
<ul><li><strong>Model quality on long-horizon tasks</strong>, which is the real one.</li><li><strong>Context handling</strong> — how they decide what to read and when to compact.</li><li><strong>Permission ergonomics</strong> — how annoying the safety prompts are, which sounds trivial and determines whether people turn them off.</li><li><strong>Price</strong>, where Google just set an aggressive anchor.</li></ul>
<h2 id="the-practical-advice">the practical advice<a class="anchor" href="#the-practical-advice" aria-label="link to this section">#</a></h2>
<p>Try more than one on the same task. They differ more in practice than the feature lists suggest, and the differences show up on tasks that take twenty minutes, not on tasks that take two.</p>
<p>And whichever you use: sandbox it. Container, VM, or at minimum a dedicated user account without your production credentials in its environment. The tooling is good. The <a class="xref" href="/boring-technology-revisited/" title="Boring technology, revisited">failure modes</a> are still real, and "the agent ran a command I did not read carefully" is a bad way to learn that.</p>]]></content:encoded></item>
</channel>
</rss>
