I've never understood this argument. Even if self-hosted things were offline more often (which I've never found to be the case, I've had Forgejo + runners running for a year now with no downtime), the real benefit is that you yourself can work to bring it back online when it does, rather than waiting on a large, slow-moving organization to figure out what slopped PR caused their global service serving ungodly amounts of RPS to go offline again.
Except it's not down more often and it's not a heavy lift. It's not a mail server, it's a Postgres database, a Golang app, and backups (and some providers will just handle that for you!).
Why? Like I wrote in a separate comment, it's not a mail server, it's a Postgres database, a Golang app, and backups (and some providers will just handle that for you!)
What do you mean "why"? Setting up and tinkering with systems is work I loathe to do, obviously. I want to code, not host coding repositories. I did it in the past because I had to, and now I don't have to do it because github does it for me. It's great.
Except when Github’s down, of course. I’m saying it’s incomprehensible to me that people would rather put their trust into an organization as enshittified as Microsoft where they get their codebases added to an AI, have an awful experience (the code review UX, for example), and deal with consistent downtime, rather than put a few hours every so often into something that they loathe to do. That does not seem like a good trade-off at all.
Self-hosting a service like GitHub that operates at GitHub scale is difficult.
Self-hosting a service like GitHub that operates at the typical small/medium company's scale is trivial.
A single machine (with separate runners for CI) will cover many companies' needs. It being a single machine eliminates a lot of the complexity and failure modes associated with a distributed system and makes backups/restores/maintenance easy.