Hacker News new | past | comments | ask | show | jobs | submit login

Imagine how cool it would be if I could share a guid for my repo - and then your bit client (let's call it gitcoin, or maybe just bit) can fetch new commits from a distributed block chain (essentially the git log). Github is no longer an intermediary or a single point of failure. Private repo? Don't share the guid.

That's a great idea, and some bright folks are working on it! http://ipfs.io/

I want to make sure people don't overlook this IPFS link as just a decentralized GitHub. IPFS is building a content-addressable web. Think about how BitTorrent magnet links work—it's a hash of the actual movie (or Linux distribution) you're trying to download, and using that hash, you can connect with all the people who've already downloaded it to get it from them. On a content-addressable web, pulling up the New York Times would be looking up a certain hash, which would pull the content from your neighbor three doors down who read it earlier this morning. The web won't be servers that you hit with your browser anymore. It'll be content that lives forever, always reachable by its hash.

As long as people want to read what you're publishing, publishing is free. And fast. Around the planet. The web is about to get way better, and IPFS and its competitors are going to be what pushes it forward.

IPFS does look interesting, but how does it provide updateable references? What's the equivalent of "give me today's headlines", which is pointedly not content-addressible because you don't know the content yet?

IPNS is a layer on top of IPFS that is essentially a map from public key to something signed by the corresponding private key. So you can store an IPFS hash in IPNS under your public key. Then whenever you create new content, just update the hash in your IPNS entry. People only need to remember your public key to find your latest content.

I suspect that there's a way to identify the latest content built into IPFS, but if not, it's easy to build that on top of something like Ethereum. If you're new to Ethereum, it's a global, trustless, blockchain-based coordination platform—it gives us the ability to determine what "The New York Times" is, without having to trust someone else to tell you. The New York Times would have an Ethereum contract with storage space that only their private key can write to that would hold the hash of the latest state of the site. A site state would contain set of hashes that point to the day's articles and perhaps previous states of the paper.

In the very near future, the entire New York Times archives will be fetchable just by asking for it. Your computer will ask your neighbor for the front page for July 21, 1969, and they'll send it right over.

> I suspect that there's a way to identify the latest content built into IPFS

Yeah-- the IPNS records have a notion of recency, as well as being able to write version history datastructures (e.g. git)

Name resolution is the answer - folks go to your /ipns/com.example.blog site, which you've updated with the new reference for your new content ..

There is some documentation about IPNS here:


I think that's what ipns is for. Basically synonymous with git refs; a link to a hash.

Thank you for taking the time to write this explanation :)

Isn't a distributed GitHub just git? The GUID for a repository is the repository URL, the git log is your distributed block chain, and your bit client is just git.

The only reason GitHub is an intermediary and single point of failure is because it's much more convenient than raw git. There's nothing that stops you from dropping your git repo on a webserver, Amazon S3 bucket, or any other data store. Heck, my last startup used Heroku as our master git repository because we didn't want to pay for a private GitHub repository.

That sounds like gittorrent[0]. Never went anywhere, unfortunately.

[0] https://code.google.com/p/gittorrent/

though it may sounds similar, it's very, very different. take a deeper look at the demo on http://ipfs.io

If it's distributed then I don't think private repos would be possible, unless they were encrypted.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact