cjb / GitTorrent

A decentralization of GitHub using BitTorrent and Bitcoin
MIT License
4.75k stars 264 forks source link

Reapproach as a standard, implemented by one example application. #12

Open digitalextremist opened 9 years ago

digitalextremist commented 9 years ago

As it stands GitTorrent centralizes on JavaScript. I would wholeheartedly support the decentralization of the code itself on a language level, by implementing this in Ruby... if it were spelled out as a standard.

I see the GitTorrent organization exists. Is there a plan to move this repository over as GitTorrent-JS or the like, expecting GitTorrent-Ruby and similar, for other languages?

I propose a standard be extracted from this implementation, then this implementation become a demonstration/primary implementation, anticipating others.

cjb commented 9 years ago

I agree that networked programs should follow standards and ideally have multiple implementations. I've tried to specify some of the messaging in the README here. I'd be happy to see other implementations and more work on defining the protocol. This is all still very experimental, so it might make sense to wait a few months before starting porting effort.

There are some things that you're not going to be able to do in Ruby. In particular, the bittorrent library I'm using ("webtorrent") also supports WebRTC, so in theory you could run GitTorrent in a web browser and clone repos into a browser tab. Ruby doesn't support WebRTC, or easily run in browsers. So that's part of why I chose JS for the reference implementation.

digitalextremist commented 9 years ago

@cjb your work on the reference implementation and first standard premise is great, and I understand the limitations you're working around by the choice of language at this point; but I feel like you need to then actively invite collaboration on the conceptual framework itself, working to avoid:

competing standards

The ideas you've demonstrated are critical and since you are disrupting the entire status quo, without opening up to a quixotic committee mentality, please allow the standard and implementation to diverge and others to come in at this critical point to affirm the standard alongside you. I would, and I'd help catalog the limitations and work around them.

For example, I could see using several languages concurrently, if the standard were implemented in a modular fashion where various languages worked in unison for different but interacting pieces.

This is an extremely exciting and liberating concept. Thank you for all the work you've put into it.

cjb commented 9 years ago

Sure. I'm not sure what to say except that I welcome collaboration on everything, including the core design. An official standard right now would be extremely unfinished; just look at the other open issues.