Date post: | 24-Dec-2014 |
Category: |
Business |
Upload: | robert-mao |
View: | 3,767 times |
Download: | 1 times |
OPSN OPSN Open Portable Social NetworkOpen Portable Social Network
Version 0.0.1 Version 0.0.1
2008-1-82008-1-8
http://opsn.net/http://opsn.net/
Robert Mao ([email protected])Robert Mao ([email protected])
TOCTOC
What is OPSNWhat is OPSN
OPSN user casesOPSN user cases
OPSN explained OPSN explained
OPSN APIsOPSN APIs
OPSN prototypeOPSN prototype
What is OPSN?What is OPSN?
OPSN is an open, decentralized, free OPSN is an open, decentralized, free framework for user centric social network framework for user centric social network data management and service providingdata management and service providing
OPSN stands for “OPSN stands for “OOpen pen PPortable ortable SSocial ocial NNetwork”etwork” Openness Openness Data portabilityData portability DecentralizedDecentralized
Why portability matter?Why portability matter?
Best refer to: Best refer to: http://microformats.org/wiki/social-network-http://microformats.org/wiki/social-network-portabilityportability
OPSN is a solution that follow the above OPSN is a solution that follow the above social network portability movementsocial network portability movement
OPSN try the best not to reinvent wheels, OPSN try the best not to reinvent wheels, it adopt work together with many current it adopt work together with many current standards and data formatsstandards and data formats
What OPSN is notWhat OPSN is not
OPSN ONLY provide the data related to thOPSN ONLY provide the data related to the contacts, it e contacts, it Is NOT anything related on user authenticatioIs NOT anything related on user authenticatio
n (OpenID is focused on user authentication, n (OpenID is focused on user authentication, OPSN works well with OpenID)OPSN works well with OpenID)
Is NOT a social aggregator or other social appIs NOT a social aggregator or other social application, though we may implement a simple slication, though we may implement a simple social aggregator in the prototype to demonstraocial aggregator in the prototype to demonstrate an application build on top of OPSN servicete an application build on top of OPSN service
OPSN user casesOPSN user cases
User cases #1User cases #1
Mary have a blog, a flickr account, a linkedin account, a twitter accoMary have a blog, a flickr account, a linkedin account, a twitter account … She have too many “friends” in different places, she has been unt … She have too many “friends” in different places, she has been tired of invite “friends” and approve “friends” requests from time to titired of invite “friends” and approve “friends” requests from time to time, she wish to manage all her contacts in one place that she can vime, she wish to manage all her contacts in one place that she can view, modify, control, backup them with no hassleew, modify, control, backup them with no hassleMary decide to add a OPSN module in her personal website, she imMary decide to add a OPSN module in her personal website, she import all her friends list into her own OPSN service, so she can rule alport all her friends list into her own OPSN service, so she can rule all of them in one placesl of them in one placesMary can easily import contacts from hCard enabled sites, such as tMary can easily import contacts from hCard enabled sites, such as twitter, flickr, she have some difficulty to import from some social netwitter, flickr, she have some difficulty to import from some social networks such as facebookworks such as facebookDuring Mary import the contacts, her OPSN module scan all contactDuring Mary import the contacts, her OPSN module scan all contacts she added to see if it also support OPSN, if it does support OPSN s she added to see if it also support OPSN, if it does support OPSN a notification will be sent automatically to notify that contact he/she ha notification will be sent automatically to notify that contact he/she has been added into Mary’s OPSN module. as been added into Mary’s OPSN module.
User cases #2User cases #2
Mary found a new interesting vertical social network named doppr.cMary found a new interesting vertical social network named doppr.com which support OPSN and oAuth, after she sign in the new servicom which support OPSN and oAuth, after she sign in the new service, she simply fill in her own OPSN URI and ask it import contacts froe, she simply fill in her own OPSN URI and ask it import contacts from OPSNm OPSNThe site redirect her browser to Mary’s own site, Mary’s own site proThe site redirect her browser to Mary’s own site, Mary’s own site prompt mary to enter her credential to sign in, after she sign in, a prommpt mary to enter her credential to sign in, after she sign in, a prompt message ask her if she authorize dopper.com to import some of hpt message ask her if she authorize dopper.com to import some of her data. er data. Mary select part of her profile data, and two groups of her contacts Mary select part of her profile data, and two groups of her contacts which tagged as “friends” and “classmates” and the click “authorize” which tagged as “friends” and “classmates” and the click “authorize” Mary site redirect back her to doppr.com, doppr.com show a progreMary site redirect back her to doppr.com, doppr.com show a progress bar of importing her data, after a few minutes, mary found her pross bar of importing her data, after a few minutes, mary found her profiles data and friends lists she decided to select appeared in doppr.cfiles data and friends lists she decided to select appeared in doppr.com’s service, she even found some of her friends are already in dopom’s service, she even found some of her friends are already in dopper.com and she connected with them automatically. per.com and she connected with them automatically.
User cases #3User cases #3
Mary feel it’s boring to maintain her own web server, she decided to Mary feel it’s boring to maintain her own web server, she decided to host everything outside but keep her own personal URI. host everything outside but keep her own personal URI. Mary found a OPSN service provider named MyOPSN.com, it can hMary found a OPSN service provider named MyOPSN.com, it can host OPSN service for any one for free. Mary sign in MyOPSN with host OPSN service for any one for free. Mary sign in MyOPSN with her OpenID, and then she entered her OPSN URI to ask MyOPSN imer OpenID, and then she entered her OPSN URI to ask MyOPSN import all data from her original OPSN module. port all data from her original OPSN module. Mary was redirect to her own site to authorize, after she authorized tMary was redirect to her own site to authorize, after she authorized the operation, all her previous social network data was migrated to Mhe operation, all her previous social network data was migrated to MyOPSN.com.yOPSN.com.Mary add a delegate link to her personal URI’s output, all her previoMary add a delegate link to her personal URI’s output, all her previous connection which established by her previous OPSN module remus connection which established by her previous OPSN module remain exactly the same with the new OPSN provider. Mary know she cain exactly the same with the new OPSN provider. Mary know she can switch the OPSN service from myOPSN.com at any time without an switch the OPSN service from myOPSN.com at any time without any data loss. any data loss.
OPSN explainedOPSN explained
OPSN OverviewOPSN Overview
DataData User’s contact dataUser’s contact data Contact listContact list
Use tags to group Use tags to group contactscontacts
Not all contacts should Not all contacts should represent a OPSN represent a OPSN endpointendpoint
ServiceService Publish data (based on Publish data (based on
authorization) authorization) Auto synchronize contact Auto synchronize contact
list’s updatelist’s update
User A
• User B• User C• …
OPSN endpoint
Basic concepts and assumptionsBasic concepts and assumptions
OPSN EndpointOPSN Endpoint An URI which contain the Implementation of OPSN An URI which contain the Implementation of OPSN
APIsAPIs An URI which contain the delegate link to a OPSN An URI which contain the delegate link to a OPSN
endpointendpoint
Contact in OPSNContact in OPSN OPSN contact is a single-direction link to the contact OPSN contact is a single-direction link to the contact When a new contact is added, OPSN service will When a new contact is added, OPSN service will
scan if this contact contain an OPSN endpoint, if so, a scan if this contact contain an OPSN endpoint, if so, a notify will send to that endpoint (unless user don’t notify will send to that endpoint (unless user don’t wish to send) wish to send)
OPSN Building blocksOPSN Building blocks
Data formatData format MicroformatsMicroformats
hCardhCard
XFNXFN APMLAPML OPMLOPML
AuthenticationAuthentication oAuthoAuth
OPSN may use…OPSN may use…
OPSN may use or work together with folloOPSN may use or work together with following standard/protocol/format, however thwing standard/protocol/format, however they are not the building blocks of OPSN, aney are not the building blocks of OPSN, and OPSN will not depend on themd OPSN will not depend on them OpenIDOpenID RSSRSS
OPSN is user centricOPSN is user centric
Each user have their own OPSN data, there is nEach user have their own OPSN data, there is no single shared information between different uso single shared information between different usersers
OPSN maintains the user’s own information as a OPSN maintains the user’s own information as a “master copy” and publish them to others“master copy” and publish them to others
OPSN maintains all the contacts data as a local OPSN maintains all the contacts data as a local copy, even if those data was synchronized from copy, even if those data was synchronized from other locationother location
OPSN’s contact data can also be published OPSN’s contact data can also be published
OPSN is decentralizedOPSN is decentralized
OPSN is completely decentralized OPSN is completely decentralized
Special OPSN service can serve for many Special OPSN service can serve for many users, however users, however each users in such service is still individual each users in such service is still individual
logicallylogically Users hosted in same service provider should Users hosted in same service provider should
interact to each other in same manner interact to each other in same manner
Inter-op through OPSNInter-op through OPSN
User A
User B
User C
• User B• User C• …
• User A• User C• …
• …• …• …
OPSN endpoint
OPSN endpoint
OPSN endpoint
How about data out of sync?How about data out of sync?
Since contact data are “local copy”, they can be Since contact data are “local copy”, they can be out of syncout of syncOut of sync data doesn’t really matter too much, Out of sync data doesn’t really matter too much, think about the real life, your contact data could think about the real life, your contact data could be out of sync toobe out of sync tooOPSN to rescue: OPSN to rescue: OPSN service support “automatic synchronize” by OPSN service support “automatic synchronize” by
subscribe to another OPSN endpointsubscribe to another OPSN endpoint An endpoint can control if it allow another endpoint to An endpoint can control if it allow another endpoint to
subscribe to its change (and the policy can be subscribe to its change (and the policy can be changed any time) changed any time)
OPSN and Real lifeOPSN and Real life
The way OPSN organize data is very The way OPSN organize data is very similar to the real lifesimilar to the real life User User own all of their contact dataown all of their contact data (e.g. in an (e.g. in an
address book, name card holders ) address book, name card holders ) All contact data is a piece of All contact data is a piece of local datalocal data, the , the
local data could be out of synchronizedlocal data could be out of synchronized User have User have full controlfull control of their contact data of their contact data
(delete it, save it, update it, put in different (delete it, save it, update it, put in different groups, even groups, even publish to otherspublish to others, etc) , etc)
Whose data?Whose data?
Does the data in your contact list belong to Does the data in your contact list belong to you?you? OPSN’s answer is YES, absolutely!OPSN’s answer is YES, absolutely! In real life, it’s also YES! You can tell anyone In real life, it’s also YES! You can tell anyone
what ever you have in your address book! (thwhat ever you have in your address book! (though rare people may do that) ough rare people may do that)
Once some one shared their contact data to yOnce some one shared their contact data to you, it’s ou, it’s your local copy of datayour local copy of data!!
So how about the privacy?So how about the privacy?
OPSN adopt oAuth (OPSN adopt oAuth (http://oAuth.nethttp://oAuth.net) to au) to authorize what part of the data allow to be acthorize what part of the data allow to be accessed from outsidecessed from outsideYou can control the privacy of your own daYou can control the privacy of your own data, but you can NOT control others, you cata, but you can NOT control others, you can stop some crazy guys publishing your dan stop some crazy guys publishing your data once you give your data to themta once you give your data to themIn the real life, it’s exactly the same situatiIn the real life, it’s exactly the same situation. on.
DelegateDelegate
Inspired by the design of OpenID, OPSN sInspired by the design of OpenID, OPSN support “delegate”:upport “delegate”: You can delegate your OPSN service point to You can delegate your OPSN service point to
another OPSN service, it could be an OPSN sanother OPSN service, it could be an OPSN server which designed to host many userserver which designed to host many users
Delegate is simple, just add a few lines in your Delegate is simple, just add a few lines in your URIURI
<link rel=“OPSN:delegate” type=“application/xml+OPSN” href=http://some_opsn_server/someuser title=“OPSN delegate”/>
DelegateDelegate
User A
User B
User B
• User B• User C• …
• User A• …• …
OPSN endpoint
OPSN endpoint
Delegate
<link rel=“OPSN:delegate” type=“application/xml+OPSN” href=http://some_opsn_server/someuser title=“OPSN delegate”/>
Process of OPSN operationProcess of OPSN operation
Local operationsLocal operations Add / Edit / Query / DeleteAdd / Edit / Query / Delete
Operations which require inter-opOperations which require inter-op Request for social network dataRequest for social network data
Owner profile Owner profile
Contact listContact list
Contact’s profileContact’s profile Notification of been addedNotification of been added
OPSN AddOPSN Add
Mary click “add me” and input her OPSN URI
Robert’s site
Mary’s site contain OPSN endpoint meta info
Mary’s own site
Robert’s site redirect browser to Mary’s own site
Robert’s public profile was grabbed and displayed, Mary add some of her notes and click “save”
Robert’s OPSN endpoint provide Robert’s public hCard
Robert was added as Mary’s contact and redirect
back to Robert’s site
A notify from Mary was send to Robert, so Robert
will know he has been added by mary
Mary continue her surf on Robert’s site
Browser flow Data flow
OPSN ImportOPSN ImportMary sign in the new service and enter her
OPSN to import her social data
A new social network site Mary’s own site
Mary’s site contain OPSN endpoint meta info
The site discovered mary’s OPSN endpoint and prepared an oAuth request and redirect mary to her own site Mary sign on her own site
Mary authorize the request and select the data she
permit for importThe site request the social network data from Mary’s
OPSN endpoint, and import it into it’s own database. Mary’s OPSN service
provide data as mary approved
Mary continue use the service, all her friends has
been added!
OPSN APIsOPSN APIs
(TBD)(TBD)
OPSN PrototypeOPSN Prototype
PrototypePrototype
An OPSN server An OPSN server Can host many usersCan host many users Provide some additional features for easy blog intergrProvide some additional features for easy blog intergr
ationation
Build on Microsoft ASP.NET MVC technologyBuild on Microsoft ASP.NET MVC technology http://www.codeplex.com/opsnhttp://www.codeplex.com/opsn
With OPSN prototype server, we can very easily With OPSN prototype server, we can very easily turn any blog into a decentralized social networkturn any blog into a decentralized social network
FeaturesFeaturesBasic social network / contact managementBasic social network / contact management
Add contactsAdd contacts Edit contactsEdit contacts Delete contactsDelete contacts Query contactsQuery contacts
Import from other social network Import from other social network Support import hCard from any social networkSupport import hCard from any social network Flexible pluggable architect to allow implement import from none-microformats soFlexible pluggable architect to allow implement import from none-microformats so
cial networks in the futurecial networks in the futureOPSN Service endpoint OPSN Service endpoint
APIsAPIs Delegate supportDelegate support Automatic synchronize Automatic synchronize
Blog widgetsBlog widgets My widgetsMy widgets Friends list Friends list Friend life stream Friend life stream
OthersOthers
Use OpenID as authenticationUse OpenID as authentication
Use oAuth as authorization framework (to Use oAuth as authorization framework (to be done) be done)
Screen shotsScreen shots
Import from any hCard sites Login with OpenID
Screen shotsScreen shots
My hCard
Friends list
Turn a blog into a social network by simply add some widgets