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 (for starters, some members could not log in at all).
Then there was little reason to use GitHub, since none of us are really happy with Github direction lately anyway, and Forgejo + 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
- Gitlab/Codeberg?
- 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