Yes, exactly. It's great that we can continue along editing and committing. The freedom that DVCSs bring has really changed the world of development. However, feeling the pain of not being able to access other repos shows both the value that Github brings and also the downside of siloed services.
Fossil [1] has always been my go-to DVCS for ages. Not only can I host it myself. I can also run it when completely offline. It offers Bug Reporting, a Wiki and both a web interface and CLI.
Created by Richard Hipp, creator of SQLIte, it's open source and free, has zero dependencies and works across all operating systems.
And even if you don't want to host it yourself, there's always chiselapp.com [2]
Centralization is an artifact of human societies (programmers & organizations) decision making process not result of existence/lack of decentralization features.
Exactly this. It's painful to realize that Git was invented to solve this very problem, but so many use GitHub as their source control server just like CVS and all the other old source control systems.
Then what's the alternative? Push and pull directly from other users who have access to the repository? What if that user is currently offline? There are huge benefits to having a main centralized repo. If you need redundancy for some reason, it's fairly trivial to mirror the repository somewhere else.
Push and pull to your own server running Gitea/Gogs or Gitlab, and mirror to Github if you feel the urge? Or, if you insist on having your workflow around Github, do it the other way around: have your local server mirror your Github repositories. That way, if Github goes belly-up you can just switch to your local server for the time being.
I always thought that an IM-style tool with online/offline presence information of remote repositories could be a fascinating tool for DVCS source control repositories.
Tried to prototype on XMPP at one point in college but never got very far in the prototype.
(That was back when I was a heavy darcs proponent too and had other crazy things like automated consensus branching as a great distributed way to coordinate efforts on such a distributed project, which would work with the darcs push/pull/merge model but not so well in git's.)
You can set up another git server and webhook pull from the main one whenever someone pushes there, so you have a backup replica. Coders just need to setup two remotes for the repos and use the second one when main one is unavailable.
If your workflow depends on centralization, run your own centralized service. If you can't live without the GUI, Github will even sell you Github Enterprise. Or just run Gitolite or one of the other tools.