« More interviews

#9: Daniel Siders - Tent

26 Nov 2013

Daniel Siders on Tent, a protocol for personal data and communications. How can decentralized standards replace centralized ones like HTTP?



Kindly transcribed by: David Hansen

Francis Irving: Hello! Welcome to Redecentralize, where today we’re interviewing Daniel Siders, who’s one of the founder-architects of the Tent protocol. Hello Daniel.

Daniel Siders: Hi, how are you?

Francis: I’m good, yeah. Tell me about Tent. What is it? What does it do? Who’s it aimed at?

Daniel: So first and foremost, Tent is a protocol, which separates it quite a bit from a lot of the other projects that are out there. It’s not a piece of software. It’s not an application. So it behaves a lot more like email or the web, traditionally. Email is powered by a number of different protocols like IMAP and SMTP. The web is more commonly known as being powered by HTTP.

The difference between a protocol and a piece of software is that a protocol is basically just a single human-readable document. It’s a piece of paper that tells other software developers how they could write a new piece of software that communicates using that protocol. So that’s why Google can wake up one morning and decide they want to create a brand new browser called Chrome, and it’s going to play really well with all of the existing web pages that are out there, and the servers.

So, our perspective was, we wanted to give people a much broader set of options rather than just say, ‘Here’s an application or piece of software. Either you like it and you use it, or you don’t.’ Tent gives software developers the option to create a plethora of different kinds of applications.

Francis: Ok, so from a user’s point of view, what kind of applications would they be?

Daniel: Pretty much anything that you’re using now that revolves around personal data. So it could be something — and I guess communications is the other huge side of it — so, everything from Twitter to Dropbox to Google Docs are the kinds of applications that could be powered by Tent in the future. Basically, Tent gives you personally a single server where all of your data lives, not unlike having an email server, and then secondarily, any variety of applications. So you have applications that create data, store it on the server, and then your Tent server and mine would exchange posts and talk to each other. Those posts could be something like a short microblogging message, like a tweet, or it could be something like the operational transform data that makes up a Google Documents post, that is basically a real-time collaborative document editor.

Francis: Ok, and what kind of people are using it already, for what kind of applications?

Daniel: Right now it’s not unlike a lot of the other distributed social communities that are out there. So it’s been pretty popular with early adopters who want to really get their hands dirty with the nitty-gritty of the protocol. But in general we’ve been working on it for about a year, and the idea is, until we hit 1.0 the API won’t be set in stone. So we’re discouraging people from developing a lot of production-ready applications because we don’t want them to have to go back and rewrite things when there’s a breaking change in the protocol.

Francis: Ok. So in the end, when I’m an end user, will I maybe have my own Tent server or use one that’s hosted for me by an ISP or something?

Daniel: Yeah. So the model is again a lot like email. So probably your ISP or maybe your mobile phone provider might be one company that’s offering you Tent services. I probably have an email account right now with my home ISP, although I’ve never checked it. Similarly, there will probably be free Tent providers who are ad-supported, like Gmail or Yahoo! are today. There will also be paid ones, like say FastMail or Lavabit, that are offering additional security or privacy on top of it. And of course, like any decentralized protocol, anybody could choose to host their own Tent server at home, although we expect to see an ecosystem that looks a lot like email does today, with 90% of users spread across a small number of commercial providers which are mostly free; a long tail of institutions, like universities and corporations that, for security or privacy or economic reasons want to manage their own infrastructure; and then a handful of individual users who, for fun, as a hobby, or for privacy/security or just technical reasons want to host their own Tent server — that of course is always a possibility.

Francis: So how do I identify myself, and indeed my friends or people I want to communicate with?

Daniel: So right now it’s just your Tent entity, or your Tent address — is basically a URL. So the idea was essentially like, I might have danielsiders.com as my personal website and I’m just going to use that as my Tent ID. So if you’re handing out the business card that you’ve got, it’s the same URL probably that you already control and publish.

Francis: So that’s kind of similar to OpenID?

Daniel: Yes. And the big difference — we feel like when OpenID was first promoted there were a number of problems that led to it not being widely adopted. But in particular, using the entity — the URL — didn’t work out as well for them because personal domains hadn’t been widely adopted. If you look today you see a lot of things like the flavors.me and almost everybody I run into in the industry has a personal domain, and we’re much more used to that. You see it on Twitter bios. Whereas a few years ago that wasn’t really as widely spread. So that’s come into the common parlance much more.

Francis: And in terms of storing my data, what form is that kept in? Because it strikes me as noticeably different from say, email, as an email server just stores email, whereas here you’re storing all kinds of data, potentially.

Daniel: So in Tent, virtually everything is a Tent post, which is most directly similar to a desktop file system. So, where you’re looking at posts on Tent would be like files on your computer. And there are post types just like there are file types. And just like on the desktop, any developer can create a new post type. So you start off with a few that, kind of, ship with the operating system, like just .txt files, but then maybe someone comes out with a great document editor that’s, you know, .doc files, and then Photoshop comes along and there’s .psd.

The same thing is true on Tent. So when we initially created it, we threw a few kinds of post types out into the wild for things like microblogging and photo sharing. But when somebody comes along and says, ‘I want to do cloud-backed file sync with Tent,’ they’re going to create a whole new set of post types. From your Tent server’s perspective a post is a post, just like your desktop says a file is a file. OS X or Windows doesn’t need to know so much how to read those files as what applications want to read them, so that when you say I want to open this post, it sends it to the right application. The same model is true for Tent.

Francis: Ok. You’ve been making Tent for quite a while now. Can you tell me what — most technically, what’s been the most interesting thing about making a protocol like this.

Daniel: Sure. So obviously we run into a lot of the same challenges that some of the folks at, for example, like Diaspora have dealt with, with just any of the decentralization problems, so that one question is — how granular do you want to be? The other is, obviously — the big one for all of us is around adoption. But on the technical side, a protocol versus software is really different.

Our perspective is that we have a tremendous amount of flexibility until we reach 1.0, but once we release Tent 1.0 we want to be hands-off and let it sit there for maybe as much as decade, not unlike HTTP. You want that to be done and really solid, and certainly not have any breaking changes for a long time.

So designing in advance when you don’t know what kinds of content people want to store, how they’ll want to share it, that’s a big challenge. And doing it from the perspective of, it’s not a single model with a piece of software that we control and we can just push an update of oh, you know, gosh, we decided to change everything. We don’t have that flexibility. So once we hit 1.0, that protocol document, that specification, is set in stone, and we really have to make sure that we’ve imagined as many classes of possibilities as we can early on.

Francis: So how do you do that? Maybe by comparison to HTTP and things that did or didn’t change in that, or that aren’t used in that.

Daniel: Yeah. So the initial goal was to say we have to look at this from the perspective of being content agnostic. A lot of — and I should say, Tent is not necessarily social in nature. We originally had things like microblogging in mind for Tent, but the idea quickly expanded to include things like Dropbox, and even a lot of enterprise possibilities.

Where we differ from a lot of the other, sort of, distributed — or decentralized — social groups is that we didn’t say we can imagine all the forms of content that exist — there are blogs, and there are microblogs, and there are photos, and there are comments. The reality is open source has done an ok job of cloning a lot of the existing commercial applications, but you want to leapfrog Google and Facebook and Twitter. You want to say, ‘What can’t they conceive of right now?’ Because that’s what we’re going to be using five, ten, fifteen years down the line. And from our perspective, we’ve got to be able to handle that. So basically by saying Tent should be agnostic to content.

Your server shouldn’t need to know in advance what kinds of data you might want to store, whether that’s something like quantified self — here’s every 15 minutes my blood pressure, or whether that’s something like a microblog that we’re very familiar with at this point, or something like a hologram. I mean, who knows what we’re going to want to be sharing. But we say applications want to create arbitrary data, which, in terms of structuring it, we said the posts themselves are JSON, which is a really nice, very common, very accessible structured data format, and they have the option of adding binary attachments, so anything that’s actually a file that you’re uploading would be an attachment, and then the metadata for that file would be in a post, for example. And that combination gives us a tremendous amount of flexibility.

Francis: That’s quite interesting. You brought up one of the reasons people often say they’re doing this decentralization stuff, is because of possibilities. That we’re not really using networks in ways that — to their full possibilities at the moment. We’re quite constrained by the web and by the solutions we’re using. So can you see particular things that things like Tent letting people experiment more with different content types of. . . ?

Daniel: Absolutely. There are a number of areas that we’re particularly interested in, but from a broader perspective, Facebook has positioned themselves on a corporate level as being the social utility, sort of like the electric company. And I think we all recognize, whether we like or dislike the centralized providers of this, that there is a necessity to have a utility, something that is broadly accessible to all of your applications. That’s the communications layer and the social graph layer. Once you have that accessible anywhere with an agnostic set of data formats, you can do some really interesting things.

So I think there’s been some wonderful work done by people at the Harvard Berkman Center, and especially Doc Searls, around the idea of intent casts, which we’re really excited in. There’s a tremendous amount to be done in the area of exchanging bounding boxes or high frequency social transactions. Applications like Loopt, which was one of the first location-based applications pre-smartphone — was really neat. It would tell you if you and I are friends and we both happen to be in Paris at the same time. If we’re within a mile of each other it’ll send us a both a message. That’s really neat, but it’s incredibly problematic from the perspective of, I have to always share my location with the good people at Loopt. Doing something like that in a decentralized ecosystem is challenging, but entirely possible.

So being able to share parts of data with different groups of people and have two-way negotiation gets very interesting. And so, high-frequency programmatic data exchanged. So rather than me saying I’m checking in now, having my location persistently go back to my Tent server, and then my Tent server and yours are exchanging information at high speed, only a small percentage of which actually surfaces in an application that you or I would use.

Francis: Ok. Let’s talk about the issue you raised a bit earlier, which is the big one for all of these projects, which is — how do you plan to get there in terms of adoption?

Daniel: Sure. So from our perspective, there are three classes of applications. Group one you use only alone. It wouldn’t matter if you were the only user of it in the entire world, you’d still be getting the same level of value out of it. So if I play Tetris on my computer, I don’t care if I’m the only Tetris player in the world, I’m still having fun.

The second group are, sort of, small group collaboration. If all of my family members, or all of my classmates, or all of my friends, or all of my coworkers were on it; we’re good, because it’s just about the internal sharing — sharing private family photos or communicating with a small group of people, collaborating around certain files. It doesn’t matter so long as all of us are able to use it. It doesn’t matter if there is one other user, a million, a billion others.

And then, finally, you’ve got that last class of things where they generate tremendous amounts of value proportionate to the number of global users. Most of the ‘social lab’ as we’re familiar with it today falls into that last category. That — as far as we’re concerned, it would be amazing if we ever get to a space where Tent is that, has permeated that much space, but we can’t assume that we’ll ever reach there.

So, number one, the decentralized movement has a lot of fans, but they’re generally people who they’re the only one in their real-life social network who is a fan. So we want to give them a lot of things they can start using today, that it doesn’t matter if anyone else in the world uses. And then from there. . .

Francis: So what kind of things would those be? I mean, the obvious one that strikes me is storing my documents and backing them up because often there’s. . .

Daniel: Well, I’d actually say that something like a cloud-backed file sync, something like a Dropbox or a SkyDrive or an iCloud, actually falls more into that second group, but certainly it does cross the boundaries. So a service like Dropbox is incredibly useful for me alone, but has a ton of added value when my friends, family, coworkers start using it. So then like Backblaze is more really just me, but absolutely that’s something that we’ve been working on, and we’ve had a few alpha releases around that space.

Francis: What are the other ones, you think, that are useful just for one person?

Daniel: So I think that some of the document stuff, but there’s an interesting set of publishing — so blogging, for example, being able to use Tent as sort of your CMS and then render some of that out as a website, as an RSS, but also publish through Tent. So a lot of the things that we do that are universally consumed but are more like, you create a poster, almost, when you publish a website, whereas the data itself needs to be stored somewhere where you have all of your drafts and all of your old comments and your style set — that could live in Tent really well.

A lot of the quantified self stuff is something that there is still really a lot of early adoption around and hasn’t standardized. So I’d love to see a world where all the sensors — like a pedometer or something — that’s syncing back to my Tent server rather than to a proprietary API like Fitbit or Withings, which would open up that space a lot, because right now one of the biggest challenges is, you’ve got the service provider, the UI designer, and the people who are making the hardware all one company. It’s possible to be really good at one of those things, but nobody, even the Jawbones, the Nike, have really nailed all three of those.

So I want like Loren Brichter to able to design the best possible UI for me to visualize my fitness stuff, and I want somebody who’s really good at infrastructure to be providing my Tent server, and I want people who are really good at embedded electronics to be able to make all sorts of different actual devices including a lot of people who just want to hack together some electronics on their own. Currently none of that is really accessible, so if Tent were to provide a single sort of set of APIs to allow everybody from the application developers to the service providers to the device creators to all play together from day one.

Francis: That’s really interesting, because that’s both quite sensitive data and it’s also data where you often want to correlate data from different sources, potentially, to understand...

Daniel: Absolutely.

Francis: That’s quite an interesting case.

Daniel: Yeah. I should also mention that Tent is in many ways, although certainly not entirely, modeled off of Ted Nelson’s Xanadu, and so we adopt a lot of their ideas around how deep linking between content should work. So once you start getting a lot of information in Tent, being able to remix other people’s information becomes very interesting.

So imagine you publish a photo. I could include it in a blog entry of mine without worrying about what your content license is, because all I’m really doing is providing a link to that photo, and then my reader’s applications are then going to load that content from you if you’ve made it available to them. But you might choose not to. You might choose to start charging them for it later on. There’s a tremendous amount of flexibility in how that content is shared and reused.

Francis: Ok, so you’ve got version 1 that you’re working towards. What’s the timescale for that?

Daniel: Sure. So we’ve been working full-time on it for just a little over a year now. We announced it the end of August or September last year. We’re at — 0.4 will be coming out in the next month or so, which is about 60% of the way to 1.0. There’s one more major release after that and then it’s mostly cleanup. Our development process has always been built around application-driven development. We don’t like to make this an entirely academic process. So what we might think in general about what kinds of rules ought to govern the creation of the protocol, we tend to step back and not actually implement anything critical until we or someone else are working on an application that can actually make use of those new features. Otherwise we risk designing something that made a lot of sense intellectually, but very little sense practically.

So I’d say we have about three months of protocol development time and then maybe another couple of months to implement some of that in the reference servers. But we’ll hold off on rolling a lot of that out until there are applications and developers who are making use of them, because otherwise it’s sort of a risky decision to publish something that might need to change later because you conceived of it improperly.

Francis: So it’s probably about a year of that kind of development until it’s stable.

Daniel: I would say by the end of 2014 we will have a very strong 0.9 or have published 1.0. I would say that we’re at a point where there are few breaking changes that are expected. It’s mostly feature addition. So a lot of the more basic applications, everything that needs to be there is there. It’s mostly the more advanced, like internal content search — and the big one we’re holding off on right now is the optimizations between large commercial servers. So say you’re running a Tent hosting company and so am I, and we each have a million users, we obviously want to optimize the amount of traffic that goes between us. So I mean, if email is never done particularly well except on a certain ad hoc, provider-by-provider basis — whereas we have the opportunity to bake that into the protocol this time. But again, we want to wait until there are enough users, enough hosts, enough traffic to make those kinds of decisions.

Francis: So for people watching and want to help out in that next six months’ period, what’s the best way they can get involved and help make this happen?

Daniel: Yeah. So first off, if you’ve got ideas for the kinds of applications that you’d love to see built on generic social APIs, now’s the time to speak up on a mailing list, an IRC, or, best of all would be using Tent — to say, ‘Hey,’ either ‘Make sure that this kind of sharing would be supported,’ or ‘How would an application of this type work using Tent?’ Because the more actual use cases we have in mind, the more likely it is that we will really hit the nail on the head with that generic model.

Francis: Oh, so you almost want people who’ve written particularly interesting applications before and then know about them.

Daniel: Or even somebody — you don’t have to be a developer, but even like ‘I want to be able to do X with my family, with my friends, in my workplace.’ We certainly haven’t thought of all the types of sharing that happen. Obviously we’re coming at this from the perspective of our own experience, and so people with other experiences — some of the most interesting feedback has been from people with certain sets of sensory disabilities or people who have very, very different lifestyles than we do, because we can often presume other people think the way we do when that’s not the case. So just people from a variety of backgrounds, that level of diversity is always helpful.

Certainly anybody on the software development side who wants to help out with reference implementation or make their own Tent apps are always welcome, although we do put a warning label on saying ‘Everything is subject to change,’ so this is not the time to make, you know, the next huge, world-taking-over app with Tent because the rug might get pulled out from under you in the short term.

And then of course, anybody who’s just interested in checking it out, now is a great time to stop by, whether you want to help with things like documentation and tutorials, or whether you just want to be involved in the conversation.

Francis: Ok. I’ve got to ask this just to end. You’re obviously putting lots of energy into this. You’re very — I loved watching your ‘Office Hours’ videos, it’s like lots of action there. What’s motivating you? What’s keeping you going?

Daniel: So, for us the analogy that we use is — if Facebook or Twitter or Dropbox has a strong parallel to AOL or CompuServe back in the day — the dial-in ISPs, then Tent should be playing the role the World Wide Web did. And so there’s a tremendous amount of value, if you’re one of these big centralized companies, in keeping stuff locked up in a silo. But would you rather own 100% of a small marketplace or 2% of a giant marketplace? So the number of things that we do on the web today that would never have been possible if AOL had remained dominant and the web had never emerged. It would just be really, really boring comparatively.

So we’d much rather see a free market and a lot of really awesome stuff happening. So I have — I think we (all the Tent team) have — a list of these personal applications, we’ve always wanted something that did X, or Y, or Z, and that’s great, but it’s really the stuff that we can’t imagine, the stuff that in 1992, 1995, you’ve been thinking about, gosh, if only there was a more open ecosystem. I mean that’s — we’ve had quite a few decades at this point of open development on the web that’s produced things that couldn’t have been imagined when the web started, let alone when we were just on these proprietary systems.

We’re at a similar age now, and so for me, it’s the possibilities of things we haven’t anticipated yet that will be enabled with this very generic framework for sharing.

Francis: Fantastic! Thanks Daniel. It’s been really good talking to you.

Daniel: Thanks for having me.

Francis: Good luck with Tent!

Daniel: Thank you.