Some months ago I made a list of proprietary software I wanted to get rid of. I easily replaced some and wrote an article specifically on that topic. However, I found it hard to stop using tools that had been part of my day-to-day for too many years.
In this article I explain why I moved away from GitHub and embraced Gitea as a replacement.
Dependency on SAASS
As a software developer, I have been using GitHub for pretty much my entire career. I was introduced to this company in the university, and came back to it some years later in my first job. I’ve been using GitHub for professional and personal projects ever since. I even paid some euros to host private repositories when that was a paid feature. GitHub Actions also became part of my tech stack to build, for example, the static files that make this blog.
Some months ago I started reflecting about software freedom, heavily influenced by the ideas of the Free Software Foundation. I was shocked when I realized my high level of dependency on SAASS (Service as a Software Substitute), and how that limits my freedom. As a proprietary project, GitHub can impose any conditions they wish to their users, who will then decide (possibly influenced by their depedency on the service) if they are willing to bear with them.
I don’t want GitHub or any other company to:
- Limit the number of repositories I can have, or the amount of people that can contribute to them.
- Have access to my private repositories. I don’t want to trust whether they are going to honor that privacy.
- Restrict access to some features (merge queues, branch protection, etc.) unless I pay a subscription fee that can change at any time.
- Be able to ban me or any other organization for allegedly disobeying the Terms and Conditions, at the requirement of a government agency, or because of any other excuse.
GitHub may not have enforced some of these policies, but they certainly can. I don’t want to depend on the goodwill of a company that will change these policies depending on how business goes. I don’t want to give them that power.
GitLab CE as an option
I considered using GitLab Community Edition as an alternative to GitHub. However, while the Community Edition is indeed free software under the MIT License, I don’t really like the Open Core model. I’ve seen (in other projects) how community-driven contributions have been rejected because of a conflict of interests with the company behind the project. I understand companies have to pay salaries and make profit. It may be legit, but it’s not what I want.
If I am going to depend on a service, I want to have access to all features it can give. It’s not just about paying for the features. With a proprietary SAASS, even if I paid for them I would not have the freedoms granted by free software.
Embracing Gitea
In addition to being free software, one of the things I liked the most about Gitea is that it is conceived not to be a replacement of GitHub or GitLab. The public instance is a free service with reasonable restrictions on resource usage. Not because they want to limit your freedom to have more repositories, but because they have to limit their resources to be sustainable. For that reason, if you need to go beyond you are free to set up a fully working instance on your own infrastructure or on a hosting company of your choice.
At the time of writing, Gitea offers Cloud and Enterprise hosting plans, but the paid plans do not include additional features. It’s a matter of hosting and maintenance.
My personal blog has been the first project I moved from GitHub to my Gitea instance. I configured CI/CD in a matter of minutes using Act Runners. Actually, the docker image of that includes this blog post was built in my infrastructure, using Gitea’s CI/CD (which, by the way, is mostly compatible with GitHub Actions’ configuration files).
I feel very good after having replaced another piece of proprietary software with free software.
Next steps
Removing the dependency on GitHub has been a huge milestone for me. I plan to move all of my repositories to Gitea, which should not take too long. I also want to get rid of Docker Hub, another non-free dependency that I’m using to host my docker images. I still need to do some research to decide if I want to store them in Gitea or have a separate service just for that.
I hope you’ve learned something reading this article, I have certainly enjoyed writing it.
Happy coding!