Years ago I decided I was going to stop using Github to host my code. I would continue to use Github professionally , but when I had a choice, I would choose something else and I migrated all of my repositories to gitlab.com.
I left Github for a number of reasons. The first was due to sexual misconduct by the original owners. This was enough for me to want out, and while I was working on leaving Microsoft purchased Github and that clinched it.
Since then I’ve tried a number of other alternatives, including simply hosting git repositories on my own servers, over ssh, with no web interface, etc.
As a result, my personal codebase has become fragmented across several systems and I no longer have a single source where I can easily work with the most current version of my code. The reason for this is that I’ve had to balance taking time to solve problems that come-up on each platform with the need to simply get things done. Some of the problems I’ve had have been unsolvable in the time I have available to troubleshoot them so I’ve simply had to abandon one server for another. Given that I don’t have time to fix things, I really don’t have time to go back and clean everything up, so there’s stuff all over the place.
Another struggle I’ve had since leaving Github is collaboration. Unfortunately for the vast majority of programmers Github has become synonymous with git, and the idea of using the inherently distributed nature of git is completely foreign to them. So I end up maintaining a Github account to collaborate on other programmers projects. Another problem is that some programmers don’t have access to the systems I’ve hosted my repositories on. Overzealous corporate firewalls have even blocked prospective employers from accessing code exercises I’ve completed for interviews.
None of this makes me like Github or its owners any more than I did the day I left, so what changed?
I’m trying to take some good advice from a smart advisor about avoiding Compassion Fatigue . This is something I’ve been struggling with for reasons that are obvious to anyone living in America for the last four years. The advice is simple: focus on helping with one or two things you care deeply about and have some power to change. As I make this list for myself, it’s hard to justify the effort I put into avoiding Github, especially given that it’s impossible to avoid it completely.
Perhaps more significant is the fact that everything I’ve done to stop using Github myself has little effect on others, so for all my contortions I’m not even helping anyone else. This is perhaps the most damning effect of them all.
So I’m going to let go of my crusade against Github, and I’m going to move my repositories back as well. I’m still going to maintain replicas should there be any problems that require me to make a hasty exit, but Github will become the primary system of record for my code, and the place where I collaborate with others.
Even after writing all this I still feel uncomfortable about going back, but I need to make some compromises like this if I’m going to have any capacity for the causes that are most important to me, and where I have the most leverage to effect positive change. To some degree reducing the friction on collaboration will also accelerate work toward these other goals, so this compromise pays double dividends.
I expect the process to be slow. I want to take the time to properly curate the code as I move it back, and where possible preserve the history of each repository that originally existed on Github. I don’t know the best way to do this exactly, so there will will take some time. When the work is complete I’ll post a follow-up describing anything interesting about the process and anything of interest I encounter along the way.
Hopefully afterwards I’ll have a chance to hack on some code with the rest of you again.
- Jason