Github is a great UI that we all are familiar with and there is a huge community around it, which is great for OSS, but I have to say, I trust Gitlab more than I trust Github.

I am a happy user of Gitlab for 3 years now, I have been using it for all of my private stuff and using it actively for around 10 projects at the moment, and I have seen the product change over time both visually and functionally. There are multiple things that I don't like about it, such as the way it handles registry images, but overall my experience for these 3 years has been terrific.

First and foremost, Gitlab CI is the best experience I have ever had, and I can compare it with Travis and Codeship; Gitlab is way ahead of every platform in terms of convenience and its free-tier limits. They have their own shared runners, which means you can run as many parallel jobs as there are runners available at the moment, so no concurrency limit there. They also allow you to run the free stuff for 2000 minutes per month, which is more then enough for most of the side projects. Also, you can use your own runners with the free tier as well, which means just pick a 5$ VM from DO, install the gitlab-runner using the package manager of the OS, such as apt or yum, and register its address on Gitlab UI. The whole runner stuff takes around 10-15 minutes to setup, and you are good to go. You can have as many runners as you like and you can run as many jobs as you like on them as well. There are also options to setup gitlab-runner in such way that it spans new VMs for jobs, which means you don't even need to have full-time runners, they can be created on demand. Also, CI is completely configured via a `.gitlab-ci.yml` file, which is version controlled and has a clear syntax, I have found it the easiest to use among the other options. It syncs with issues, merge requests and the project tree, which means you can reach to the corresponding pipeline from the MR; it also allows you to generate artifacts and store them for a certain amount of time available for download. Overall, I am a huge fan of Gitlab CI, I couldn't have imagined it would be this convenient to use the same product for Git-hosting and continuous integration, it is a real pleasure.

They also have their own Docker registry, which is pretty convenient to use with CI builds. I use it to push my images with commit hashes as tags to this registry from CI. Unfortunately, there is a lot of room for improvement for registry interface, currently it is pretty basic, meaning it only lists the image tags. If you are pushing the images per commit basis, you are gonna have a lot of images and cleaning up the repository is impossible from the interface, which is sad. I really hope they improve the registry integration. They also have some Kubernetes and monitoring integration which allows you to monitor your cluster and deployments from Gitlab interface directly, but I haven't used it yet, so no comments there.

Apart from the feature set, the most important reason I choose Gitlab over Github is clear communication they maintain. Downtimes happen, engineering teams can have bad times, but they are always open about these problems. They inform everyone from a Twitter account, they are responsive to everyone, and you can see them being very clear and direct about the problems they are having. I expect downtimes to happen, Git-hosting is not a crucial system for me that I cannot live with an hour of downtime, maybe it is because of the scale of the projects I am working with, but having an open conversation about issues like this is the actual value for me. As long as they keep this level of communication, I am fine with occasional downtimes. Not that they have downtimes all the time, but it is true that I have seen more downtimes on Gitlab than on Github.

Overall, the reason I'd not migrate my private projects to Github is not Gitlab having free private repositories, but their huge feature set and level of communication. I see Github as a giant corporation, and Gitlab as some guys like myself, I feel closer to them and I'll be their user & customer as longs as I feel that way. I have no association with Gitlab at all, I am just a happy user and I wanted to explain why I like Gitlab, I think a lot of people would choose Gitlab over Github if publicity is not a concern.