Tue 2 Oct 2012 10:43PM

Integrate Facebook and Twitter friend search

BT Brandon Trussell Public Seen by 122


Looking for a way for Diaspora to be able to find the friends a user has, who are using known Diaspora accounts, based on their friendships from other social networks such as Facebook and Twitter.

This is akin to what Quora has done, where it tells you about friends you have from there other networks, which are already using Quora.


I began looking into Diaspora in July. Since then (not a very small amount of time), I have found no one I know in real life on Diaspora. I asked some people directly and received "no" responses. But also, D* doesn't allow me to search for friends using any parameters other than D* id. For a very small network, this is bad because D* ids are rare, resulting in not being able to find anyone on the network. 3 months later I have exactly 2 contacts on D*, one of which is Jonne, and the other a fellow I begged to add me from freenode/#diaspora.

The Code

The following is full of noob assumptions, written solely to get the discussion ball rolling.

Brief research shows me, since D* users sign in using custom D* accounts (not FB o-auth, etc), we'd have to compare something like email addresses to match against that same identifier that the other network has stored.

Part of the question is, what servers will D* search for these users on? Perhaps a list of large pods can be offered to search, maybe in addition to the name of pods that the user supplies.

Implementation? (facebook scenario)
I imagine the user's pod will query the list of search pods for a list of fb ids. The queried pods would have to search its list of users for those ids (the user would have had to link their account already) and return the results. Requires changes on both ends, as pods only search for D* user ids when web-fingered currently. So far, doesn't look like FB api allows getting the list email addresses of friends.


tortoise Tue 2 Oct 2012 10:59PM

I'd say that this is a bit of a loaded issue. I'm not sure... how do others feel about it?

I mean if we are trying to take down FB (if that is even possible), I suppose we'd want to link to FB users or try to entice them to move, but I'm not sure that will work (if that is the motivation).

If it is just to link to friends on FB/Twitter/Google, there is a distinct possibility that it is building a bridge to nowhere, because FB has cut off linking to outside FB, as has Twitter. Is that a smart thing to do? to waste developer muscle that way?

So that is one point.

The second point is, does Diaspora become less private by hooking up to these other SN's? I don't know. I'm just asking.

My thought has always been that with Diaspora, a pod is for people to use on their own without being NECESSARILY linked to a corporate presence, such as FB, Google, Twitter.

My 2¢...


Jason Robinson Wed 3 Oct 2012 6:19AM

Definitely it should be easier to search for friends. The technical challenge comes from the federated nature of D*. Querying everything from large pods would only make the large pods swamped.

Would love to see something like this happen but I think it would have to somehow be implemented via some other solution than the pods themselves. Maybe someone will set up a service where users can with a single button add their D* ID linking it to their FB id and pods can query that then. Plus then it would be purely voluntary and as such no ones privacy would be hurt.


Rasmus Fuhse Wed 3 Oct 2012 6:20AM

I nice proposal. But I think, the main problem is that Diaspora* doesn't have a reliable search-engine. If I were able to ask my friends to register at any pod and simply search for my name, it would be a great benefit for the network. Until now it happened a lot of times that friends of mine registered and searched for some friends they knew that they should be in Diaspora* somewhere, but they weren't able to find them and thus frustratedly went away from Diaspora*. The current search doesn't even find all of the contacts my pod knows!

Having a facebook connection is not bad - not in the matter of privacy, but I guess it would solve the problem from the wrong direction if you know what I am trying to say.


Jonne Haß Wed 3 Oct 2012 9:40AM

Disclaimer: Personal opinion here.

For me the real issue are wrong expectations. Diaspora isn't FB. It's not Twitter. It's neither a replacement. Never meant to be one. Diaspora wants to offer a SN'ish experience to PGP encrypted E-Mail, basically. Enriching the communication with people you already know. It's not so much about self representation or new people discovery. The centralized approach will just always beat us there. If we aim to deliver a SN experience like Facebook while being distributed and privacy aware we can do nothing but just fail. It doesn't work. Diaspora is about saying what you can't say on other platforms because you don't know if someone else will accidentally see it because you have no control over your data. But again it's not a replacement.

Just my two cents, other devs might think different.


[deactivated account] Wed 3 Oct 2012 9:54AM

I guess Friendica has such a feature... but it was terribly implemented and has no real overvalue, so for the next time focussing on primary issues should be more important.


Tom Scott Wed 3 Oct 2012 1:35PM

I think we should add it because creating accounts with Facebook and Twitter is easy, secure, and only trackable for those who opt-in, i.e., those who connect their D* accounts to these networks. It's not very difficult...we already have the capabilities to link D* accounts with FB and Twitter accounts, all we need is to gain permission to search the friend lists of these accounts.

This is not a security concern, but I don't believe it's feasible for federation. It would simply take too long to perform a search of the entire D* network. Also, unless Facebook and Twitter adds in a "Diaspora Handle" field into their profiles, or we can find some other secure way of obtaining one's primary D* handle from these social networks, I don't believe something like this is feasible.

The only way we could really do this with performance in mind would be to only search on the local pod, and query both FB and Twitter by email address. This is, unfortunately, a bit of a half-assed attempt, so I'm not 100% behind doing it this way.


goob Wed 3 Oct 2012 2:37PM

I'm not sure I understand the proposal, but if I'm reading it correctly, it sounds like a massive privacy leak of the sort which has made Facebook infamous and which Diaspora was set up to avoid.

I definitely don't think anything should be implemented which provides people's Diaspora handles, or indeed any user data, to other networks such as Facebook on a 'these are people I (might) know' basis. The way Facebook encourages new users to upload their entire contacts list to its database is one of the most egregious breaches of privacy around. We don't want Diaspora to be any part of that or seek to replicate it in any way.

You're right in that searching for users by name is not very good within Diaspora, but this is something which will, I expect, improve greatly when federation of data between pods is sorted out, and that is one of the priorities for development at the moment.

So I think it's a case of accepting that for the moment, with Diaspora only at alpha stage, this function isn't going to be very good, but it should improve a lot when the federation issues are resolved.

As a workaround for the time being, if you're searching for people who are already friends, I'd suggest right-clicking on your name in the stream in Diaspora and sending the link to your friends by email. They can then click that link to go straight to your profile page, and can then connect with you (if they wish).

Of course, one other thing to consider is that not that many people are using Diaspora at the moment, so it might well be that only one or two of your friends have Diaspora accounts at the moment. This is certainly true in my case, and I have very few contacts.

I think it's best to view Diaspora as the building blocks of a future, and hopefully excellent, social network, rather than as a working (but not very well) social network at present.

That's my two pfennigs worth.


goob Wed 3 Oct 2012 2:39PM

ps: I totally agree with and support Jonne's words: thinking as Diaspora as a replacement for one of the established centralised social networks is a mistake and a route to failure. Diaspora is by nature something different, and it can only succeed if it doesn't try to replicate what Facebook, Twitter and so on do.


Brandon Trussell Wed 3 Oct 2012 4:40PM

I agree with Tom Scott's 1st paragraph and the "this is not a security issue" part.

Regarding performance, the way things work right now, you enter a D* id, the address is parsed to find the pod which hosts the account, and that pod is given a search to run for that id.

Now, if a user wants to search for their FB friends, the list of search pods would be given FB ids to search for. That # of IDs would be far greater, would is a concern, but possibly tolerable. Also, we would want to look into limiting how many pods can be given these queries simultaneously. I want to dispel the idea that any D* data would be given to FB or Twitter however. The search pod would return any local D* accounts which match any of the of 3rd party network IDs.

Regarding the SN nature of the proposal, I'm not seeing a big difference between D* and other SNs. D* is most similar to Google+ (due to the concept of circles) with the exception that you can host & own all your data yourself. + the distributed layout of the network. That said, being able to find friends better on D* would greatly help D* grow. As it stands now, finding people you know on D* is more difficult than any other alternative.

Thinking of google+ reminds me how they find your contacts for you: your gmail contact list. There are APIs to interface with that data also. As well as yahoo I believe. So beginning to integrate that data would greatly help making connections between D* users...


goob Wed 3 Oct 2012 5:47PM

I'm strongly against the facility to upload your contacts list, because this is a way of giving other people's data away without their permission. Even if Diaspora wasn't to store this data and use it to contact these people, as Facebook and Google+ do, it would be encouraging bad practice in people. I think in everything we do in Diaspora, it should be encouraging people to think about the security and privacy of other people as well as themselves.

Convenience is good, but at what cost?

I think a lot of the problems being raised about finding people will be solved once the core problems over federation of data between pods had been solved. And again, we should be focusing on solving the technical problems of the network before thinking of publicising it to others as a functioning network. We are testers, helping to get Diaspora ready to be used by the wider public.
Another tuppence.


Jason Robinson Wed 3 Oct 2012 6:20PM

I don't think anyone is talking about uploading anyones contacts anywhere :P Any data should always be opt-in and afaik all the discussion here has been exactly that - everything optional.


tortoise Thu 4 Oct 2012 11:50PM

What is the real hope for linking up to friends on twitter and FB? Is it convenience? These are corporations who are out to make a profit. The do not care about privacy. Just by posting on either of those networks makes the content theirs to do with what they want. Just because my friends are stupid enough to have accounts on those networks should not be a motivation for me to link up to them from D. I'm really missing the point of doing that.

Sorry for being a broken record, but I did mention this already: 3rd parties that have connected to them, and FB and Twitter have a history of cutting 3rd parties off for whatever reason. Given that that has happened, why should D development efforts spend the time doing that just to have it potentially thrown away?

Next, I'm not sure about this, and maybe this is a teeny bit off topic, but what's to keep FB (or any other wayward leaning pod owner) from setting up a Diaspora pod, tweaking it and sucking up all the data from federation as a "man in the middle"? Is that possible? Maybe I'm not articulating it correctly, but it does confuse me about federating with SN's that are corporate entities. And if a D* SN does take off in a meaningful way, how do we know that the network isn't being compromised by a corporate presence or corporate pressures? It may not be an issue at the moment, but what are we doing to safeguard it?

I realize this may be a naive question, in that I may not understand how federation is supposed to work.


goob Fri 5 Oct 2012 11:20AM

setting up a Diaspora pod, tweaking it and sucking up all the data from federation as a "man in the middle"?

I don't think they could get much from federation: only public posts, and any posts shared with users on the 'dodgy pod', but not much more as D* is careful with what is shared during federation (just the bare minimum, I think). However, the dodgy podmin could certainly harvest data from people who signed up to that pod. It's an issue which does need to be addressed during this development stage, as there's potential for fraud and identity theft on a large scale. So far it has just been done on trust, and that's fine while D is very small, as criminals are unlikely to bother with it. But if it does take off, you can guarantee that crims will take an interest.


Brandon Trussell Fri 5 Oct 2012 10:10PM

The goal is to find the D* accounts of the people you have friended on other networks. The motivation of adding them is not that they're on network X which is so big and nice. The motivation is that they're a friend you would like to communicate with securely, using Diaspora, and therefore you need their D* id in order to communicate with them. Currently, that is very hard to do. I have hundreds of "friends" on Facebook but have no means of finding out their D* ids. Other than manually asking each and every one of them individually. This idea is to automate that process, much the way many other sites do today.

This proposal does not contain anything about sending D* data to another network. The only interaction with other networks would be requesting (from that network to D*) the friend list of the D* user which is looking for D* friends. Therefore, the privacy policies of 3rd party networks is irrelevant, because we do not tell them anything. No D* friend lists and no D* posts.

To reiterate, the friend list would be sent to pods that you select to find friends on. It might even be possible to exclude the D* id of the user performing the search. That way there is no user attached to this list of search terms, as some added privacy…

These other social networks block access to their APIs very rarely. The only time I know of it happening is FB blocked Twitter posts going to Facebook, for understandable reasons (because twitter is the closest thing in size to Facebook). Diaspora is nowhere near as big and nowhere near as big a threat. By the time that becomes untrue, this feature will no longer be required.

As to the cost of dedicating dev time & effort to this idea, it shouldn't be hard for someone who knows the code well, thanks partially to the rapid development tools that are used. I'm almost to the point where I could write it. As Tom Scott said, the code to get permission to access these other networks is already in D*. This is basically an enhancement to Webfinger, with a new rails view to do the search, as pod info will be needed…


Brandon Trussell Fri 5 Oct 2012 10:16PM

I like Rasmus Fuhse's comment also. The search is a problem also. I think this and that could and should be fixed. This would help find people that you might not remember to search for specifically, whereas fixing search would help for those who do not have data on other social network to help them get connected on Diaspora (or who just choose not to use that data).


Poll Created Fri 5 Oct 2012 10:45PM

To allow webfinger search to find users based on their ID from other networks (opt-in only) Closed Fri 5 Oct 2012 10:46PM

This does NOT propose sending any D* data to third party networks. Diaspora already allows linking your D* account to your account on other networks. This is to allow search to work if you do not know the D* id you are looking for. Search can find your friends, if you and your friend allow it, by searching the user database of Diaspora pods for the IDs that you specify.

This solves the problem of needing to add friends that you do not know the D* id of. How would you know their D* id if you don't already have them added? This quickly goes through contact lists that you already have populated and finds as best as possible those users on Diaspora (through opt-in parameters).


Results Option % of points Voters
Agree 0% 0  
Abstain 0% 0  
Disagree 0% 0  
Block 0% 0  

0 of 263 people have voted (0%)


Poll Created Fri 5 Oct 2012 10:46PM

To allow webfinger search to find users based on their ID from other networks (opt-in only) Closed Mon 15 Oct 2012 2:57AM

This does NOT propose sending any D* data to third party networks. Diaspora already allows linking your D* account to your account on other networks. This is to allow search to work if you do not know the D* id you are looking for. Search can find your friends, if you and your friend allow it, by searching the user database of Diaspora pods for the IDs that you specify.

This solves the problem of needing to add friends that you do not know the D* id of. How would you know their D* id if you don't already have them added? This quickly goes through contact lists that you already have populated and finds as best as possible those users on Diaspora (through opt-in parameters).


Results Option % of points Voters
Agree 46.2% 6 JR RF BT T KK C
Abstain 46.2% 6 JV S BO JH S AS
Disagree 0.0% 0  
Block 7.7% 1 G

13 of 270 people have voted (4%)


Jonne Haß
Fri 5 Oct 2012 10:49PM

Won't work over Webfinger and I won't put any effort in it personally but I also won't block it if it's contributed in a clean and proper way.


Brandon Trussell
Fri 5 Oct 2012 10:49PM

Greatly eases the difficulty involved with migrating to Diaspora and making the network useful to the user immediately.


Jason Robinson
Fri 5 Oct 2012 10:56PM

Well I would definitely like this to be implemented though of course it depends on the actual technical implementation. But in principle I agree totally as long as everything is opt-in and respecting users privacy.


Kevin Kleinman
Sun 7 Oct 2012 4:44PM

Being able to build a network on Diaspora is important to acclaim critical mass. Facebook and Twitter may be "evil" but if new users find this usable, then they should be able to use these networks to build their new, free social network.


Mon 8 Oct 2012 3:18AM

Need to research privacy implications of this.


Sat 13 Oct 2012 1:33PM

First, is there anyone willing to implement this? If yes, please step forward. If not, we should end this discussion. Second, both the proposal and the criticism is way too vague for a serious discussion. Third, provide some evidence for your claims.


Brandon Trussell Fri 5 Oct 2012 10:51PM

Webfinger should have been omitted from the proposal declaration.


goob Fri 5 Oct 2012 11:04PM

Did you know that you can search for people on D* by name? I just typed your name in to the search field and your account came up immediately, even though you're on a completely different pod and we've never interacted.

I don't think the answer to the current issues with searching for people is in any way to facilitate the sending of other people's user data without their knowledge or permission, whether those data are gleaned from a database held on D* or on another network. That is, in my understanding, completely against what D* is all about, and I'm completely against it. The answer is to sort out the issues with federation - when those are sorted out, a lot of the issues you mention will disappear.

Compare Facebook. There are two ways of searching for someone: by name, with no other filters possible, or by uploading your contacts list, containing the personal data of all sorts of people who haven't given you permission to do this, and some of whom might never want any sort of interaction with Facebook. If you eliminate the latter as being absolutely against privacy codes, then all you have is a very poor search-by-name facility, especially given the number of members on Facebook. This search-by-name is already available on D* (albeit not perfectly because of the federation issues currently facing the network), and could be improved by allowing people to search on various filters based on information that each person has made public in their profile (none of this exists at the moment, but could be built in).

So if you're searching for a Jane Smith who lives in Paris and is interested in Linux and tennis, you could search for her name and put in one of those other items as a filter: if she has made the information public in her profile, it can be used to narrow down the search.

The answer to the problems you raise is to improve the methods of searching based on what each person has shared publicly about themselves on D* and which is federated to all pods; the answer is not to go down the route of misappropriating other people's personal data as Facebook and other networks have done. It might be convenient for you as a user, but it's bad, bad, bad.

I'm afraid you'll never get me to support this.


Brandon Trussell Fri 5 Oct 2012 11:18PM

Goob is right, in that, you should not be able to be found by any criteria that you have not deemed to be public. This should be very explicit. i.e.; not even assuming because you cross post with another network, that you want to be found using your id from that network.

So I think that is doable. Pods should not return results of users that have not enabled they wish to be found using that criteria.

As stated before, I think this is a little different from the mentioned search problem. If I search for 10 people and find no one (this happened, just because the network is so small), I may give up. If I can search for my friends without manually entering each one, I'm more likely to find someone to use Diaspora with.


Florian Staudacher Sat 6 Oct 2012 9:39AM

maybe a stupid question, but what keeps anyone from publicly (or 'limited to contacts') announcing your D* presence on FB or Twitter to your friends and letting them add you?
Sharing your D*id like that won't be anything different than someone stumbling over your profile by other means (public posts, hashtags, name search...).

ps: so far we have collected 4 cents and 2 pfennige in this discussion


goob Sat 6 Oct 2012 2:05PM

My solution to the 'contacting lots of people I already know to find out whether they are on D* and if so what their ID is' issue, as I stated before, would be to send my contacts an email asking them. You could place a link to your D* profile page in the email so that people can click on it to find you and then can start sharing with you. There's already a link to an invitation URL on joindiaspora.com which can be sent by email - not that an invitation is needed any more, but it's another way to get people you know to connect with you on D*, or at least to let them know that you are on D* and want to connect with them.

Or, as Florian suggests, give a link to your D* profile to your contacts on FB, Twitter, etc.

I think it's far better practice (from the point of view of privacy and so on) to give out your details to people you wish to contact, rather than uploading or entering the contact details of people who may not wish this to be done.

I honestly don't think this is an issue which needs coding or any feature built in. The problems Brandon raises will disappear by and large once (a) federation is sorted out, and (b) more people join the network, which will happen when the fundamental issues such as federation have been sorted out and a proper release version of the software is available.

Florian, can we put the 4 cents and 2 pfennige into D* funds?


Brandon Trussell Sun 7 Oct 2012 5:23PM

Why advertise an D* account to people that have probably never heard of it, or don't think it is worth their time (mass emailing your address book)?

You can post something in Twitter but what is the likelihood the people you want to see it, will see it? Very unlikely actually.

The same goes for Facebook status updates. These messages are usually seen by a small percentage of your contacts. You can put it on your profile but friends would have to manually check that in order to know it was there (very unlikely).

You can send direct messages, but that is manual labor, on the internet medium where scripting / automation is not cutting edge technology. Smart thermostats, automatic headlights porch-lights and sprinklers, ATM machines: all examples of automating that which is possible, through the general opinion that automation is more desirable than manual labor.

Based on what is proposed, no D* account will be shown that has not indicated that it wants to be found (opt-in). It seems no privacy is being violated.


Florian Staudacher Mon 8 Oct 2012 4:34PM

ok, to me it seems the proposal was a little premature, since we don't seem to have reached a point where we can all agree on... or the majority of people who have voted so far really don't care


Jason Robinson Mon 8 Oct 2012 4:45PM

I think if someone draws some more precise technical specs many more of the abstainee's can better judge the proposal.


Flaburgan Tue 9 Oct 2012 9:26AM

tl;dr but just my point of view. I see the diaspora handle as an email. If you know someone IRL, you have to ask him his e-mail, you can't find his e-mail elsewhere. There is no e-mail directory.


Jason Robinson Tue 9 Oct 2012 10:19AM

Flaburgan, on the contrary, there are many directories. Facebook is one :)

IMHO as an opt-in feature people should be able to find other D* users easier, who have also opted-in .. but it all depends on how it is done.


Guilherme Peev dos Santos Tue 2 Jun 2015 8:35PM

Ok, I liked Florian Staudacher's comment on advertising you own D* elsewhere. Based on this I got this idea that I don't really know if it's good or not:
An application (or something) that
1) Share your D* account name in your other social network in your profile, with option of doing it so publically or especifically shared
2) Search for this especific field in yours friend's profile in this other social network.
3) Make a list of the resoults found
4) Create options of searching those D* accounts name inside Diaspora, preferable in a mass way.
5) create options of share/follow those found in D*.

I think this wouldn't be ivasive, beacouse you would only share you D* account name if you choose to use the "app". And you would only finda people that also has shared theier D* account name in their profile too.
Of course, te first one to use the app wouldn't find no one, beacouse he/she would be also the first to share his D* account name in a standardized way. But this could be contorned by making the app run periodically, aways with an option of shuting it down anytime...
That's my suggestion, Hope you enjoy it. And sorry for my bad english.