I've been a long-time Github user and believer and vaguely followed Gitlab since their beginnings. Much as I admired their company and business, I had a lot of problems with their UI, UX and scattered focus.
Then very recently I've had to use Gitlab for a variety of new projects. And just... wow, it has come a long way.
There is an incredible amount of tooling and features, native to Gitlab. It's actually scary, and in some places even gets messy (feature overload). But a lot of it is useful stuff Github really should be offering. Things like more metadata on projects, subprojects. A very in-depth permission system (invite users with read-only access, issue-only access; membership expiration, ...). Branch protection integrated into various features.
Native CI! That's the big one. Travis is terrible. I used Gitlab CI to deploy one of my most recent project and ... it's been great. Was very simple to configure, felt a lot less magic and constrained than Travis, and it's very well integrated into Gitlab.
All this to say that I'm just about converted. Unfortunately, I have my 10+ year old profile on Github which includes membership to various projects and orgs, but I'm now pretty definitely using both platforms.
Edit: Here's my Github profile so people know I mean business when I'm praising Gitlab. https://github.com/jleclanche
>"I've been a long-time Github user and believer and vaguely followed Gitlab since their beginnings. Much as I admired their company and business, I had a lot of problems with their UI, UX and scattered focus."
I had a similar experience where we had gitlab in a previous job(recent past.)
The scattered focus seemed to be manifest for me anyway in their documentation. Finding documentation often involved going down a rabbit hole of user issues rather than looking in the official documentation. Additionally I found a lot of the documentation seemed incomplete and read more like internal notes than anything else. The contrast being github which has very polished and thorough documentation.
Thoroughness? Accuracy? Here's an example. Someone attempting to upgrade their omnibus package installed instance will likely find the following resource:
This above page states "We encourage everyone to run the latest stable release", we contains an embedded link. And when you follow that link it returns a 404 with a cutesy error page! See for yourself:
Further none of those pages explains how to pass in a specific version of the omnibus package to satisfy the upgrade process in the even that the latest version fails because the upgrade version differential is not supported.
It was really frustrating. And this is but one small example of course. But I think this is typical.
Thanks for the examples. I've asked someone to look into this. And we'll consider setting up a service to scan for 404s in our docs to prevent this in the future.
I always find myself being bounced around different pages in your docs to find information about the same topic, and often also have to get bounced to your blog posts. It's hard to know when I've got all the info.
There are so many different places containing parts of the docs about your CI, for example.
Thanks, I recognize what you mean, blog post content that is not in the docs. I'll bring this up with the docs team and we'll try to get better at this by coping the blog post to the docs and linking the blog to the docs for the most up to date content.
I use all three, and I still like GitHub. It works well, and it's incredibly well supported in the wider ecosystem of services - every CI product, bug tracker, comms product and analytics tool you can think of integrates with Github. Plus, for most large-ish projects, the web UI isn't where anyone spends much time so it doesn't really matter.
I'm intimately familiar with GitHub's UI from both my OSS work and previous employers. I know GitLab can do everything GitHub can do (and more!) but it infuriates me how long it takes me to figure out how to do things I can do in my sleep on GitHub's web UI.
I don't think it's just a familiarity thing; I've been using it for months and still haven't adjusted. Gitlab's UI/UX has gotten better by leaps and bounds, and I prefer it to BitBucket, but it still feels like it has a ways to go.
Well, because it's cheap, I have literally no issues or problems with it, it has all the features I need, integrates with everything, and is the most popular repository of open source code.
When I hear "Github has better integration" I think "You need better integration because half of Gitlab's features are provided by third parties on Github".
I don't care about the integrations on Gitlab because it already has everything I need, plus they ship new features at a rate of more than one per decade.
I use GitLab exclusively these days. GitHub annoys me because I can't turn off PRs for mirror repositories, so I end up either having to sync or to manually tell people to take their PR and redo it on GitLab.
Mostly because of the "hub" part. It used to be the place where everyone else was. Up until the Microsoft buyout when people started jumping ship in droves.
I find both Gitlab and Github have plenty of focus on the dev (Github more so). It just so happens that Github has developed a lot of tooling for orgs and projects since.
Obviously, this comes down to opinion, but honestly: yes. In the case of GitHub, the point where I reached that conclusion was when they added built-in enforcement of code review workflows. A feature which I seem to recall they copied more-or-less directly from GitLab...
(And I'm not saying it's wrong for everyone. But diversity is nice...)
I'm not sure I follow. Do you think improving in other areas means the focus is no longer on the dev?
Github, when it came out, was the only platform that even had proper profile pages for developers. They coined the whole "social coding" thing. I find that whenever I interact with other people on the site, I actively look at their profiles, their contributions, etc.
An example of a recent-ish feature they added which IMO is a good example of "focus on the dev": Comment authors are tagged as "Owner", "Member", "Contributor" and "First-time contributor" in comment streams.
I'm not sure I follow. Do you think improving in other areas means the focus is no longer on the dev?
Yes. There are always trade-offs, especially when you're adding user-facing features as slowly as GitHub [1]. The author tags are one of very few that focus on individual developers. About the only other one I can think of is the option to curate the repositories that appear on your profile page (welcome, but took years of asking...)
[1] Which isn't, in itself, a bad thing -- stability is good, and GitHub's launch feature set turns out to be a pretty good match for what I want)
No, it became atrocious. The world moved on and SourceForge did not, which is why superior offerings arrived.
And to your first "question", no. It had them in almost exactly the same incarnation as modern sites, but with a UX design language rooted (fatally) in the "best practices" of the web at the time. Unlike all the crazy things you'd have to do around FTP to get it to act like DropBox, SourceForge had the mentioned features built in from the start.
It doesn't really win GitHub any prizes to pretend otherwise, so I'm not sure why the pushback against simple facts.
The enforcement of those code review workflows is set up on a per-repository basis. So e.g. if you get access to <someorg>/repo you need to go through that, but not in <yourfork>/repo.
I guess in some sense you could say it's a focus on organizations, but on the other hand it's a glaring omission of a feature that you could have implemented with a pre-receive hook years before either GitLab or GitHub had it, so it would be strange if they didn't add it.
Then very recently I've had to use Gitlab for a variety of new projects. And just... wow, it has come a long way.
There is an incredible amount of tooling and features, native to Gitlab. It's actually scary, and in some places even gets messy (feature overload). But a lot of it is useful stuff Github really should be offering. Things like more metadata on projects, subprojects. A very in-depth permission system (invite users with read-only access, issue-only access; membership expiration, ...). Branch protection integrated into various features.
Native CI! That's the big one. Travis is terrible. I used Gitlab CI to deploy one of my most recent project and ... it's been great. Was very simple to configure, felt a lot less magic and constrained than Travis, and it's very well integrated into Gitlab.
All this to say that I'm just about converted. Unfortunately, I have my 10+ year old profile on Github which includes membership to various projects and orgs, but I'm now pretty definitely using both platforms.
Edit: Here's my Github profile so people know I mean business when I'm praising Gitlab. https://github.com/jleclanche