Simple introduction to XDen
Clone this wiki locally
I've written this because I have had many (lay)people asking me what XDen is and so far I haven't been able to give them good answers. So, I have written a simple introduction.
XDen is not finished. If you can help, it would be appreciated greatly.
What is it?
XDen is a free open-source database to build networked applications with. Special varieties of applications - applications built for undeniable freedom. It isn't an ordinary database - it's stored among many computers; it's a peer-to-peer database.
So what makes XDen so special? Firstly, XDen is a mutable key-value store that uses trust networks to moderate peer activity. Let's take a step back and find out what this means.
Firstly, a mutable key-value store. A key-value store is a type of database which associated keys - such as "Arrived" with values - such as "no". For a database to be mutable, means those values - "no" - can be changed - "yes".
So why is this innovative? Well as I mentioned before, XDen is a peer-to-peer (P2P) database. P2P is like being in an open room full of people you don't personally know, but in some way or another you are linked to another person through a mutual friendship. P2P is same - you have a bunch of nodes in a network linked to other nodes by mutual friendships.
Now consider this: you are part of an open committee that maintains the town telephone book. Again, like the room, you don't know everyone, and anyone can enter and leave this committee at any time. There is a business in the phonebook - Fernando's pizza - which have just moved to a new and bigger restaurant location. Their phonebook entry needs to be updated. Let's assume everyone is very sick and doesn't have much strength (bandwidth) to talk to everyone. In this room full of people every person knows at least one another person of whom they trust. To update the entry of Fernando's, we need to tell as many people as we can with our croaky voice that the new entry is '1800 PIZZA'. But there is an issue: in this room we don't know the majority of the people, and for all we know, someone could be drunk and tell us that the new entry is "1300 MOUNTAIN SEAL". This is where trust networks come in.
When you walked into this room, someone else introduced you to others - this was your friend "Pete". Now Pete knew Sally, so he introduced you to her, and Sally introduced you to the people she knew and so on. Thus you gained knowledge of all the people in the room. Now Sally has told you that "Buck's" had changed their restaurant address to "11 Foobar St". You don't go out much so you have no idea if this is true, but you do know that there is in fact a restaurant named "Buck's". So how do you know whether to trust Sally or not? You use a trust network! You can estimate your trust in Sally by your trust in Pete, and thus make an informed decision.
XDen is also decentralized. While this is hard to explain without a networking background, it basically means that everyone co-operates and 'shares the load'. And it does this efficiently - a major plus for performance.
The mutability of this data, combined with trust networks, is the key feature of XDen. It is also distributed, which means it cannot be taken down by malicious organizations. As well as multiple other things (such as beautiful design and documentation), this is what makes it a great innovation.
This purpose of this project is innovation. Nothing like this has ever been done before, and nothing after this will ever be quite the same.
I've also set up a page full of questions people have asked me - Random bits of info