<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Own Your Stack</title>
  <subtitle>a newsletter on infrastructure sovereignty</subtitle>
  <link rel="self" href="https://mathewstorm.ca/newsletter/feed.xml"/>
  <link rel="alternate" href="https://mathewstorm.ca/newsletter/"/>
  <id>https://mathewstorm.ca/newsletter/</id>
  <updated>2026-05-28T00:00:00Z</updated>
  <author><name>Mathew Storm</name></author>
  <entry>
    <title>A Forge of Your Own</title>
    <link rel="alternate" href="https://mathewstorm.ca/newsletter/a-forge-of-your-own.html"/>
    <id>https://mathewstorm.ca/newsletter/a-forge-of-your-own.html</id>
    <published>2026-05-28T00:00:00Z</published>
    <updated>2026-05-28T00:00:00Z</updated>
    <summary>GitHub is fracturing, but the more interesting story is what was never there in the first place. The forge layer has an open answer already running 320,000 projects in production.</summary>
    <content type="html">&#60;p&#62;GitHub is fracturing. Zig left in December, Ghostty in April, both citing reliability. Three outages in January took the platform offline for a combined 14 hours - millions of projects unable to handle their core workflow. The platform 100 million developers depend on is changing under their feet, and most haven&#39;t decided whether they&#39;re staying.&#60;/p&#62;
&#60;p&#62;The more interesting story isn&#39;t who&#39;s leaving. It&#39;s what was never there in the first place. Garage - the open s3 storage engine - lives on Deuxfleurs&#39; own forge. PeerTube lives on Framagit, a community-run GitLab instance maintained by the nonprofit Framasoft. Neither has ever run their development workflow on GitHub. Both ship serious software that runs in production at scale. There has always been a parallel ecosystem of open source infrastructure that exists outside of GitHub. That ecosystem is only growing larger.&#60;/p&#62;
&#60;p&#62;If you run an organization that ships code, this is the year that decision becomes yours. The good news is that the answer already exists, in production, hosting roughly 320,000 projects. I started running it last year.&#60;/p&#62;
&#60;p&#62;The forge is called Forgejo - open source, self-hosted, AGPL-licensed, maintained by Codeberg e.V., a nonprofit in Berlin. Codeberg runs the flagship public instance. I run two of my own: a private one for my company&#39;s internal source, and gitforge.ca, a public generalist forge anyone can sign up for. Both on Canadian VPS hardware I operate.&#60;/p&#62;
&#60;p&#62;&#60;img src=&#34;/media/images/newsletter/inline/codeberg-forgejo-website.png&#34; alt=&#34;The Forgejo project website on codeberg.org, showing the open-source, self-hosted forge.&#34; /&#62;&#60;/p&#62;
&#60;p&#62;&#60;em&#62;(Reference: codeberg.org/forgejo/website)&#60;/em&#62;&#60;/p&#62;
&#60;p&#62;On the day-to-day, Forgejo works the way GitHub works: pull requests, issues, wikis, releases, container registries, built-in CI through Forgejo Actions. SSH and HTTPS push. Custom domains. Migration tooling that pulls your repos, issues, PRs, and contributor history out of GitHub in one command. The difference is where the bytes live, and who controls them.&#60;/p&#62;
&#60;h2&#62;More Than Just Source Code&#60;/h2&#62;
&#60;p&#62;Canadian organizations have spent the last three years moving customer data onto Canadian servers. What didn&#39;t move is the place where the company itself is written down. The source code. The PR threads where decisions were debated. The issue history. The design documents. The architectural choices made and rejected. All of it sits on American servers, owned by Microsoft, governed by the US CLOUD Act.&#60;/p&#62;
&#60;p&#62;Source code isn&#39;t an asset like a server is an asset. A server can be swapped for an identical one in another data center; the code can&#39;t. The code is the only thing that documents how your business actually works - how it ships features, how it handles bugs, how it integrates with the rest of the world. Every other layer of your stack is replaceable infrastructure. The source code is the company.&#60;/p&#62;
&#60;p&#62;When you accept GitHub as the answer for the forge layer, you accept Microsoft as the keeper of the document of your company and the document of your career. For most of us, that keeper is now a division of Microsoft called CoreAI. The contract didn&#39;t have your signature on it.&#60;/p&#62;
&#60;h2&#62;Sovereignty Doesn&#39;t Stop at the Database&#60;/h2&#62;
&#60;p&#62;Moving source code to Canadian infrastructure is the invisible part of the same work. The same questions apply: where do the bytes live, who can read them, what jurisdiction governs them, how recoverable is the data if the host has a bad week. The answers should be the same too. They&#39;re rarely treated that way.&#60;/p&#62;
&#60;p&#62;A self-hosted Forgejo instance answers them. Where the bytes live: a Canadian VPS, by your choice. Who can read them: your developers and whoever you&#39;ve authorized, full stop. What jurisdiction governs them: whichever province the VPS is in. How recoverable: a daily backup to an S3 bucket somewhere is twenty lines of cron.&#60;/p&#62;
&#60;p&#62;The cost is real - someone has to run it. The cost is also bounded. Forgejo at small-to-medium scale runs on a VPS that costs less per month than a few GitHub Enterprise seats.&#60;/p&#62;
&#60;h2&#62;For Engineers: Your Career Isn&#39;t a Hosted Service&#60;/h2&#62;
&#60;p&#62;A GitHub profile is a rented résumé. The rent buys real value - visibility on a platform 100 million developers visit, a stable URL recruiters bookmark, a contribution graph that signals consistency to people who care about that signal. The rent also has terms. When the platform changes those terms - the API access, the AI training defaults, the search ranking of your repos - your résumé changes with it.&#60;/p&#62;
&#60;p&#62;The portfolio version is different. The portfolio version is a domain you own, a forge you control or contribute to, and a record of work that&#39;s verifiable wherever it lives. A PR merged to a project on Codeberg is a PR merged. A patch landed in a project hosted on the maintainer&#39;s own forge is a patch landed. Git is git. The signed commit you pushed to one forge looks identical on any forge that can read it.&#60;/p&#62;
&#60;p&#62;The case for portability isn&#39;t that GitHub is going away tomorrow. The case is that the document of who you are as an engineer should not be one platform&#39;s terms-of-service away from changing form. Hosted profiles get demoted in search results, throttled by API changes, auto-opted into uses of their data the profile owner didn&#39;t choose. Those things happen on a regular schedule, even to the most-celebrated accounts on the platform. They don&#39;t have to happen to yours - if yours doesn&#39;t have to live there.&#60;/p&#62;
&#60;p&#62;The portable version doesn&#39;t require leaving GitHub. It requires having a record of work that doesn&#39;t depend on GitHub. A domain at yourname.dev. A forge you contribute to that isn&#39;t owned by a trillion-dollar company. A signed commit identity that lets contributors verify your patches across forges. Pieces, not a profile.&#60;/p&#62;
&#60;h2&#62;What&#39;s Happening at GitHub&#60;/h2&#62;
&#60;p&#62;In August of last year, GitHub was folded into Microsoft&#39;s new CoreAI division. CEO Thomas Dohmke left the same month. The platform that 100 million developers depend on stopped being primarily a developer platform and started being primarily an AI strategy.&#60;/p&#62;
&#60;p&#62;The consequences have stacked up. April 2026 uptime came in at 86% - hours per day of blocked workflows across the platform. In February, GitHub confirmed approximately 3,800 internal repositories had been exfiltrated in a breach detected late last year. On April 24, the terms of service auto-opted every non-enterprise user into AI training on their Copilot interaction data - code, context, navigation patterns. Enterprise contracts were exempt; freelancers and small teams were not.&#60;/p&#62;
&#60;p&#62;The most public response has come from Mitchell Hashimoto - GitHub user 1299, joined February 2008, founder of HashiCorp, creator of Vagrant, Terraform, and Packer. For the month before his April 28 farewell post, he kept a journal marking an X next to every date a GitHub outage blocked his work. Almost every day got an X. On the day he published the post, GitHub Actions was down for two hours. He summarized:&#60;/p&#62;
&#60;blockquote&#62;
&#60;p&#62;I want to ship software, and it doesn&#39;t want me to ship software.&#60;/p&#62;
&#60;p&#62;— &#34;Ghostty Is Leaving GitHub&#34; by Mitchell Hashimoto&#60;/p&#62;
&#60;/blockquote&#62;
&#60;p&#62;When the engineer who built Terraform announces he can&#39;t use GitHub for serious work, it&#39;s a data point about where the platform&#39;s priorities have moved.&#60;/p&#62;
&#60;p&#62;The intermediate position in this conversation is GitLab - more open than GitHub, supports self-hosting, exposes more of its source. GitLab is also open-core, the structural shape we covered last issue with MinIO: a commercial company running an open-source project as marketing for a paid edition. Better than GitHub, not the same category as Forgejo.&#60;/p&#62;
&#60;h2&#62;The Open Answer Already Exists&#60;/h2&#62;
&#60;p&#62;In the first issue we covered Garage - the open-source object storage engine, maintained by the French collective Deuxfleurs, demonstrated in production at scale. The forge layer has the same arrangement, in a different country. Codeberg e.V., a registered nonprofit in Berlin, maintains Forgejo and runs the flagship public instance, which hosts roughly 320,000 projects. These two organizations use the same license, similar governance, and are the same kind of proof.&#60;/p&#62;
&#60;p&#62;The migration off GitHub is not a research project. The forge software exists. The hosting model is established. The migration tooling pulls your repositories, issues, pull requests, and contributor history out of GitHub in one command. The hard part isn&#39;t technical - it&#39;s the social-capital question, and that question has a workable answer too. You don&#39;t have to delete the GitHub mirror. You just have to stop treating it as the only place where your work is allowed to live.&#60;/p&#62;
&#60;p&#62;My company&#39;s source lives on an internal forge. My open source contributions span three forges. The graphs on each are smaller than the unified one I used to maintain on GitHub. The work hasn&#39;t slowed down, only the destination has changed.&#60;/p&#62;
&#60;aside class=&#34;spell-callout spell-callout--info&#34;&#62;
&#60;span class=&#34;spell-callout-icon&#34; aria-hidden=&#34;true&#34;&#62;ℹ️&#60;/span&#62;
&#60;div class=&#34;spell-callout-body&#34;&#62;
&#60;p&#62;Next issue: the CI/CD layer. Once the forge moves, the next question your team asks is where the workflows go. We&#39;ll cover Forgejo Actions, Woodpecker, Drone, and what each costs in complexity versus what each buys in independence.&#60;/p&#62;
&#60;/div&#62;
&#60;/aside&#62;
</content>
  </entry>
  <entry>
    <title>The Internet Wasn&#39;t Inevitable</title>
    <link rel="alternate" href="https://mathewstorm.ca/newsletter/the-internet-wasnt-inevitable.html"/>
    <id>https://mathewstorm.ca/newsletter/the-internet-wasnt-inevitable.html</id>
    <published>2026-05-14T00:00:00Z</published>
    <updated>2026-05-14T00:00:00Z</updated>
    <summary>Three layers of infrastructure had to fight to become open: Linux won, Django won, and now the storage layer is being decided.</summary>
    <content type="html">&#60;p&#62;In 1995, if you wanted to put a website on the internet, you would be forking over a lot of money in licensing fees for basic software like Operating Systems or Web Servers, and the company that sold them to you had final say over what you could do with them. The open internet you know today - the one where a teenager can spin up a server in a dorm room and reach a billion people - wasn&#39;t inevitable. It was the result of a specific bet that, at the time, almost everyone thought was foolish.&#60;/p&#62;
&#60;p&#62;The bet was Linux: that an operating system built and given away for free could outperform what trillion-dollar companies were selling. The bet won.&#60;/p&#62;
&#60;p&#62;If Microsoft or Sun had won the early infrastructure battle, the internet would not exist the way you know it. Not as a metaphor - as a literal statement about which servers would be allowed to talk to which clients, which protocols would be permitted, and which startups would have been licensed out of existence before they shipped. The fact that the modern web is mostly open is not a gift from the companies that owned most of it. It&#39;s the residue of a fight they lost.&#60;/p&#62;
&#60;h2&#62;Layer One: Linux&#60;/h2&#62;
&#60;p&#62;You probably don&#39;t think about Linux. That&#39;s how completely it won. It runs your phone if it&#39;s an Android. It runs the server that delivered this newsletter to you. It runs the routers between your laptop and that server, every one of the world&#39;s top 500 supercomputers, and the in-flight entertainment system on the plane you most recently flew. Infrastructure is most successful when you stop noticing it.&#60;/p&#62;
&#60;p&#62;&#60;img src=&#34;/media/images/newsletter/inline/linux-market-2025.png&#34; alt=&#34;Bar chart: the global Linux operating system market growing from $7.64 billion in 2024 to $18.73 billion in 2029, a 19.8% CAGR.&#34; /&#62;&#60;/p&#62;
&#60;p&#62;&#60;em&#62;(Reference: The Business Research Company)&#60;/em&#62;&#60;/p&#62;
&#60;p&#62;The completeness of the win is the part that&#39;s easy to forget. In 2001, Microsoft&#39;s CEO Steve Ballmer called Linux &#34;a cancer that attaches itself in an intellectual property sense to everything it touches.&#34; In 2014, the next Microsoft CEO stood on a stage and said &#34;Microsoft loves Linux.&#34; Today, the Microsoft Azure fleet runs more Linux instances than Windows ones. The company that fought hardest to keep the open layer from existing now makes most of its cloud revenue serving it.&#60;/p&#62;
&#60;p&#62;The reason it won is the reason it keeps winning whenever the same fight gets fought one layer up. Closed software has to be paid for, which means every line has to be justified to someone&#39;s quarterly numbers. Open software gets written by a coalition - sometimes hobbyists, more often paid engineers at companies that all depend on the same code and have decided cooperating on it is cheaper than each maintaining their own fork. Linux is maintained today by thousands of developers, the majority of them paid by companies like Red Hat, Google, Intel, and yes, Microsoft. The work is real work. The difference is that no single one of them owns it.&#60;/p&#62;
&#60;h2&#62;Layer Two: Django&#60;/h2&#62;
&#60;p&#62;The same fight got fought at the application layer in the late 2000s, and the same side won. The expensive answer was a Java EE application server from Oracle, IBM&#39;s WebSphere, or Microsoft&#39;s .NET stack - software you paid licensing fees for, deployed onto hardware you also paid for, and could not modify without violating your support contract. The free answer was Django, a Python web framework released in 2005 by two newspaper developers in Lawrence, Kansas, who needed to ship local news sites faster than their deadlines allowed. They gave it away, letting it get used and improved by the community.&#60;/p&#62;
&#60;p&#62;By 2012, Instagram was serving a hundred million users on Django. By 2019, it was serving a billion. The proprietary application servers that Oracle and IBM had spent decades selling to enterprise customers are still around, technically - you can still buy WebLogic if you want to - but no new company has started a serious project on one in years. The framework layer is open the same way the operating system layer is open: not because the closed vendors gave up the fight, but because the open option got so good that paying for the closed one stopped making sense.&#60;/p&#62;
&#60;p&#62;&#60;img src=&#34;/media/images/newsletter/inline/instagram-backend-stack.png&#34; alt=&#34;Diagram of Instagram&#38;#39;s backend tech stack: Nginx fronting Django and Celery, all backed by Cassandra, PostgreSQL, Memcache, and RabbitMQ.&#34; /&#62;&#60;/p&#62;
&#60;p&#62;&#60;em&#62;(Reference: Ollayor&#39;s Blog)&#60;/em&#62;&#60;/p&#62;
&#60;p&#62;Two layers down, both fought and won. The third one is where we are now - and the closed vendor this time is not Microsoft or Oracle. It&#39;s Amazon.&#60;/p&#62;
&#60;h2&#62;Layer Three: Where We Are Now&#60;/h2&#62;
&#60;p&#62;The closed answer is AWS S3, which is so deeply assumed as the default that &#34;S3&#34; has become a generic noun for object storage the way &#34;Kleenex&#34; is for tissues. It&#39;s a remarkable product. It&#39;s also a single American company holding the data of most of the internet, under American jurisdiction, at prices that change when the company decides they change, with a feature set that grows when the company decides it grows. For most of the past decade, the open answer was MinIO - until MinIO&#39;s company changed its license, gutted its open-source release, and effectively shut down the project in February 2026. Tens of thousands of organizations woke up to find that the open storage layer they&#39;d built on was no longer open.&#60;/p&#62;
&#60;p&#62;The answer that has been quietly waiting for that moment is Garage. It&#39;s an S3-compatible object storage engine, written in Rust, AGPL-licensed, designed from the start to run on heterogeneous hardware across multiple geographies - exactly the shape of infrastructure that small operators and sovereignty-conscious organizations actually have. It&#39;s built and maintained by Deuxfleurs, a French collective that uses Garage to host their own services. You can read every line of code that holds your data. If you find a bug, you can fix it - last week I submitted a one-line patch that was merged into the main branch within hours. The barrier to participating in the infrastructure you depend on is, for the first time at the storage layer, low enough to walk over.&#60;/p&#62;
&#60;p&#62;The MinIO failure is the right thing to study before betting on the next open option. MinIO was a VC-backed company that open-sourced its product to drive adoption, then changed the license when that adoption didn&#39;t convert to enough revenue to satisfy investors. That&#39;s the open-core trap, and it&#39;s specific to a particular structure: an open project owned by a single commercial entity whose board has fiduciary obligations to capture more of the value it creates.&#60;/p&#62;
&#60;h2&#62;The Pattern Itself&#60;/h2&#62;
&#60;p&#62;Garage is one specific answer, but the bigger answer is the pattern itself.&#60;/p&#62;
&#60;p&#62;Every layer of the modern internet became open because some group of people built the alternative before there was a customer base waiting for it, and ran it themselves long enough to prove it worked. Linux ran on hobbyist machines for years before it ran the stock exchange. Django ran a few local news sites before it ran Instagram. Garage runs Deuxfleurs and, increasingly, the small infrastructure projects that have been quietly choosing it over the American defaults. The third layer is being decided right now. The companies best positioned for the next decade will be the ones that picked the open option early - not because it was morally virtuous, but because they were unwilling to bet the most valuable thing they own on a vendor whose terms they cannot change.&#60;/p&#62;
&#60;p&#62;Linux took twenty years to become invisible. Django took fifteen to become inevitable. The storage layer is still negotiable.&#60;/p&#62;
&#60;aside class=&#34;spell-callout spell-callout--info&#34;&#62;
&#60;span class=&#34;spell-callout-icon&#34; aria-hidden=&#34;true&#34;&#62;ℹ️&#60;/span&#62;
&#60;div class=&#34;spell-callout-body&#34;&#62;
&#60;p&#62;This newsletter is about what owning your stack actually looks like in practice - one layer at a time. Next issue looks at the fracturing of GitHub: the rise of self-hosted forges, what it means for your contributions when they don&#39;t all live in one place, and how to keep a professional record that doesn&#39;t depend on Microsoft maintaining your résumé for you.&#60;/p&#62;
&#60;/div&#62;
&#60;/aside&#62;
&#60;p&#62;Welcome.&#60;/p&#62;
</content>
  </entry>
</feed>