Interview with Caleb James DeLisle, Developer of cjdns
mesh networks, cjdns, privacy, decentralized networks, social networks
If you use social networks like Facebook, you're probably familiar with the trials that its creators have faced for privacy infringement. Due to such revelations, some users are consistently turning to other options. Developer Caleb James DeLisle created one such protocol, known as cjdns, an encrypted IPv6 networking protocol and server software. cjdns uses public key cryptography for address allocation and a distributed hash table for routing.
DarkRebel: Can you explain cjdns to a noob?
Caleb James DeLisle: The dream of cjdns is that we shouldn't need large centralized companies to provide us with our internet. The economics of providing internet access to everyone are such that businesses who do it tend toward monopolization, and monopolies always tend to treat their customers poorly.
The aim with cjdns is to change the dynamic from "provide internet access to everyone" to provide internet access to your immediate neighbors," which is something almost anyone can do.
DR: In an age where centralized social networks like Facebook and Twitter are increasingly coming under fire for privacy violations, do you think that cjdns provides a good alternative?
CJD: This is a very interesting question; cjdns is not an alternative to Facebook except perhaps for people who enjoy the activity of network administration as a bonding ritual.
The structure of the internet is such that people have their choice of any service in the world, and we see that this leads to the emergence of "super winners". These are not monopolies in the sense that people have no choice, but they are nonetheless disturbing in the amount of political power they have.
Some people believe the answer is to fragment the internet. This is the official justification of national firewalls such as those in Russia and China. I believe that denying people choice is turning our back on the future.
Progress is always uneven; there are always mistakes and growing pains but that doesn't mean The Good Old Days were actually better than life is now. I have faith that Facebook and Twitter will not be the last super-winners in history, and I think it is fairly likely that the next super-winner will not be a centralized service but rather a decentralized protocol such as ActivityPub.
DR: Did you grow up with a more decentralized internet, pre-Google and pre-Facebook, etc.? What do you remember about those days?
CJD: Thinking back now, I remember people trying to figure out how to make use of the medium. I remember you couldn't make phone calls while you were online; I remember waiting for pages to load and getting popup advertisements.
Search engines before Google were pretty bad; they turned up a lot of useless results and banner ads were everywhere. When I first saw Google, it had a clean homepage, no advertising at all (at that time), and the quality of the results was night-and-day different.
I never got into Facebook, the itch they offer to scratch is not one that I really have. Originally everyone needed to make their own website and there were web-rings for different topics, which was a primitive sort of social networking. Angelfire and GeoCities started providing free hosting and some web dev tools if you agreed to let them run ads on your site. Still it required a fair bit of web development knowledge. MySpace made it a lot more simple, but I seem to recall they ran a ton of ads o their platform and didn't innovate a lot. When Facebook went out of beta, everyone switched.
I'd love to be able to say that things were better back then, but all I can say is that when everybody switches from one thing to another, it's usually because the other thing is better.
DR: You had stated in another interview that cjdns is different from other wireless mesh protocols like HSHS and OSLR, as well as anonymity networks like Tor and I2P. What features does it have that are different from most decentralized/anonymity networks?
CJD: What's unique about cjdns is the fact that it uses what is known as "source routing". Source routing means the path a packet of data takes through the network is entirely determined by the sender. Rather than specifying a destination *address* (e.g. and IP address), the sender of the packet specifies the path the packet should take. It needs to request that information from somewhere, but we already request the IP address using DNS, so it's nothing particularly new.
Traditionally, source routing has required a large amount of additional data to be attached to each packet which is very inefficient, but cjdns has a unique method of compressing that data which we call *compact source routing*.
The effect of using *compact source routing* is that the core routing devices in a cjdns network have less information they have to keep in memory in order to do their job. This is a big deal for 2 reasons: first it allows routing devices to be cheaper, but more importantly it allows a single routing device to be sub-divided and leased as multiple "virtual routers".
In order to be a network operator on the internet, you really have to have your own equipment on-location where ever you are providing access. This creates a major barrier to entry and leads to monopolization. We envision a future where the physical hardware is operated by local people with minimal technical knowledge and the network operation is done by cloud businesses who lease access to this hardware in order to provide internet access to their customers.
DR: Bitcoin and other cryptocurrencies are currently used as a payment system on Tor and other such networks. Would bitcoin be compatible with CJDNS?
CJD: Well, I guess I've already hinted at what we're trying to do. A lot of different networking projects have looked at crypto payment systems to fund the infrastructure and it's a good idea, but a lot of these systems lose the simplicity of a plain old monthly bill.
I believe there should be a market for bandwidth but I don't believe that a normal person should have to worry about accidentally spending hundreds of dollars worth of crypto-coins in one hour just because they're watching videos and it happens to be peaks time.
We have started a companion project to cjdns called PKT where we intend to build out a *decentralized bandwidth marketplace*. The difference of this is that rather than invoicing a tiny bit of cryptocurrency per kilobyte of data, we take a strategy of allowing network operators to buy, sell and trade *bandwidth leases* i.e. the right to a certain amount of bandwidth between two points for a certain amount of time.
PKT is also unique in that it is mined using the PacketCrypt algorithm, which requires bandwidth to mine efficiently; this helps create *artificial demand* for bandwidth, so for someone who considers installing a fiber optic cable, they have another way to get back the money they invested even if there aren't a lot of people wanting to use it right away.
DR: Does cjdns require passwords for authentication, or is there another method for verifying people's identities?
CJD: Well, cjdns proper is just a protocol; it doesn't need to know anything about you. Cjdns uses keys to protect integrity and confidentiality of your communications so that is one form of identity; cjdns also uses passwords for allowing only certain nodes to directly connect to your own. But in the future I expect these things will become a lot more simple and transparent.
DR: How have cjdns and Hyperboria advanced or improved since you first started the project?
CJD: I feel like at the beginning, we had an idea about networking but we had no idea about how to make the network pay for itself. Without that piece of the puzzle we were doomed to always be a hobby project, or perhaps get absorbed into the centralized mega-ISP ecosystem if our technology proved to be useful to the enterprise. The project was really in a sort of sleep mode until Lightning Network emerged and it became possible to make true micro-payments with cryptocurrency. Right now I feel like the *decentralized bandwidth marketplace* model is not only viable but is in fact inevitable.
DR: Do you have any other types of networking or software projects in development right now?
CJD: Well I guess I kind of spilled the beans on this one, but I can speak to some of the more specific aspects. Right now there is a big project to rewrite parts of cjdns into Rust. I'm really happy with Rust because working in C/C++ is just too dangerous. You can have code which works perfect for years but when a new compiler version comes out, it suddenly has a bug, and that bug can be a major security vulnerability. C developers also tend to think this is something that will never happen to them, but I've seen it some major and heavily used projects so my opinion is that nobody is more dangerous than someone who thinks they're infallible.
The Rust project and a few others are being paid for by a funding system which is part of the PKT blockchain. 20% of every newly mined coin goes to an address called the Network Steward; this address can be changed by a proof-of-stake based vote. There is a call-for-projects opened up every few months and projects are selected similarly to research grant making bodies. I encourage anyone who wants to participate in the mission of decentralizing the internet *infrastructure* to join the PKT chat and talk about their idea and see if it's something that could become a project.
DR: Where do you see CJDNS and other similar protocols going in the years to come? For example, do you think they'll catch on with more people?
CJD: I think we have a very real chance of a future where you buy your internet from any one of thousands of companies around the world, and your actual wifi access comes from your neighbors who get paid PKT by your ISP.
I think decentralized ownership of network infrastructure is not only more ethical than a centralized telco, but it is also more efficient. Think about how much easier it is to replace your home wifi router than it is for a telco to upgrade their network.
The architecture of the internet has been incredibly effective at driving down the cost of communication, and that is largely because of network operator competition and redundancy. No one wire is so important that if it breaks, the whole internet goes down. However, our connections to the internet *are* typically through one wiere. Nobody can become an ISP without having someone on call 24 hours a day ready to get in a truck if a wire breaks. This is fundamentally what we're trying to fix; replace 1 internet connection with 3 at 1/10th the cost.