SpringAll icon indicating copy to clipboard operation
SpringAll copied to clipboard

User should be able to import their facebook archive

Open diaspora-redmine-github-migration opened this issue 14 years ago • 39 comments

Issue 340 from bugs.joindiaspora.com Created by: ilya On Sun Oct 10 05:43:05 2010

Priority: Normal

Comment by: sofaer On Tue Oct 12 16:49:05 2010

That error doesn't really have anything to do with the feature, it comes from the fact that the Facebook app we made is only usable on our servers, at least until we figure out how to make that work.

If anyone has gotten facebook export rolled out to them, tell us either here or on freenode#diaspora-dev !

Comment by: donpdonp On Wed Oct 13 17:34:53 2010

I see this feature as an option on the user profile menu on the site. Upload the file that comes from facebook and have the diaspora seed process it off-line - adding status updates and photos to the existing account.

The most of people don't want to be a new work after some years uploading photos, liking posts, groups.... in other network. So a script to import from facebook everything and upload here is one of the only ways to get a real change. Import contacts, the email accounts from ours facebook friends, to our D* email account is needed too. I think it is one of the first feature needed in D*

vyktor avatar Dec 10 '11 18:12 vyktor

Edited the title and re-tagged.

sarahmei avatar Jan 10 '12 01:01 sarahmei

+1 on this :)

dokterbob avatar May 17 '12 08:05 dokterbob

I'm definitely interested in seeing this happen

blake6489 avatar May 23 '12 06:05 blake6489

+1 .. Perhaps it should it be possible to add facebook friends as D* contacts, so you can access your friends FB content without using FB?

TurkeyMan avatar Jun 06 '12 22:06 TurkeyMan

is it a live feature? I really like the idea and doesnt seem anybody is doing a service like this.

LDLcorp avatar Jan 13 '13 13:01 LDLcorp

We're currently working on a secure way to migrate your data between pods. Once we're done that, we may consider revisiting this issue as it would encourage Facebook users to migrate all of their data to DIASPORA.

However, I think a more simple task would be to simply allow people to "connect with Facebook" and import a small subset of their data to get started, much like on every other site with a signup page. Importing the whole archive of photos takes time, bandwidth, and isn't trivial, so this task as it stands would be a serious bit of work.

Personally I'd be all in favor of shelving this for now and focusing our attention on allowing users to join DIASPORA via OAuth, so we could have "Sign up with Twitter" or "Sign up with Facebook" buttons on the front page and let users at least get started a little faster.

tubbo avatar Jan 13 '13 18:01 tubbo

I tried to use diaspora again a few days back with 2 friends. We were on different pods, and it seemed the pods didn't synchronise at all, and I couldn't add friends who lived in different pods.

Perhaps I misunderstand the setup, or the distinction between pods, but surely they should seamlessly interact? Making this seamless; adding/interacting with friends from various pods, seems like the single most important thing to get right at this point. Perhaps this is a user error? I googled for an explanation but came up short. As enthusiastic users, it seems to me that we can't even consider to begin using diaspora until this works. It's all moot if I can't interact with my friends...

TurkeyMan avatar Jan 15 '13 18:01 TurkeyMan

Was it a technical error that prevented you from adding your friends? The best and easiest way to add your friends is to put their social handle that appears next to their name on their profile ([email protected]) into the search bar on your pod and hit enter. They should come up in the results, from which you can add them to an Aspect.

If you still can't get it to work, then it is a technical issue worth looking into.

On Tuesday, January 15, 2013, Manu Evans wrote:

I tried to use diaspora again a few days back with 2 friends. We were on different pods, and it seemed the pods didn't synchronise at all, and I couldn't add friends who lived in different pods.

Perhaps I misunderstand the setup, or the distinction between pods, but surely they should seamlessly interact? Making this seamless; adding/interacting with friends from various pods, seems like the single most important thing to get right at this point. Perhaps this is a user error? I googled for an explanation but came up short. As enthusiastic users, it seems to me that we can't even consider to begin using diaspora until this works. It's all moot if I can't interact with my friends...

— Reply to this email directly or view it on GitHubhttps://github.com/diaspora/diaspora/issues/777#issuecomment-12280766.

DeadSuperHero avatar Jan 15 '13 18:01 DeadSuperHero

I just tried to search for myself ([email protected]) from https://s.psychedeli.ca (as [email protected]), and I couldn't find anything. I also didn't see anything that looked like an error in the logs. Is there somewhere else where we keep federation logs so that I wouldn't be able to see it with heroku logs --tail?

On Jan 15, 2013, at 1:43 PM, Sean Tilley [email protected] wrote:

Was it a technical error that prevented you from adding your friends? The best and easiest way to add your friends is to put their social handle that appears next to their name on their profile ([email protected]) into the search bar on your pod and hit enter. They should come up in the results, from which you can add them to an Aspect.

If you still can't get it to work, then it is a technical issue worth looking into.

On Tuesday, January 15, 2013, Manu Evans wrote:

I tried to use diaspora again a few days back with 2 friends. We were on different pods, and it seemed the pods didn't synchronise at all, and I couldn't add friends who lived in different pods.

Perhaps I misunderstand the setup, or the distinction between pods, but surely they should seamlessly interact? Making this seamless; adding/interacting with friends from various pods, seems like the single most important thing to get right at this point. Perhaps this is a user error? I googled for an explanation but came up short. As enthusiastic users, it seems to me that we can't even consider to begin using diaspora until this works. It's all moot if I can't interact with my friends...

— Reply to this email directly or view it on GitHubhttps://github.com/diaspora/diaspora/issues/777#issuecomment-12280766.

— Reply to this email directly or view it on GitHub.

tubbo avatar Jan 15 '13 18:01 tubbo

Ah, perhaps I didn't include @podname... So there's no mechanism where pods will ask neighbouring pods for user resolution, torrent style, when doing a search?

I'll try it again. If this is the fault, then I suppose it is a UI/communication problem. The UI should address this. (We're all professional programmers, and we didn't even think of that ;)

TurkeyMan avatar Jan 15 '13 18:01 TurkeyMan

Tom, if it helps any: when I try to visit your pod (s.psychedeli.ca), I get an error that your security certificate is invalid. Perhaps that's a contributing factor to the problem?

On Tuesday, January 15, 2013, Tom Scott wrote:

I just tried to search for myself ([email protected]<javascript:_e({}, 'cvml', '[email protected]');>) from https://s.psychedeli.ca (as [email protected] <javascript:_e({}, 'cvml', '[email protected]');>), and I couldn't find anything. I also didn't see anything that looked like an error in the logs. Is there somewhere else where we keep federation logs so that I wouldn't be able to see it with heroku logs --tail?

On Jan 15, 2013, at 1:43 PM, Sean Tilley <[email protected]<javascript:_e({}, 'cvml', '[email protected]');>> wrote:

Was it a technical error that prevented you from adding your friends? The best and easiest way to add your friends is to put their social handle that appears next to their name on their profile ([email protected]<javascript:_e({}, 'cvml', '[email protected]');>) into the search bar on your pod and hit enter. They should come up in the results, from which you can add them to an Aspect.

If you still can't get it to work, then it is a technical issue worth looking into.

On Tuesday, January 15, 2013, Manu Evans wrote:

I tried to use diaspora again a few days back with 2 friends. We were on different pods, and it seemed the pods didn't synchronise at all, and I couldn't add friends who lived in different pods.

Perhaps I misunderstand the setup, or the distinction between pods, but surely they should seamlessly interact? Making this seamless; adding/interacting with friends from various pods, seems like the single most important thing to get right at this point. Perhaps this is a user error? I googled for an explanation but came up short. As enthusiastic users, it seems to me that we can't even consider to begin using diaspora until this works. It's all moot if I can't interact with my friends...

— Reply to this email directly or view it on GitHub< https://github.com/diaspora/diaspora/issues/777#issuecomment-12280766>.

— Reply to this email directly or view it on GitHub.

— Reply to this email directly or view it on GitHubhttps://github.com/diaspora/diaspora/issues/777#issuecomment-12282660.

DeadSuperHero avatar Jan 15 '13 18:01 DeadSuperHero

Yeah, I haven't set up a StartSSL cert yet, so I'm pretty sure it's still the stock Heroku self-signed cert. That might be an issue.

For what it's worth, I also logged in to the app using the regular herokuapp hostname (https://diasporatubbo.herokuapp.com/), and didn't get the SSL warning. Alas, the search for '[email protected]' on my personal pod still didn't turn up with any results…

On Jan 15, 2013, at 1:54 PM, Sean Tilley [email protected] wrote:

Tom, if it helps any: when I try to visit your pod (s.psychedeli.ca), I get an error that your security certificate is invalid. Perhaps that's a contributing factor to the problem?

On Tuesday, January 15, 2013, Tom Scott wrote:

I just tried to search for myself ([email protected]<javascript:_e({}, 'cvml', '[email protected]');>) from https://s.psychedeli.ca (as [email protected] <javascript:_e({}, 'cvml', '[email protected]');>), and I couldn't find anything. I also didn't see anything that looked like an error in the logs. Is there somewhere else where we keep federation logs so that I wouldn't be able to see it with heroku logs --tail?

On Jan 15, 2013, at 1:43 PM, Sean Tilley <[email protected]<javascript:_e({}, 'cvml', '[email protected]');>> wrote:

Was it a technical error that prevented you from adding your friends? The best and easiest way to add your friends is to put their social handle that appears next to their name on their profile ([email protected]<javascript:_e({}, 'cvml', '[email protected]');>) into the search bar on your pod and hit enter. They should come up in the results, from which you can add them to an Aspect.

If you still can't get it to work, then it is a technical issue worth looking into.

On Tuesday, January 15, 2013, Manu Evans wrote:

I tried to use diaspora again a few days back with 2 friends. We were on different pods, and it seemed the pods didn't synchronise at all, and I couldn't add friends who lived in different pods.

Perhaps I misunderstand the setup, or the distinction between pods, but surely they should seamlessly interact? Making this seamless; adding/interacting with friends from various pods, seems like the single most important thing to get right at this point. Perhaps this is a user error? I googled for an explanation but came up short. As enthusiastic users, it seems to me that we can't even consider to begin using diaspora until this works. It's all moot if I can't interact with my friends...

— Reply to this email directly or view it on GitHub< https://github.com/diaspora/diaspora/issues/777#issuecomment-12280766>.

— Reply to this email directly or view it on GitHub.

— Reply to this email directly or view it on GitHubhttps://github.com/diaspora/diaspora/issues/777#issuecomment-12282660.

— Reply to this email directly or view it on GitHub.

tubbo avatar Jan 15 '13 18:01 tubbo

@tubbo it took a little longer, but my pod (running the latest and greatest develop branch) was able to find your JD account - I think we shouldn't be using JD as a benchmark ;)

Raven24 avatar Jan 15 '13 20:01 Raven24

@Raven24 what should i use as a benchmark? i just figured "[email protected]" because i knew the account was there and should be findable.

tubbo avatar Jan 15 '13 20:01 tubbo

Could I suggest that, even if it does work when entering a name with the @pod suffix (seems to be some problems?), this is still not really acceptable I don't think. The search feature needs to be able to crawl connected pods and literally search for the user you're trying to find. Lets say my mate is a diaspora user, and I have no idea which pod he lives on (I shouldn't have to, it's not my business... what if he hosts his own pod?), I could never find him without contacting him another way and asking him. This basically defeats the purpose of facebook and facebook-like services. And if he migrates pods while he is present in my friends list? Will my friend record suddenly lose contact with him as he appears to no longer be as the address he was previously at? Or will I be notified of his migration somehow and my friend record updated? A torrent style discovery process should probably exist when searching for users by some public details (name/handle).

TurkeyMan avatar Jan 16 '13 05:01 TurkeyMan

while I agree, that as many parts as possible of the process of user discovery should be automatic, you can't compare Diaspora with Torrent. If anything, the current approach can be compared to email - where you also specify user@server for recipients, since the 'email network' doesn't have any special means of user discovery. That is part of what it means to be decentralized - not every server knows (or needs to know) about every other server. Imagine you set up a fresh pod - how is it supposed to know about remote users, other than by searching them by name and server...

Edit: also, this would mean the network would have to reject duplicate usernames (of all past and present users) - which it can only do, if every server knows about every user, which can't always be guaranteed.

Raven24 avatar Jan 16 '13 09:01 Raven24

@Raven24 search has to be done using the complete handle, but i think we should display a message if nobody is found, like "Have you indicated the server of the contact ? Please respect contact@server syntax"

Flaburgan avatar Jan 16 '13 13:01 Flaburgan

Hmmm, again, pardon my ignorance, I haven't looked into this at all, but this discussion leaves me rather suspect about the way D* manages users at all...

I could respond to particular points, but they just lead to further questions, so perhaps I'll just state how I imagine it would work (if I were writing the software), and you can tear me apart appropriately? :)

This is also waaay off topic aswell, sorry!

If I were writing this software, I would:

  • Not have user handles, this seems a massive mistake to me. A username/nick/handle should be an optional attribute of a profile, and like everything else, may or may not be made public. It should absolutely not be a requirement for user interaction or identification.
  • In it's place, I would assign users a random generated 'userid' upon account creation. This would really just be a hash, and ~36 bits or so would be plenty (~8 char upper case text string).
  • A users friends list would just be a collection of their friends ids, not usernames or full user 'addresses' (as it seems to be now?). The hash is, by nature, not a text string therefore no users are placed under an 'only one account named x per server' restriction, and also not required to have an @pod suffix.
  • The pod would have a single table of all users it KNOWS ABOUT (more on this later). Entries would simply be the userid, and identification of the pod that hosts the user (a transient value that would auto-update if the user migrates). This table would be populated by all users hosted by the pod, and all of their immediate friends.
  • Searching for friends would perform text querying against public user attributes (such as name or handle). But theoretically things like company/country/phone number could also be searched if they are set as public (as you tend to do in facebook to eliminate people with dupe names when searching for friends).

I imagine this would give a good user experience, like facebook. Now the decentralisation problem emerges... what if the pod doesn't know about your friend? (A pod can only possibly perform such a search for users among those that it hosts)

The global user table gives one very interesting bonus statistic to the pod; since many users in the table are hosted elsewhere, it will a) have a record of known 'neighbour' pods (ie, pods containing users friends), and b) know their prominence with respect to 'this' pod, which will vary spatially; different pods will likely be more/less popular in different countries, and the friends lists of users in those countries will reflect such proximity based associations. Ie, the pod that is most likely to host the users friend is known, and can be searched first.

So if a friend can not be located your home pod, the pod will simply forward the request to neighbour pods it knows about via a BFS type mechanism, searching the most prominent/likely neighbours first, and then if the pod exhausts its neighbours, further ask the known neighbours to ask their neighbours...

And (keeping in theme with the this bug), as a final fall back, it should search facebook! ;) .. Friends that reside on facebook should be visible too, you should see their activity, they just won't see yours (unless you are mirroring posts on your own facebook profile)

This is what I meant by the 'torrent' style search, there is no authority, you can only ask neighbours, and ask them to pass on the request if they don't know. I presumed this was how D* worked already.

This may sound expensive, but fortunately, searching is also the activity that is performed the least, people usually add friends via their friends/mutual-associations, and after the first of such an intensive search, the friend, if located, would populate 'your' pod with a new known neighbour who it can talk to directly in he future. The 6 degrees of separation principle should make this reasonably cheap in practise.

Migration would work seamlessly, when you perform a migrate, your pod negotiates with the target pod, supplying it with your profile data, and then simply update its user table entry to point you to your new home. When friends come looking for you (they don't know you migrated), your old pod knows where you moved to, and can inform the 3rd party, who can then update their record too.

The biggest flaw in my theory is when performing a search for a user that does not exist; it may result in a search among every pod in the cloud >_< .. This could conceivably be a large load, but that could be addressed as a separate issue.

So, I'm effectively just talking shit I totally made up, but I'm curious to know what aspects of this already apply to D*, and which would be impossible under the current design? Why is it not done in a way similar to what I describe? What is totally broken with my theoretical design that you guys know and I don't?

PS: Thanks in advance for even talking the time to READ my rubbish! :P

TurkeyMan avatar Jan 16 '13 18:01 TurkeyMan

maybe this is not the right place to chat :speak_no_evil:

prellele avatar Jan 16 '13 21:01 prellele

No, probably not. But since the conversation was already rather OT... ;) Where do you suggest?

TurkeyMan avatar Jan 17 '13 05:01 TurkeyMan

-> http://wiki.diaspora-project.org/wiki/How_We_Communicate ;)

Raven24 avatar Jan 17 '13 12:01 Raven24

Diaspora is not a Facebook substitute, and it's quite clear that this feature is both never going to happen, and would require a large amount of effort to implement and a large amount of effort to maintain as Facebook is unlikely to be helpful.

This issue should be closed.

deutrino avatar Apr 29 '15 03:04 deutrino

I disagree here, it would be very nice to see this feature happens. It's definitely a good argument to help people migrate. The "nobody is working on it" is an argument to close an issue which could be use for half of the open issues.

Flaburgan avatar Apr 30 '15 08:04 Flaburgan

So the basic idea of this issue is to import all facebook posts of a user to diaspora? Are we allowed to do that? @jaywink

svbergerem avatar May 03 '15 09:05 svbergerem

Well, I don't think the API would be suitable, but Facebook provides an export functionality (HTML I think?) which could be used.

Personally I find this quite .... difficult... Considering how d* currently works. I mean, what would we do with the old posts? A new user would have no contacts, so no one would see them. An old user.. would we post out as new posts the imported, say, 10000 posts from the users FB archive? Consider them all being public posts. I probably have 100K status messages on FB. Now how would we treat those?

Personally I'd like this to be closed so it doesn't start gathering any bounty which cannot be given to anyone. Unless someone provides a clear plan for what this issue is really about and how we treat the imported posts, technically. I don't think spamming 100K posts out is something we can do.

jaywink avatar May 03 '15 11:05 jaywink

I was thinking about the HTML archive yeah. Not sure how to deal with post visibility, that's right. Maybe creating a "Facebook" aspect first, I don't know. The interest of the Facebook archive was more the photo album to me. But this doesn't exist yet in diaspora*... I guess there is contacts in it too? No idea what this archive exactly contains now to be honest. I downloaded mine when I closed my account three years ago...

Flaburgan avatar May 03 '15 11:05 Flaburgan

I guess we can keep this open or turn it into a meta issue with clearly separated tasks. But still, before implementing, some spec would be good. I don't like the fact of importing a massive amount of posts and simply "dumping" them out - that would be easy to make but kinda pointless imho and bad for the network..

I think the HTML archive contains "enough", including photos, contacts, etc... But the problem is how to use it. Definitely the API is the wrong way to go and it would be a larger effort + prob require more permissions from FB apps on each pod.

jaywink avatar May 03 '15 11:05 jaywink