Hatkirby on October 13th, 2023 at 3:12:57pm
TLDR: Going forward, I will be hosting most of my code on code.fourisland.com instead of Github.
At some point in the last decade, Github took over the world of open source development.
I can't really remember when it happened. Before then, I would maintain my source repositories on my own server. I used CVS at first, before switching to Subversion, then Git, and then Mercurial. I stuck with Mercurial through most of high school, if I recall correctly, although now that I've become an avid Git user (perhaps something forced onto me in college?), I'm not sure what it was that I liked about Mercurial over Git. The point is that throughout that time, I just had source repos on my server, and I'd clone them on whatever computer I was doing development on. It was fine.
One of the earliest times I can remember using Github was to host the code for Rawr eBooks. It was adapted from a class assignment in my second year of college, so that timeline seems to fit the narrative that school got me into using Git. It was around that time that I also moved away from maintaining my own infrastructure as much. I was no longer using my personal website, Four Island (yes, the one you're on right now! it's complicated). I also was not working on the kind of projects I had worked on in high school anymore.
At some point, I started writing Twitter bots. I wrote a lot of them (around 30, I think). And every one of them lived on Github. They made it really easy. Create a repo, set it as your remote, push. Now you have free backups on a public server, and other people can see your code and go wow, gee whiz! In retrospect, none of that was necessary, apart from the fact that I no longer had the interest in running my own infrastructure.
All of that changed when I learned about Copilot.
The (frankly unnecessary) rant about ML
It cannot be said that I'm a fan of machine learning. In fact, most would say that I'm extremely opposed to it, at least in some of the contexts it's being used in -- specifically stuff like text generation and image generation. (Which is amusing for me to say, having written a swarm of bots that generate text and images, but we're all smart enough here to know the difference). There are huge ethical concerns when it comes to this stuff, involving (but not limited to) content stealing, job obsoletion, and amplification of biases like racism and misogyny. I also worry about whether reliance on ML generated content is continuing down the path started by doomscrolling on social media all day, which will eventually lead to our brains being completely smoothed out.
Github Copilot (and similar technologies) writes code for you. It's touted as being an assistant -- not a developer on its own -- but I can still smell the blood in the water. Am I, a software developer, a little worried about losing his job eventually? Yeah. I think everyone, across a multitude of fields and industries, should be.
And it's stepping on my head, and the heads of other developers, in order to do it. Copilot is trained on code that's publicly hosted on Github. I don't condone this. I don't feel comfortable with the idea of an algorithm reading in the code I worked hard on so that it can vomit it out again somewhere else.
To be clear, it's not like I'm against code reuse. My code is open source, so I understand that people could want to use my code and develop on it -- in fact I think that'd be really awesome! But Copilot isn't doing that. Copilot can't acknowledge its sources. Copilot can't propagate code licenses left in the original repositories. And again, I am just not comfortable with the idea of training a model to be able to write code the way that I do, so that someday I can be replaced by it. There is a very obvious difference between that, and another human wanting to derive from the work I've done.
Once I learned about Copilot, I did some research and found out about a bunch of other unsavoury things about Github. There's a page that goes into more detail about it on the Software Freedom Conservancy, which I highly recommend you read. They recommend re-hosting your code elsewhere, and protesting in circumstances when you cannot. There's a bunch of good resources linked that aid in doing this.
New repo new me
I deliberated on this for a while. I had obvious qualms with continuing to use Github, but moving away from it seemed too difficult to be worth it. In hindsight, I think that was the point. Github became ubiquitous in the open source world. Major companies like Microsoft (who owns Github) and Google host projects on there. They wanted to make it simple to join (everyone else is on there, and you can collaborate really easily!) and difficult to leave (where are you going to go? you're dooming yourself to obscurity). It's just like a major social media platform in that way, which is a rant for a whole different day.
My decision to finally go through with it was a bit inspired by my decision to leave Twitter. I set up a Mastodon instance for me and my friends back in November, and while my reach on it is significantly reduced, it's been really fun for me to host a service. I loved sysadminning as a kid. In middle and high school, I was configuring services and setting up infrastructure all the time. I hosted websites for multiple friends. I would learn about new things and immediately try to implement them. I enjoyed reading Linux humor websites for heck's sake. I loved the old Internet and the non-corporate open source world.
I still love it, I realized. It's just that widely-accessible solutions like social media have pulled me away -- as they have to all of us.
So I'm self-hosting my own Git repositories again. Most of them are still on Github, and I may take them down at some point, or at least update their READMEs to indicate that I've left the platform (like I did here). But they've been abandoned.
You can find my repositories at code.fourisland.com.
It was fun setting up cgit-pink to serve a website for my code. I also set up Git Smart HTTP so that you can clone my repos without SSH access. Clone URLs are available on the summary page for each repo. I also dug through the woodwork and found a bunch of other non-public repos that I decided to put up along the rest. Stuff like Ether (a short video game I made), and my unfinished Mother 3 fangame. Just in case you're interested!
(I have to say, as an aside, that I am exceptionally proud of the work I did on the latter -- tanetane -- despite never finishing and releasing the game. The engine is very solid and pretty featureful. It is a shame that I lost steam on the story part of it.)
There's a couple of things Github did provide that I can't replicate in the same way on my own. First and foremost -- contributing to open source projects. During my time on Github, there were a couple of Ruby and C++ projects I made tiny contributions to, usually because I was using them in my own work and was impacted by some sort of bug. However, this year, I started contributing in a major way to a project called Archipelago. I'll talk more about that in another post, but in a nutshell: I am actively contributing to this project, and I have to use Github to do it. So I'll keep my Github account in order to continue doing that, and I guess I'll just try not to think about Copilot eating up all the yummy yummy code that I write for Archipelago.
The second thing is basically the reverse of the first -- people contributing to me. This, has never happened before. It's still theoretically possible that someone might want to, though, and the lack of a pull request feature on my code website makes this harder than if I was using Github. The thing is, though, that people handled this situation even before Github existed. Github tried making it easier, to the point that we all forgot you could do it any other way. But there's still a workflow that would allow you to contribute to my projects, if you'd like.
- Clone the repo.
- Make and commit whatever changes you'd like, on a branch.
git-format-patchto generate one or more patch files.
- Email them to me at email@example.com.
- I can review them, and we could even talk back and forth about it, just like in a Github pull request. It'll be great!
You can really tell how much I miss The Olden Days™. I know it's unlikely that anyone will feel the need to contribute to my code, but I'm still having fun.
Anyway, that's the whole shebang. I'm falling back into my love of computer infrastructure and open systems. Four Island is back up again, it is once again running on code I wrote myself (rather than Wordpress or Jekyll), and I'm writing a blog post for the first time in two and a half years. I'm no longer going by the names Fef or Starla; "Hatkirby", "Danny", or just "Star" is good. It can also be said that I'm coming out of my cage and I'm doing just fine -- gotta gotta be down because I want it all.