So, I’ve finally archived govaluate, along with three other dormant repos that I’ll never touch.
John Carmack had a quote on a recent podcast;
Every high-level programmer, sometime in their career, invents their own programming language. It seems to be a thing that’s broadly done. […] I don’t regret having done it […] building my own language was an experience, I learned a lot. But there was a generation of programmers who learned programming through QuakeC, which was nothing to write home about. […] It’s not what I’d do today.
Yeah man, that nails it. Partly I’m sorry to every student who got assigned to read my code for their systems programming courses - I was 25 years old (the same age as Carmack when he did it, humorously), I learned a lot, I don’t regret it, but I’ve moved onto many other things.
Five years ago, I marvelled at its reach.. I was humbled and excited about the thing I’d created. And while it had been some time since I’d worked on it, some part of me still believed I would. It’s hard to believe that was five years ago, and was written in the waning days of my 29th year. I’m 35 now, and I’ve come to the realization that I simply don’t care about a lot of the things I did in my 20s.
I’m not an open-source maintainer, never really have been. I’m not someone who wants to make plumbing for others to use, I’m a direct-impact guy more than an org-impact guy. What I care about is what I can do, at any level, to make the end-users (the players, in my case) enjoy what I’ve made. There was a Q&A with a director of my division recently, where someone asked if he cared about cool technology or cool products. And he said, quite neatly, "cool products often come from cool technology, but if i had to pick one, it’s products". And, like, yeah. It’s trivial to bikeshed over library implementations and standards, it’s difficult to make something people will pay money for. Perfectionism trends towards decision paralysis, over-eagerness trends towards a launch. Neither are "great" but only one is survivable.
I’m firmly middle-age, I’m not writing code every day anymore, I have a wife, a cat, a son, a house, and a hundred obligations that I simply never had in my 20s. And, that’s good. On a very personal note, I was unhappy with my life before I built this family, I didn’t want to live like I was 25 for my whole life. That’s a sad existence. I treasure those years, and nobody can take those achievements away from me; but it’s not a permanent identity.
Today, I hauled two full trees out of my forest and chainsawed them into pieces, then I dug a channel to drain a low point in my property to the road. I’d spent four hours in meetings, I’d solved complex problems and directed a dozen other teams what to do. I’d deployed a change to a service that does several million requests per minute, and I’d gotten breakfast for my family, cooked them dinner, and taken care of my son for a couple hours. There are multiple full-time jobs just in that list of things, and none of them involve merging PR’s for an MIT-licensed repo.
Open-source means different things to different people. On the face of it, it’s an alternative to proprietary software. It’s an acknowledgement that the years of "selling software" are firmly over, and now the money is made by selling support and licenses to businesses. Open-source, in this way, means "sure you can run this yourself, but it’s probably cheaper to let our experts manage it for you". It’s a way of taking market share, either because of community use or large business use. But either way, the source isn’t the valuable thing. Open-source lets companies benefit from volunteer workers, bug-bounties, and inspections. But of course, they’ll sneer at any copyleft..
Another interpretation is that open-source means "i understand this has no monetary value". I, personally, have learned a great deal from the Quake3 source. It’s not a modern engine, it’s not even a "good" engine. But picking through specifics of lightmaps, collisions, lightgrid, etc have been insightful and necessary for me to create replacements. It’s abandonware, sure, but I got something out of it. And if I ever wanted, sure, I could fork it. That’s how Blendo Games made all his games, he forked Quake2 and used it.
This year Valve released a TF2 SDK, with very reasonable and thoughtful applications. It’s not exactly giving up, but it’s widely seen as "we understand this was a monumental game in the history of games, that still has a large and loving playerbase – so as we creators age, we’re giving you the ability to take up the reins and make your own destiny in this space we made."
There’s a real beauty to that. "I’m done with this, it’s time to give it to the world".
Look, I don’t pretend that govaluate had that kind of impact. It didn’t. But that is my philosophy. I’m not a maintainer. And i’m not convinced that model "works". Centralization leads to a lot of negative outcomes, from chaotically renaming terms to seizing power over repositories to ban your political opposites, at the expense of both the repository and social goods (as is typical of terminally online activists), or even supply chain attacks.
I wash my hands of it. Pure and simple, I’m not valuable because of what I’ve made, but because of what i can do. I’m done with it, time to give it to the world.
That said, the repo is heavily active. It gets thousands of pulls a day. And given the XZ Utils attack, and the downstream users, there’s a real danger of supply chain attacks with this. There is, frankly, nobody I trust to take over the project.
So in the spirit of the above, I’m not transferring it to anyone else. Anyone can fork it and establish their own reputation, and a couple have done so. I truly wish them the best, I’m glad someone wants to take the job on. But I can’t appoint a successor.
It’s difficult to turn the page on a chapter of your life, and an achievement you’ll always brag about. But the truth is, that page turned a long time ago.
So long, govaluate users, and thanks for all the fish.