Open Arlodotexe opened 1 year ago
Adding this from a discussion on Discord.
Well-designed distributed systems can operate in a centralized or non-centralized context, and (again, when well-designed), that's better because it can operate distributed or like a traditional client-server, where operators/devs host beefy hardware to speed things up for users and the application establishes a direct connection to them out of the box. Making use of dev-operated nodes can be made required by the application, but it's optional under the hood when the application is designed to work distributed.
Gaming is a great example, because you need a powerful server or set of servers everyone connects to, but the way you discover other players and establish the 1:1 connection each one has to a host server node (whether it's beefy and hosted by the dev or hosted by an end user) can be established via distributed or traditional client-server methods. The ability to mix and match distributed and non-distributed design patterns depending on your use case-- that flexibility is powerful, and the integrations between git and GitHub really highlight that.
Ultimately, I think the rest of our dev tooling from GitHub (CI, Pull Requests, Issues) should be just as flexible and local-first as git is.
Background
The original thread spawned some interesting ideas, and I'd like to clearly separate them so it can be refined and discussed as needed.
What if we went all in?
If I had unlimited time and resources, what would I build?
Decentralized Git remotes
See also:
Decentralized GitHub alternative
Native Git support
This one is a bit more "out there" and should have probably been binned, but let's write it down anyway.
.git
folder