I’ve favored GitLab over GitHub ever since the latter was purchased by Microsoft. It offers superior service in several ways, but there’s one important area that if not improved will ensure that GitLab forever remains an underdog. I write this out of worry.
When someone creates an open source project, perhaps one the of the greatest benefits they get from this is that if the project is successful this will greatly improve their resume and give them better job opportunities. Collaborating or networking with people on GitHub repositories is a very positive sign for employers as well.
GitHub is increasingly filling a similar role to LinkedIn. It has some social media elements and high discoverability for projects. Employers often have a field in their application forms set aside especially for linking your GitHub. It’s the place to have your open source contributions on for all to see.
Unless GitLab starts improving the social media and discoverability aspects, this trend will continue. And the trend will get massively worse if Microsoft figures ways to increase user lock in via network effects.
I don’t want GitHub to be the industry default.
I don’t want to feel like my projects are less likely to be found on GitLab.
I don’t want to feel like my projects are less likely to be contributed to on GitLab.
I don’t want to feel like I need to min/max my GitHub profile somewhat for job hunting purposes.
Currently, if you choose to host on GitLab, you’ll get fewer views, fewer stars, and much less interaction, let alone contributions to your projects.
I’m going to go through the relevant differences between GitHub and GitLab to show what the problem is exactly and hint at how it could be improved upon.
1. GitHub is much bigger and much more active.
GitHub reports having 33M users as of May 4th 2019. I can’t find any numbers on how many users GitLab has. My ballpark estimate would be 2-6M.
Though what matters massively more than number of users is how many high quality / popular repositories each has. The best way to see this is to look at all projects on each site and sort in descending order by the number of stars.
You will notice that after the 1st page on GitLab, you’ll start finding repositories with under 100 stars, meaning that past the second page there are no repositories with more than 100 stars.
You can go past the 100th page on GitHub and you will still see repositories with over 10k stars.
That difference is insane. Stars are not the best metric of high quality code, but it clearly indicates that a lot of people think those repositories are good. The amount of active repositories and how popular they are massively outweighs GitLab by a metric tonne.
2. GitLab’s Search and Explore Projects is deficient compared to GitHub.
- Offers two different interfaces from which to find projects: Search and Explore Projects. They compete with each other somewhat, there’s some overlap in their functionality.
- Explore button is nested in the Projects menu.
- Search does not let you order results by any criteria.
- Explore lets you order results, but lets you filter only by name (which also searches the description).
- Neither Search nor Explore seem to take tags into consideration. (Unless you manually write them in a GET parameter in the URL.)
- No cheatsheet available for advanced search features and no advanced search page.
GitHub on the other hand:
- Does not have the same Search vs Explore distinction. There is no overlap between Search and Explore. Search offers almost fully featured query capabilities. Explore lets you browse arbitrary collections of projects GitHub throws at you.
- Explore button is a top level button, directly visible on almost every page.
- Search lets you sort by many criteria.
- Search lets you filter by several criteria. Takes tags into consideration.
- Search allows you to use advanced search terms such as
- Exposes an Advanced Search interface and a cheatsheet.
- Automatically lets you filter by language in a sidebar.
GitHub goes further:
- Generates suggestions for projects that might interest you based on projects you’ve visited and starred.
- Presents these suggestions in Explore and also in a sidebar on your dashboard/main page. This further establishes Explore as occupying a distinct and useful space from Search.
I almost never find myself exploring projects on GitLab. But I do it quite regularly on GitHub. A lot of things about the search/explore feel wrong to me on GitLab and I also expect that any project I might explore will be found on GitHub and not GitLab.
3. GitHub has stronger social media features.
I’m not a fan of social media and I imagine a lot of programmers aren’t either. But it helps users find each other, it gives the place a bit more of a community, it helps networking. All of this affects the growth of the user base a lot and how it’s perceived by employers.
- GitHub lets you pin your most important projects so they appear first on your profile, GitLab does not. This is important when your profile is representing you professionally.
- GitHub has a more attractive activity timeline than GitLab.
- GitHub presents profile data in a much better way. GitHub immediately lets you know how many repositories, projects, starred projects, followed users and followers a profile has. It lets you know how many contributions the person made in the last year. GitLab, on the other hand, only lets you know how many projects and contributions a person has made if you go and count them.
- GitHub aggressively informs you of what people you follow are doing. GitLab’s subscribe doesn’t seem to be in any way equivalent. GitLab only offers an Atom syndication feed.
- Subjectively speaking, I think GitHub hits several more tiny UI and UX pleasantness aspects that stack up and make it more fun to browse.
GitLab is great still. I think there’s a lot of focus on winning the “CI War”, which I do think GitLab has been doing.
But mark my words, neglect the Social War and GitLab will, ironically, always be massively behind Microsoft on how attractive the service is for open source projects that care about being discovered. Please don’t let that remain the case. I want GitLab to flourish.