> There must be literally thousands of those projects out there by now. Which brings me back to my original point: is it madness to try?
Here's what I think: Don't blindly start Distributed Social Network Number 1,001. But pick 5 or 10 existing ones that look promising. Try them all. What's good about each one? What sucks?
Then, if one seems like a solid foundation, contribute and build on it. If they all seem too deeply flawed, learn from their innovations and mistakes and join others who are also learning. Explore other possibilities.
I was very excited about Tent.io, and wrote a small app for it, but after a few months began to see serious problems with its design. For now the Forever Project is on hold so I can build a music player. In a month or so I'll probably start thinking about what's next. My email's in my profile if either of you want to continue the conversation (or, if anyone reading has thoughts on this and wants to talk).
> I was very excited about Tent.io, and wrote a small app for it, but after a few months began to see serious problems with its design.
Can you be more specific? I've been thinking about using the Tent protocol as a foundation for my forever project, so I'd be interested in hearing what problems you've had with it.
Sure. There are many technical flaws, but to me, the worst part is how Tent is very opinionated about removing content. The developers deliberately made it difficult. In version 0.2, their changelog[1] casually mentioned a new feature:
> Profile Versioning - Profiles are versioned like posts. Previous versions can be fetched directly or if no version is specified the most recent version is returned.
What this means is if you have a real name or email on your profile, but then edit it out because you are getting stalked, surprise! The info is still there. Anyone who can see your current profile can also see every old version with everything you removed. Tent.io exposed their users by making it impossible to purge revealing info from your profile, unlike every other social networking service I can think of. When I raised concerns, the developers insisted that their users would be to blame for any consequences and basically said if you don't want something available in perpetuity, you shouldn't have put it online in the first place.
Imagine the howls if Facebook gave everyone access to the full versioned history of your profile with no way to turn it off. When we write social software, we are the professionals and we have a responsibility to give users sensible defaults and understandable tools to manage what they disclose. Violating expectations, then blaming the users for not understanding the protocol as well as we do, is unacceptable to me.
But the Tent developers don't see it that way. They're heavily inspired by an old vaporware project called Project Xanadu, which dates to the 1960s, when computers were owned by institutions, not people. Xanadu's rules of operation[2] notably make no allowance for private content. The utopian vision for Tent seems to involve this half-century-old concept, which has no relevance to the real problems people face in their social lives today, basically replacing much of the web. With OAuth2 authentication and notions of private posts haphazardly tacked on. It just doesn't seem realistic. It seems like the Tent.io folks are more interested in hewing to this ideal concept in their minds rather than looking around and solving problems people actually have.
Tent is a cool toy though. Some of the issues you might face playing with it:
There's a lack of robustness. Servers get out of sync (B believes it is following A, but A doesn't list B as a follower), and it's hard to get them back in sync. Message delivery is supposed to be retried if your server is down, but it doesn't seem to work. Discovery is slow, so app developers cache heavily, which defeats the point of discovery in the first place (moving the underlying Tent server, which should be seamless, causes problems). Authentication patterns are complex and ad-hoc depending on the relationship (or lack thereof) between two servers, something the developers plan to fix when they "add crypto" to a later version of the protocol. The server code is messy and sparsely commented. The spec is vague and omits error conditions.
I'm not sure what the next step is for me. I'd like to learn from what Tent does right (fully decentralized, app-agnostic, protocol first) as well as its mistakes. One idea I'm tossing around is building an Instagram-like social network with a Dropbox backend, as a proof of concept — see how far I can get with an unbundled storage service that's already mature.
Being able to remove content is one of the few real advantages centralized social networks have over decentralized ones. Since it would be very hard (actually impossible) for the tent protocol ensure information is deleted once it's left a server, I kind of like their approach of embracing the issue and not trying to paper it over.
I don't. If the hosted service (Tent.is) and reference implementation (tentd) only saved the latest version of a followee's profile, and the spec made it clear this was supposed to happen, we'd have a sensible default that would be respected in most cases. Also, your old profile being available directly from you is much worse than it being available from a follower: it's much easier to find and it proves the content is authentic.
Imagine if you publish a book and you've already sold 10,000 copies, when you realize there's something embarrassing in the book. You're not getting those 10K copies back, but you can at least stop printing more.
> But pick 5 or 10 existing ones that look promising. Try them all. What's good about each one? What sucks?
I'm kind of divided with myself on this one. I did compare some when I first started (there weren't very many of them around), and it was kind of obvious what decisions (mainly pertaining to the protocol itself) I didn't want to replicate. One of the reasons I started my own project was that I couldn't find something to be happy with. And I still can't, but admittedly I'm not looking that hard anymore.
The reason I'm reluctant to just go ahead and gather all the stuff I like from other projects is that contamination is a real problem. Especially in a space that, in my opinion, hasn't been solved yet.
> For now the Forever Project is on hold so I can build a music player.
> There must be literally thousands of those projects out there by now. Which brings me back to my original point: is it madness to try?
Here's what I think: Don't blindly start Distributed Social Network Number 1,001. But pick 5 or 10 existing ones that look promising. Try them all. What's good about each one? What sucks?
Then, if one seems like a solid foundation, contribute and build on it. If they all seem too deeply flawed, learn from their innovations and mistakes and join others who are also learning. Explore other possibilities.
I was very excited about Tent.io, and wrote a small app for it, but after a few months began to see serious problems with its design. For now the Forever Project is on hold so I can build a music player. In a month or so I'll probably start thinking about what's next. My email's in my profile if either of you want to continue the conversation (or, if anyone reading has thoughts on this and wants to talk).