Interoperability with other social networks

I guess this is something that a lot of you have gave a lot of thought to, but I think it won’t hurt if I bring up this once again.

Namely, I was thinking about how great it would be if we could have one, open and unified standard for decentralized social networks so we could all connect with each other regardless of what social network we actually use.

I thought about developing an open standard for decentralized social networks which would be implemented in all major decentralized networks such as Diaspora*, Friendica and the like. I know that there were some efforts in establishing interoperability with other networks in the past, but that involved a lot of talk between the developers.

What I would like one day to happen is that we have an open standard which precisely defines how data is structured in terms of personal data, posts, comments and all other types of data one might share on a network. Then, I guess it would be much easier to develop interoperability with other networks because we all adhere to a single standard.

I would like to hear the opinions of other group members on this, because I am willing to dedicate my time and knowledge in establishing such a thing. I think it would be really good if Diaspora* would play nice with other networks.


Note: This discussion was imported from Loomio. Click here to view the original discussion.

Right, so there are basically two options: all decentralised social networks build bridges to allow communication between networks, or all decentralised social networks go with one protocol and that will be the end of it. Personally I am all in favour of the last option because it really saves everyone a lot of time and trouble.

Diaspora is big on users. In fact, it is the biggest decentralised social network yet. Friendica is built on PHP, it technically provides all features but it has less users and sucks on consumer experience. And then there’s the brand new tent protocol, which has yet to expose it’s true powers but which has a lot of potential. Oh, and Mike from Friendica is building Red.

If we want the decentralised social web to succeed, projects will have to merge on a decentralisation level. Diaspora sucks at this part and I think Friendica has never dealt with a massive userbase before. Diaspora needs a protocol; Friendica needs adoption to prove its abilities.

It is still early so I cannot really make any judgements but I would say that Tent, while still young, potentially can do a lot better than the other two projects. Its vision lies beyond that of Diaspora and Friendica, in that the tent devs do not build the tools their app needs but instead focus on what their protocol should be able to do and what people may potentially want to do with it. By the sound of it, building a Twitter or Facebook clone is the least interesting thing you can do with tent because it allows for so much more. It is supposed to drive innovation; something that Facebook or any equivalent cannot possibly do from here on.

I may be a little bit biased since I am not very active on Diaspora anymore and I’ve been following tent for a few weeks now but my advice would be to see if their protocol is working as well as they claim it to work. Both Friendica and Diaspora are nothing more than an app; a decentralised Facebook equivalent. They can both exist within tent and by merging with the project on a decentralisation level, we can boost the decentralised web as a whole through tent, instead of boosting app adoption (which frankly doesn’t make sense any longer).

Diaspora and Friendica were both started to lure people away from Facebook and to gather as many people as possible on one app so that a decentralised social web could be build around it. Especially Diaspora was supposed to become a giant spider in a relatively small web. Tent is simply building a sea that needs more fish, whether they be small or big. For me, Diaspora is that big fish.

I totally agree with you.

I think it is a good idea to develop an open standard because all of the decentralized social networks are in their early development, so I guess it shouldn’t be hard to implement a interoperability standard if we make it.

I am willing to engineer an open standard which will be usable regardless of what programming language/platform a social network is built on. Social networks would communicate with each other through some sort of web services, exchange data in XML format or something similar, and most importantly, they should be able to understand each other regardless of what federation protocol they actually use.

I started this discussion to find out what is the general opinion on this, because I don’t want to dedicate my time and infrastructure into something that would end up unnoticed.

I would strongly suggest you sign up at https://tent.is and follow https://daniel.tent.is and https://jonathan.tent.is. These guys are doing exactly what you describe: they are building a decentralised protocol and a few very basic proof-of-concept apps. The protocol is their working field though. Many others have already started developing apps based on the protocol. Apps for iOS, Android, Webapps, libraries in different languages… a lot is happening at the moment and releases are happening as well. For example: these apps allow you to sign in with your tent account: http://essayist.mndj.me/kevinkleinman.tent.is/essay/phc6lq and http://bivou.ac/. This is a wrapper: https://play.google.com/store/apps/details?id=com.jmlares.pitched but real mobile are well on their way. iOS is being beta-tested at the moment and should be released soon.

I trust in their ability to build a better working and documented protocol than the original Diaspora core team and my good friends with little time who are currently shaping up Diaspora. So why not let them sort the decentralisation stuff out while we turn Diaspora into a fantastic app that, with it’s big userbase already, can help dethrone Facebook after all?

Yeah, but Tent still cannot communicate with Diaspora* or any other network. What I would like to do is create an open STANDARD, not a protocol, which would then be implemented in all social networks and protocols so we can all communicate together.

I am sure that guys at Tent are doing a great job, but that stops there - there is no interoperability.

Petar, I think part of the point of Tent is to indeed have an open standard, not just a protocol. They have an open protocol, as well as several example applications to show how it’s done.

Think about it like this: If a few different decentralized socnets all want to be Tent-compatible, then they can all contribute towards the existing protocol, which can evolve into a standard based on the input of these different projects.

Right now, Tent.is is one such instance of Tent, running as an app called TentStatus. It kind of works like a Twitter clone, and it federates with other Tent instances.

Having a good protocol is only half the battle, though. The other half will be restructuring how a pod itself handles the incoming posts from federation, which is easier said than done.

Or we rewrite Diaspora and Friendica as tent apps and thereby instantly turn tent into the de facto standard which will then end the discussion for once and for all… http://xkcd.com/927/

Not trying to be teaching or something but if there is one problem, then it’s that everyone wants to build something which they believe should become the standard and each of those standards is looked down upon as “not suiting our use case” which results in those “standards” never becoming a standard in the first place. Then we have to build more bridges.

Tent’s goal isn’t just to come up with a protocol. They want to standardize what they’ve got and they are very serious about it. So instead of building bridges which require all decentralised networks to collaborate, lets just adopt the most complete and expansive thing out there and build on top of that. We can kill all the poor standards and protocols in favor of something more commonly adopted, which would draw way more developers than a splintered community such as Diasfriendentica. Please remember that there is no competition on the open social web. One project cannot kill another project; it can only kill itself by being too stubborn and too unexperienced. I have seen different projects growing into different directions for the sake of it and none of them had a significant break-through.

I don’t know whether Friendica Mike would be up for that personally, especially with all the work he’s putting into Zot2/RED. It’d be nice to get the Friendica community to talk to the Tent guys, though.

I have no idea what would go into making Diaspora a Tent app, but if it benefits both projects and helps push forward the agenda of decentralized social networking, I’m all for it. As it stands, this thread is intended to be a discussion over the merits of doing it, and what kind of problems we’d have to face, should we choose to do it.

When the discussion is far enough along (need moar commentators up in here!), it’d be good to make a proposal and vote on it as a community, as this is definitely a big deal.

I’m not the right person to talk about technical implementations but I think Diaspora could settle with supporting the standards while building in some translations under the hood. Tent and Diaspora are both very different, or maybe not different enough, to really merge. Both host the user data and both do it differently. I’d probably talk to tent in tent’s native language, though that doesn’t take away the fact that Diaspora has it’s own weird language.

The only way to really merge with tent would be to turn joindiaspora into a tent hosting provider which provides Diaspora on top. That means separating the app from the host and that would be a huge undertaking. So then I’d probably try to apply tent’s rules wherever possible while maintaining workarounds elsewhere. Following people, receiving posts, managing aspects, should all be possible in tent’s language, whereas user@diaspora would probably need an user.diaspora equivalent to make things work.

Gah, it’s so complicated! :3

Maybe a total merge would be overkill at this point, but seeing as we want to put federation into a layer anyway (some kind of hot-pluggable federation backend system might be nice), maybe we just want to be compatible on a federation level?

Of course, it’d be nice to have the benefits of “Log in with Tent” for apps. I guess we’d have to figure out the best strategy to use, and the best point of attack. To me, being Tent-compatible through some refactoring and restructuring may be good enough for now.

I like how Tent allows many kinds of apps on top of the same core tent protocol. As far as I know, the apps don’t even need to be self hosted (a tent app could be an iOS/android app without its own backend), although they do require registration, which might require a homepage at the very least, and possibly a redirect_uri?

Applications can then post to your feed using either the standard formats for maximum interoperability (I think tent.is supports “status” format messages for tweet-like posts when you use the free account, and essay/photo/etc… posts for paid accounts). Or apps can define their own post format to be anything they want.

This is, in my opinion, tent’s “killer feature”. As some have already mentioned, rather than be yet another facebook-like service, tent is a platform and ecosystem on top of which any app could potentially be written.

Although it doesn’t go all the way, this seems like it’s really one step closer towards a Personal Data Store (PDS) future, where app developers like me can take advantage of the user’s existing tent server for some limited cloud storage, instead of having to pay for my own cloud hosting service. Users, on the other hand, get to take control of the data that apps like mine can store - because that PDS may be hosted on their own personal tent server, or else their tent server might have account settings letting them export their app’s isolated storage data or import data exported elsewhere, or to delete that data entirely.

But, now that I think of it, you could always just have a PDS/VRM app on top of tent… Hmmm… interesting…

Anyway, some good questions to ask before we even consider taking the tent route:

  1. Is Diaspora going to be a tent server implementation in and of itself, or just an app? Both?
  2. Currently “Tent” is still under Copyright for Appollic Software, INC to “prevent fragmentation”. It is unclear what this means, because it also states that it is a free and open standard, which seems contradictory to me. They say they’re going to release it under an open license, but I’ve heard that song before.
  3. What features do we lose when we use the standard tent post formats? Can we still do aspects? What about tag following? Likes, reshares? Threaded comments on posts? Can we do this without just creating our own proprietary post format (because of course that wouldn’t be compatible with anyone else).
  4. If we implemented Tent protocol - what would happen to users’ existing posts, aspects, profile, private messages, photos, and so forth?

Isn’t this a human problem more than a technical one? I.e. it’s a case of everyone who is working on open-source social software agreeing on which protocol to adopt, rather than a technical issue. A standard is merely a protocol which enough people have agreed to use, isn’t it?

I don’t know anywhere near enough to make any recommendations about which course of action to take, although it might be best to wait until it becomes clear which protocol is going to work best for Diaspora. By the sounds of it, tent is in fairly early stages of development, and there’s Zot2/RED being developed as well. I’m sure there are a few others.

It would be a shame to nail our colours to one mast too soon and find out, once all the work of making D* compatible with that protocol, that actually it has a lot of security holes which make D* less attractive as a network (or something like that, some big flaw which causes problems).

I’d suggest, for the time being, discussing and voting on whether we should aim for D* to be part of or adopt a standard in the future, when there is one protocol which it is clear will be good enough for D* and open enough to become a standard for all decentralised social interactivity. But not jump on to one particular one too soon, just because it looks promising in the early stages.

Definitely keep an eye on what progress is being made on the various attempts to achieve this, and perhaps support the people working on these; perhaps with donations; perhaps also by talking to them, discussing with them what D* would need their protocol to be in order for it to work and for D* to move onto it, hear from them the issues they’re facing and think how these issues might impact how D* is developed in the future. And that way hopefully speed the time when it’s possible for D* to adopt one of these protocols.

As D*'s code base becomes more modular, it should hopefully be a lot easier to adopt one of these protocols.

It sounds like an excellent idea in principle. I’m all for collaboration rather than competition between projects.

I am not so sure if tent is a good protocol at all. To me a protocol should be a way how different servers can communicate with each other. But tent is even more. It demands from all servers to use special technology like oauth2 or it uses very special urls. A PHP-server that wants to implement the tent-protocol would need mod-rewrite for correct urls for example.

It hat however some very sweet attributes. It’s apps are absolutely nice and seem to work exactly how I would have thought about apps in Diaspora.

But there are some problems in the tent-protocol:

  • It demands special technologies from the implementations, which might be restrictive for different softwares.
  • It has until now almost no userbase. So adapting the protocol wouldn’t do any benefit for Diaspora or any other system that a code-rewriting of the Diaspora-protocol couldn’t do.
  • It is not open source. Yet? Probably yet, but who knows? Right now it is >>impossible<< to implement tent for a FOSS like Diaspora.

The protocol itself might work well, but so does the libertree-protocol or OStatus. Why not implement one of these with a larger userbase? Because of the apps? Okay, but all other protocols could be extended by the same app-infrastructure that tent is planning to have.

For me i would make much more sense to focus on OStatus and make an (optional) privacy extension for that. I like the fact that basically all wordpress installations can be made to full featured OStatus publisher-servers just by adding some plugins. Also I thought most of the protocol is allread implemented. Like salmon, webfinger and actifitystream.

@Good and Rasmus: I agree that we shouldn’t think too lightly about adopting a certain protocol. It would require a lot of work from the Diaspora team and it has to be worth every single minute spent.

What I suggest is to monitor zot and tent to see how they evolve, how they work and how they could work for Diaspora. In the meantime a lot of the legacy mess can be sorted out. Sean has been talking about moving federation into it’s own module for a while now and no matter what we do, making things more modular remains at the top of the current to-do list. Then there’s also things like designing a new single-post-view and cleaning up other views. Tent or zot would be limited to the federation part; anything else that is being done to make Diaspora a better app benefits the app, no matter the protocol.

Here’s the way I see it: over and over again, these different decentralized social projects have been re-inventing the wheel, and for whatever reason, they haven’t done much to communicate cross-project. The few exceptions I can think of are StatusNet, Friendica, and Movim, but there’s way more networks out there.

What I like about Tent is that it’s not just a protocol specification, it’s also an example of how a decentralized app authentication system could work. Although it would be premature to just say “Let’s adopt this!” without further investigation, I think there’s a particularly captivating way that this could play out.

Imagine being able to log in to a web application, with the platform of your choice being your form of authentication. So, you could log in with Diaspora/Friendica/Libertree/whatever, but still have full control over what data is being pulled by the app. Furthermore, you could talk to all these different people on these different platforms and networks. Needless to say, it’s promising, and I think the future of the Open Web could certainly benefit from it.

The main issue I see with this is traction. It’s difficult to get a standard to catch on without projects and people to back it, but I feel that if a lot of decentralized socnets get involved, we could help make a really strong standard. We all have different pieces of the puzzle, and we’ve all dealt with a range of problems, some of them have been shared by multiple projects, others are unique to each one. Either way, I think if we come together, we could actually learn quite a lot.

I’m Skyping with the Tent guys tomorrow, and working on talking to different socnet projects about where they’re at, and if this vision is something they’d like to be a part of in the future.

First, I totally agree that every socnets has to be able to talk between them. I said that a long time ago.

Second, I’m not sure that tent is the perfect answer to that. Tent is something completely new. And as every thing completely new, it is too young to do anything. It will be a lot of secure problems, things we didn’t think about…

So, why don’t we use something which already exist ? Look at the movim project. They build it on the XMPP protocol, already used by a lot of projects (Google and Facebook for chat, but jappix, movim, etc…). We should talk to movim developers.

Third, warning, this is a totally crazy idea : why are we using http ? We already have something really awesome and underestimated : SMTP. Think about it. E-mails are completely decentralized. And the protocol is really old, really mature. It is easy to put security on it with S-Mime or PGP. And… everyone already has an e-mail address. And with Mozilla Persona, log in is really easy.

So, why don’t we built something on an e-mail server ? Just an interface. Kind of webmail. Just a different way to display e-mails. Think about it. Private message ? A simple mail. Message to an aspect ? Everyone of the aspect is in “cc”. Want to mention someone on the message ? He is in “to”. Want to share images, or anything else ? In attachment. Reshare ? This is forward. Your stream is your reception folder, your profile, the send folder.

Everything already exists. Everything works well. You can talk to everyone in the world, everyone has an email. And if he doesn’t use the social interface, he can read the e-mail correctly, he just doesn’t have a beautiful display. You can talk to EVERYONE.

It would be easy to install, too. Because it is only an interface.

The only problem I see is that e-mails send cannot be edited or deleted, so, this can not be implemented in the “network”, but if the users understand that this is just a better way to display e-mails, they will understand that they can’t delete them after sending.

Any standard to be adopted would have to be a FLOSS project, wouldn’t it? Not being free and open-source software would be a deal-breaker, wouldn’t it? At the moment, tent isn’t, but it might become so in the future. But I can’t see it being a good idea to build a FLOSS project on a standard which is proprietary, or not fully free and open.

Would it be worth talking to the people behind other open social net projects such as Libertree, Friendica and so on at this point? If we could jointly discuss:
a) what the thoughts of people behind different projects are about searching for a protocol to adopt jointly as a standard,
b) what requirements their project would have of any protocol in order for it to be adopted by them,
c) and which of the available protocols out there might fit the bill,
it might help a lot towards achieving the ‘human’ side (finding general agreement) of adopting a standard. Not sure if anyone has contacts at other projects or would like to take on this task.

I’d be concerned about using SMTP because it would be very easy to get black-listed as a spammer if mails are sent out to large numbers of recipients, which could lead to the network falling down. Also, my understanding is that in the SMTP protocol, data are ‘pushed’ from the sending server to recipient servers when the originator presses ‘send’. In Diaspora, data are ‘pulled’ by the recipient servers when the user logs in. This latter method means that data are only needed to be transferred when a recipient wants to see messages. This means a lot of data doesn’t need to be transferred, if recipients don’t log in. Apologies for the unclear wording of this, but hopefully you understand my point. Using SMTP would seem to put unnecessary strain on servers and increase traffic. Email is known as a highly inefficient method of sending data in bulk. I may be misunderstanding something about Flaburgan’s proposal, but that’s what comes to mind initially.

This is a good discussion, and exciting.

@Goob : SMTP is certainly not the perfect solution, my point was that maybe we don’t have to invent something new but start by looking at what already exists and works well.

Fair enough - it would definitely be good to discuss all options, and that’s good lateral thinking about SMTP.