dominictarr / cyphernet

MIT License
115 stars 5 forks source link

Git vs Cyphernet #12

Open evbogue opened 11 years ago

evbogue commented 11 years ago

What are the key differences between Git and Cyphernet?

ralphtheninja commented 11 years ago

As I see it, it's more generic than git, like a layer that git could be implemented upon. Cypherlinks can be any kind of links, for example a link back to a parent commit (git) or the previous album that some artist wrote before current album, which is just a link but in another context.

refset commented 11 years ago

Cyphernet operates with the simple assumption that all information resides in a single unified merkle tree whereas Git only deals with discrete merkle trees. Git is heavily invested in those merkle trees being encapsulated into "files" that in turn reside on "file systems".

micahredding commented 11 years ago

Does this mean that the idea of a repo dissolves and becomes just another object in the tree?

dominictarr commented 11 years ago

wow, @ralphtheninja @jez0990 thanks guys, yes cyphernet is more generic than git, @jez0990 if you use libgit you can actually store all the objects in a database like mysql, although, (which, I understand is how github is implemented)

I'm not sure what you mean as discrete vs unified, do you mean that there is only ONE cyphernet?

Also, this is not the correct use of the term "merkle tree", a merkle tree is created when ever you do replication, but cyphernet it self is a content addressable database.

@micahredding the repo doesn't become an object, but a structure of objects.

For example, a git commit is a text object, with links to the previous commit, and to a tree. and a tree represents a directory. A tree is a list of file names, their permissions, and links to their contents. The content of a file is either a blob, or another tree. A blob is just the text content of the file.

So, git is hardwired for tracking changes to files within directories, but cyphernet is about creating arbitary cypherlinked structures, and replicating them.

You could think of it as a framework for creating arbitrary Distributed Version Control Systems.