Why
Why? Why on self-host all your own infrastructure?
We tried not to, at the very beginning of the project. We agreed that Github-style code review wasn't really fit for our kind of project, and wanted to use Gerrit for code review. We started setting up Gerrithub for a repo hosted on Github, and we ran into so many problems with that approach that it was actually easier to just self-host Gerrit instead.instead (for starters, some members could not log in at all).
Then there was little reason to use Github too,GitHub, since none of us are really happy with Github direction lately anyway, and Forgejo + Github-GitHub-enabled SSO mean that contributors shouldn't have to jump through too many hoops to help out.
So now we have a fully independent and open source infrastructure stack, with (hopefully) a good onboarding path as well. And we're also in our own critical path: we run into Nix's papercuts and gashes alike every day, so we better fix it!
Here is our thought process from back then:
GitHub?
Well-known
Easy to contribute to as everyone has an account
CI would need extra work due to VM tests, e.g.
Not a Nix CI system by itself, will be doing self-hosted engineering work for something extra anyway
Rubbish code review
Can use GerritHub for better review?
CI though?
Evaluated: found that login does not work and vendor is unresponsive to emails
Possible moderation difficulties
Forgejo/gitlab?
Basically GitHub but by different people
Same CI problems as GitHub but fewer off-the-shelf solutions to them
Rubbish code review
Cannot use GerritHub even assuming that it worked
Need self-hosted Gerrit, so need self-hosted Gerrit auth and well...
(self-hosted) forgejo/gitlab
Much better control over integrations
Same poor code review situation as cloud Forgejo/GitLab
Might as well stand up a forgejo if we already have self-hosted Gerrit and the auth for it
(self-hosted) Gerrit?
Easy to integrate with and add plugins to vs GerritHub (e.g. Gerrit does not come with Nix or Meson syntax highlighting)
Full control: can fix issues like moderation
Works at all
Good code review