Despite its many wonderful aspects, the internet has some serious problems. An endless spate of high-profile hackings and security breaches, and the concentration of data, and thus power, by a handful of tech companies, has aroused totally reasonable fears about privacy. There's a general feeling emerging in some circles of developers that, from a technical perspective, the internet just doesn't function as well as it ought to.
After all, few of its original designers could have predicted how useful and ubiquitous the internet would become, or of what it would someday be asked to do. Perhaps, knowing what we know now, we could re-engineer it from the bottom up, so it not only safeguards privacy but also functions faster and more efficiently.
That's exactly what Eskil Steenberg, an independent software developer and Intel® Innovator from Stockholm, is trying to do. His new project, Unravel, is essentially a better, more decentralized internet, with a respect for privacy at its core. Motherboard spoke with him about what a new internet might look like, and how he intends to make it so.
MOTHEBROARD: Can you tell us a bit about yourself?
STEENBERG: I'm a highschool dropout and self-taught programmer. I mostly work with graphics and networks. I made a network protocol called Verse, which allows 3D applications to communicate in real time. But I'm mostly known for a procedural adventure game I made called Love.
So what's your new project Unravel all about?
The goal for Unravel is to re-engineer the internet, because I don't think it's working the way it should. Most internet today is using HTTP and DNS, and that has created a very centralized web, where a few companies have too much control. I want to build a much more decentralized internet, where basically everything you can do on the major sites you can do from your computer, so you don't need a cloud. If you want to talk to me, we'll have an encrypted link and won't have to go through an intermediary. You shouldn't have to go to Google to send an email.
Is this about functionality or privacy?
All of it, actually. HTTP, for instance, is embarrassingly slow. Like if I want to send you a gigabyte of data, that's really hard on the internet. It should be really easy. It should automatically solve the problem in the best possible way. For instance, if I send you an ID for a piece of data that millions of people already have, like a Gangnam Style video, you should be able to get parts from anyone that has the same data. That would mean you don't need YouTube anymore, because everybody can distribute anything.
That also means that no one controls it. No one can censor it. No one is responsible for it, which is a big issue with all cloud-based things. Google has to have rules for what you can upload to their servers because they're responsible for disseminating it. That means they de facto have to first claim some ownership of your data, because if they distribute it to someone else, you can sue them for copyright.
But isn't having those intermediaries a necessary evil, just to make everything work?
I don't believe that. I believe that I have the technical know-how to remove those necessities from the equation.
Would that make the internet less user-friendly? Would each person need some kind of technical expertise, or would it be easy as pulling up a browser as we do now?
Yes, it's designed to be just as simple as pulling up a browser. One of the big problems with encryption is that currently it's something you have to add on to the internet. You can run Tor, for instance, but you have to know how to run Tor. Encryption should just be in the backbone, operating invisibly. With Unravel it will be built in. You cannot avoid it. It's not optional. It's secure, period.
Is this a case of re-assembling pre-existing protocols?
No, everything is being written from scratch. It's all in C, so it's very low level. If we look at it from a technological point of view, what's so fun about this project is you have to imagine infinite uses. So if you're Tim Berners-Lee when he designed the first web server, he could not have imagined what we have now. That's a lot of problems we have with the web: It wasn't designed to do all the things it's now doing. Today we know way more, so we can design it much better.
On the other hand, there is going to be more stuff that's coming, things we haven't thought of yet. One of the major things I want Unravel to do, for instance, is support really, really big data, and make that work well whether you're storing one byte or 50 terabytes. It makes everything very complicated under the hood.
So how do you plan to do that?
Say you have a file that is one kilobyte large, and you want to insert a byte in the middle of it. That's trivial; you can just make a new buffer that is one kilobyte + one byte and just copy over the data. That's fast, right? But if you have a terabyte of data, you don't want to copy that, because that's going to be really slow. You want to somehow say this is the old data but with this extra thing in it.
That's what interests me most about the work I'm doing with Intel right now. Intel is releasing a new platform called Knights Landing, which is for supercomputing. It comes out this week. It's almost like a new CPU but it's got 72 cores and can run 288 threads simultaneously. That is a very rare thing.
What kinds of work are these suped-up new computers doing?
Mostly high-performance computing for researchers. Lots of climate change, wind simulation, material sciences, physics kinds of stuff. Big problems, basically. Now Intel is making a desktop version, which is pretty amazing.
How does it change things?
Intel has a line of co-processors called Intel® Xeon Phi™, which looks like graphics cards that you put in your computer, and then you have a bunch of CPUs, basically. The previous version you had 60 cores on it. What you would do is you would write a program on your normal computer, then send it to this extra hardware, which computes it and reads back the results. So it was sort of a co-processor. That was pretty cool, but it's kind of a special case: You have to have a problem you can send over. Supercomputing people love it, but it doesn't really matter to anyone else.
Now Knights Landing is a new version has more cores and more threads, so it's much faster, and it also has much faster memory. You can plug it straight into the motherboard, and it's totally a normal computer, so you can install Windows or Linux or whatever. The only difference is that when you run control-alt-delete and see how many cores you have, the bar just doesn't end, because you have 266 of them, instead of like 8. So if you're a programmer you can just thread until you go crazy. It's a programmer's dream, because you can prepare for the future.
Does Unravel rely on this?
The idea is that Unravel needs to run on your "smart" doorbell and on a supercomputer. It needs to be incredibly scalable. In order to test that, you need to have a range of hardwares. It runs on this tiny little embedded thing—great, I've proven that. Now I can run it on this supercomputer, thanks to Knights Landing.
What other features do you have in mind for Unravel?
Let's say the president writes an article and I want to comment on it. But I can't because there's no comment field on the website. Well, I can comment on the URL, which means that anyone who goes to the URL and who follows me will get what I said. And it's not stored on the same website as the president's speech, so it can't be expunged. We can all share something about something else, without having to have the agreement of the person or thing we're talking about, because we're not using that as a platform. Everything in the universe becomes comment-able. You can attach information to any information you want, which creates a web of information, a massive network of things with metadata.
Now this has some implications. If I send you a comment that is incredibly racist, and I make an edit to change it—should I be able to do that? On one hand, having the ability to edit things is really useful, right? On the other hand, maybe it's important that you have the evidence of that really racist thing I said. That's one of the reasons the entire system has to be regressable, so that any change to the data can be undone. It should be built into the system from the deepest level. Now you might say you don't care about the old data, that you don't want 50 versions of this thing, just the latest—that's fine. But the power of actually deciding for yourself is really important.
To me it's really important the users are in charge. What I'm not doing is trying to make an internet where everybody is nice, or where there's no racism, or whatever. I'm not into building a beautiful world in that way. I'm building a world where people can control what they do. I think that democratizing power is a good idea, but I don't believe it will just be used for good. That's totally naive. But I think that what we have now is stopping innovation, and it's stopping people from expressing themselves.
Beyond the technical problems, why do you feel compelled to go through all the trouble?
What I realized as a developer was that there is some kid in some dictatorship country that goes out and protests. He's facing people with at least rubber bullets. If he's unlucky, real bullets. That kid has a very small chance of effecting change, and is really risking a huge amount for that very small chance. I sit in a very privileged part of the world, and I happen to have the technical know-how to give that kid freedom of speech, and the risks I have are negligible. I feel like I have an obligation to try.
I don't know if this project is going to succeed. I think I have a 70-80% chance of actually writing the technical bits, and then maybe a 5% chance of this actually taking off and getting a big user base. That's a way better chance that that kid has who's facing the tear gas. And if there are twenty different people trying to re-engineer the internet and fix these problems, then at least one of us should make it. To me that's very worthwhile. That's a project I want to dedicate myself to.
The Intel® Developer Zone offers tools and how-to information to enable cross-platform app development through platform and technology information, code samples, and peer expertise in order to help developers innovate and succeed. Join communities for the Internet of Things, Android*, Intel® RealSense™ Technology, Modern Code and Game Dev to download tools, access dev kits, share ideas with like-minded developers, and participate in hackathons, contests, roadshows, and local events.