Re: GitHub mirror?
I don't know about full mirrors of GitHub, but it's interesting to observe that the world seems to be forgetting what Git actually does. From the article:
The second course is less than gourmet. GitHub is turning up late and cold. One of GitHub's biggest fans, Hashicorp co-founder Mitchell Hashimoto, says that the platform is now so unreliable due to daily outages it can't be considered as safe for production. This is much more significant than it seems on the surface. Hashimoto is a five star code chef, serving up unusual yet delicious dishes in unlikely genres, such as terminal software with elegant and useful innovations.
GitHub, nor any other third-part hosted service like GitLab, probably shouldn't be part of one's production environment anyway. And of course, with Git, one can move one's repos anywhere and everywhere with ease. But what doesn't travel is things like the issue-handling & build sides of these tools, and it's these that are perhaps as important to owning / developing a software product as the source code is. So something like GitHub becomes production-critical only because its where one's issues, build, etc. are.
Actual source code - the whole history - is trivially portable and with care about submodules those too can be harvested and re-hosted too.
So, whilst Git itself solved the problem of repository failure / resiliency by making it simple for everyone to have their own copy of the repository and makes merging of separate copies a sane (or at least, semi-sane) task, the other problems remain.
A question then is: is it possible to build in an issue-tracking feature directly into Git, and make that mergable in a sane way? The answer is probably yes (with some work). Sorta like making Git-Bug a standard part of Git. [I'd not heard of Git-Bug until in writing this thinking to search to see if such a thing existed. And, it does! Git-Bug is quite intruiging]
How about some of the other features of sites like Github? What about user rights, e.g. you have your own copy of someone else's repo, you can make your own branches but Git won't let you merge into main in your own copy (because you've not got the keys). That's leading up to, could Git itself have a means by which pull requests are accepted remotely? E.g. you've sent a patch to the originator of the software as a form of "pull request" email, and they send back some key or other that is their acceptance of that. You apply that key to your own copy of the repo, and your branch can now be merged into main, and the two separate repos still agree on what main is. From what I can see from a quick search, all such user control is currently implemented by a server of some sort (GitHub, BitBucket, etc).
It would also be cool if Git could incorporate a standardised approach to build too. I'm not talking about just shoving a collection of vagrant* files into a repo. Quite often such things end up being local-network specific and meaningless somewhere else. I'm thinking more along the lines of something that is shaped in general terms and Git gets a description of the local environment from your local git configuration and can build you a build / dev / test / prod environment accordingly. That might be, "build Ansible into Git", though I'm not sure.
This is probably all some sort of pipe dream; there's loads more involved in "software development". It's just a pity that Git's universality as a means of everyone having a copy of the repo isn't matched by a unversality of how other aspects of software development are done. A lot of the rest of it is done in ways that amount to Walled Gardens, again.
*other environment specification systems are available