GitHub is the most mainstream, Gitlab has the most features and is selfhostable, Gitea has fewer features, but is more lightweight for selfhosting. Both Gitlab and Gitea are also working on federation.
I don’t know about the others.
Forgejo is a community run fork of Gitea. It’s also what powers Codeberg.
There is one thing that makes gitlab 100x better than GitHub, and that is that gitlab is developed on gitlab. You can open an issue on the repository and it is picked up like any other issue. No such thing like a GitHub/GitHub repository. I have no clue where to go when something is not to my liking there
There’s the GitHub product feedback repo, but as a closed source product (I know, the irony), you can’t point to the code for the problem and nothing other than blind luck can guarantee you a reply, let alone a fix.
On top of that, they are adding ads to the UI, even for paying customers, so there’s that.
Too bad I can’t deal with Gitlab’s UI. Codeberg is even worse. Gitea ftw.
Isn’t Codeberg’s UI literally the same except a different theme? Maybe I haven’t looked deeply enough, but Forgejo shouldn’t have strayed too far from Gitea, at least yet?
Github has the most visibility, codeberg has the best community features for stripping away some of Microsoft’s hegemony over open source, and gitlab is flat and simple the nicest one to use
It’s a matter of opinion and lots of it depends on your preferences.
Github: Where most developers are and therefore has the best network effect. Easy for new contributors. Gitlab: Got some traction after Microsoft bought Github, but is very similar, just not as popular. Codeberg: Completely open source (I believe) it’s the option with most respect for your privacy. Lacks the network effect until fediverse integration is complete, which I do believe the platform is working on. Cgit: A very simple git repository viewer. You can’t do anything from it, except see the repository. Some big projects use this, like the kernel.
There are more options, but some gets very specific after this.
I personally use codeberg but I have to use github to send PR to some project.