Skip to content
This repository has been archived by the owner on Jul 3, 2023. It is now read-only.

RFC LinkedIn Import #35

Open
berkes opened this issue Feb 17, 2021 · 0 comments
Open

RFC LinkedIn Import #35

berkes opened this issue Feb 17, 2021 · 0 comments
Labels
rfc Feature Requests, Proposals, ideas and concepts

Comments

@berkes
Copy link
Contributor

berkes commented Feb 17, 2021

Summary

Import all contacts or even the full profile from LinkedIn.

Basic example

As a LinkedIn user
When I try out Flockingbird
And I have registered on flockingbird
Then I want to get an option to import my linkedIn
So that I don't need to fill all my details and contacts again

Motivation

Importing details from another platform allows more freedom of movement.
Importing contacts from LinkedIn lowers the friction for moving.
Importing profile details from data already provided at LinkedIn increases the amount of well-filled profiles on the network.

Detailed design

Importing can be done in two ways. We can choose either one, or both.

LinkedIn offers a data takeout, as Get a copy of your data. This a requirement under GDPR. LinkedIn offers a ZIP with XML, json and other data files. We could extract those and parse them. A user would then merely upload the data takeout file.

LinkedIn has an API that offers some basic data endpoints. It allows to fetch all contacts of a user, and basic details from a user. The API appears to offer far less data than the data takeout. But more research on this is required.

The first option allows us to parse a rich data takeout. It will need to discard quite some data, such as posts, videos, images and such. It requires a detailed manual on how to achieve this. And it requires us to react to changes in this takeout: there seems no contract in what is provided and how it is provided.

The second option requires an Oauth flow to get a token for a user and approach the API on behalf of that user.

Both would be one-time options. Any uploads and/or authentication tokens and/or unused data should be discarded on finishing the import. Once imported, any changes made at LinkedIn are ignored (not synched).

See also #34 for other importing.

Please reference Domain
Model (TODO write)

terminology for existing terms and usage.

Drawbacks

Why should we not do this? Please consider:

  • parsing the data takeout will break whenever LinkedIn changes their data files.
  • unpacking the data file (zip) is potentially dangerous due to zip-bombing. This needs tight heuristics to ensure we are getting the right data before parsing.
  • fetching the API requires building a client for the API.
  • fetching via the API requires instance owners to setup an API key.
  • copyright is complex. We must make sure we are allowed to read and copy the data.
  • API or Takeout Terms and Conditions are unknown and we need more research into this.
  • It could be part of a more generic import area where other formats can be imported too.

Importing via the API requires setup. And requires adhering to T&C.
Importing via an uploaded file is fragile.

Alternatives

Scraping public data from Linkedin Is possible as well. This is even more fragile but can be offloaded to a dedicated service. Unkown is whether this is allowed under Copyright laws.

Adoption strategy

Early on in the onboarding flow, we need to point people towards ability to import.

How we teach this

A clear menu option and a clear actionable in the unfilled bio to import should point users in this direction.

Unresolved questions

  • Copyright on data provided by LinkedIn
  • T&C on using the API
  • T&C on using data takeouts.
  • Format and contents of takeouts
  • Exact data offered by API.

Footnotes and references


This RFC template is modified from the React RFC
template

@berkes berkes added the rfc Feature Requests, Proposals, ideas and concepts label Feb 17, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
rfc Feature Requests, Proposals, ideas and concepts
Projects
None yet
Development

No branches or pull requests

1 participant