OPSN: Open Portable Social Network


Published on

OPSN: Open Portable Social Network

Published in: Business, Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

OPSN: Open Portable Social Network

  1. 1. OPSN Open Portable Social Network Version 0.0.1 2008-1-8 http://opsn.net/ Robert Mao (zhihong.mao@gmail.com)
  2. 2. TOC <ul><li>What is OPSN </li></ul><ul><li>OPSN user cases </li></ul><ul><li>OPSN explained </li></ul><ul><li>OPSN APIs </li></ul><ul><li>OPSN prototype </li></ul>
  3. 3. What is OPSN? <ul><li>OPSN is an open, decentralized, free framework for user centric social network data management and service providing </li></ul><ul><li>OPSN stands for “ O pen P ortable S ocial N etwork” </li></ul><ul><ul><li>Openness </li></ul></ul><ul><ul><li>Data portability </li></ul></ul><ul><ul><li>Decentralized </li></ul></ul>
  4. 4. Why portability matter? <ul><li>Best refer to: http://microformats.org/wiki/social-network-portability </li></ul><ul><li>OPSN is a solution that follow the above social network portability movement </li></ul><ul><li>OPSN try the best not to reinvent wheels, it adopt work together with many current standards and data formats </li></ul>
  5. 5. What OPSN is not <ul><li>OPSN ONLY provide the data related to the contacts, it </li></ul><ul><ul><li>Is NOT anything related on user authentication (OpenID is focused on user authentication, OPSN works well with OpenID) </li></ul></ul><ul><ul><li>Is NOT a social aggregator or other social application, though we may implement a simple social aggregator in the prototype to demonstrate an application build on top of OPSN service </li></ul></ul>
  6. 6. OPSN user cases
  7. 7. User cases #1 <ul><li>Mary have a blog, a flickr account, a linkedin account, a twitter account … She have too many “friends” in different places, she has been tired of invite “friends” and approve “friends” requests from time to time, she wish to manage all her contacts in one place that she can view, modify, control, backup them with no hassle </li></ul><ul><li>Mary 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 all of them in one places </li></ul><ul><li>Mary can easily import contacts from hCard enabled sites, such as twitter, flickr, she have some difficulty to import from some social networks such as facebook </li></ul><ul><li>During Mary import the contacts, her OPSN module scan all contacts 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 has been added into Mary’s OPSN module. </li></ul>
  8. 8. User cases #2 <ul><li>Mary found a new interesting vertical social network named doppr.com 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 from OPSN </li></ul><ul><li>The 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 prompt message ask her if she authorize dopper.com to import some of her data. </li></ul><ul><li>Mary select part of her profile data, and two groups of her contacts which tagged as “friends” and “classmates” and the click “authorize” </li></ul><ul><li>Mary site redirect back her to doppr.com, doppr.com show a progress bar of importing her data, after a few minutes, mary found her profiles data and friends lists she decided to select appeared in doppr.com’s service, she even found some of her friends are already in dopper.com and she connected with them automatically. </li></ul>
  9. 9. User cases #3 <ul><li>Mary feel it’s boring to maintain her own web server, she decided to host everything outside but keep her own personal URI. </li></ul><ul><li>Mary found a OPSN service provider named MyOPSN.com, it can 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 import all data from her original OPSN module. </li></ul><ul><li>Mary was redirect to her own site to authorize, after she authorized the operation, all her previous social network data was migrated to MyOPSN.com. </li></ul><ul><li>Mary add a delegate link to her personal URI’s output, all her previous connection which established by her previous OPSN module remain exactly the same with the new OPSN provider. Mary know she can switch the OPSN service from myOPSN.com at any time without any data loss. </li></ul>
  10. 10. OPSN explained
  11. 11. OPSN Overview <ul><li>Data </li></ul><ul><ul><li>User’s contact data </li></ul></ul><ul><ul><li>Contact list </li></ul></ul><ul><ul><ul><li>Use tags to group contacts </li></ul></ul></ul><ul><ul><ul><li>Not all contacts should represent a OPSN endpoint </li></ul></ul></ul><ul><li>Service </li></ul><ul><ul><li>Publish data (based on authorization) </li></ul></ul><ul><ul><li>Auto synchronize contact list’s update </li></ul></ul>User A <ul><li>User B </li></ul><ul><li>User C </li></ul><ul><li>… </li></ul>OPSN endpoint
  12. 12. Basic concepts and assumptions <ul><li>OPSN Endpoint </li></ul><ul><ul><li>An URI which contain the Implementation of OPSN APIs </li></ul></ul><ul><ul><li>An URI which contain the delegate link to a OPSN endpoint </li></ul></ul><ul><li>Contact in OPSN </li></ul><ul><ul><li>OPSN contact is a single-direction link to the contact </li></ul></ul><ul><ul><li>When a new contact is added, OPSN service will scan if this contact contain an OPSN endpoint, if so, a notify will send to that endpoint (unless user don’t wish to send) </li></ul></ul>
  13. 13. OPSN Building blocks <ul><li>Data format </li></ul><ul><ul><li>Microformats </li></ul></ul><ul><ul><ul><li>hCard </li></ul></ul></ul><ul><ul><ul><li>XFN </li></ul></ul></ul><ul><ul><li>APML </li></ul></ul><ul><ul><li>OPML </li></ul></ul><ul><li>Authentication </li></ul><ul><ul><li>oAuth </li></ul></ul>
  14. 14. OPSN may use… <ul><li>OPSN may use or work together with following standard/protocol/format, however they are not the building blocks of OPSN, and OPSN will not depend on them </li></ul><ul><ul><li>OpenID </li></ul></ul><ul><ul><li>RSS </li></ul></ul>
  15. 15. OPSN is user centric <ul><li>Each user have their own OPSN data, there is no single shared information between different users </li></ul><ul><li>OPSN maintains the user’s own information as a “master copy” and publish them to others </li></ul><ul><li>OPSN maintains all the contacts data as a local copy, even if those data was synchronized from other location </li></ul><ul><li>OPSN’s contact data can also be published </li></ul>
  16. 16. OPSN is decentralized <ul><li>OPSN is completely decentralized </li></ul><ul><li>Special OPSN service can serve for many users, however </li></ul><ul><ul><li>each users in such service is still individual logically </li></ul></ul><ul><ul><li>Users hosted in same service provider should interact to each other in same manner </li></ul></ul>
  17. 17. Inter-op through OPSN User A User B User C <ul><li>User B </li></ul><ul><li>User C </li></ul><ul><li>… </li></ul><ul><li>User A </li></ul><ul><li>User C </li></ul><ul><li>… </li></ul><ul><li>… </li></ul><ul><li>… </li></ul><ul><li>… </li></ul>OPSN endpoint OPSN endpoint OPSN endpoint
  18. 18. How about data out of sync? <ul><li>Since contact data are “local copy”, they can be out of sync </li></ul><ul><li>Out of sync data doesn’t really matter too much, think about the real life, your contact data could be out of sync too </li></ul><ul><li>OPSN to rescue: </li></ul><ul><ul><li>OPSN service support “automatic synchronize” by subscribe to another OPSN endpoint </li></ul></ul><ul><ul><li>An endpoint can control if it allow another endpoint to subscribe to its change (and the policy can be changed any time) </li></ul></ul>
  19. 19. OPSN and Real life <ul><li>The way OPSN organize data is very similar to the real life </li></ul><ul><ul><li>User own all of their contact data (e.g. in an address book, name card holders ) </li></ul></ul><ul><ul><li>All contact data is a piece of local data , the local data could be out of synchronized </li></ul></ul><ul><ul><li>User have full control of their contact data (delete it, save it, update it, put in different groups, even publish to others , etc) </li></ul></ul>
  20. 20. Whose data? <ul><li>Does the data in your contact list belong to you? </li></ul><ul><ul><li>OPSN’s answer is YES, absolutely! </li></ul></ul><ul><ul><li>In real life, it’s also YES! You can tell anyone what ever you have in your address book! (though rare people may do that) </li></ul></ul><ul><ul><li>Once some one shared their contact data to you, it’s your local copy of data ! </li></ul></ul>
  21. 21. So how about the privacy? <ul><li>OPSN adopt oAuth ( http://oAuth.net ) to authorize what part of the data allow to be accessed from outside </li></ul><ul><li>You can control the privacy of your own data, but you can NOT control others, you can stop some crazy guys publishing your data once you give your data to them </li></ul><ul><li>In the real life, it’s exactly the same situation. </li></ul>
  22. 22. Delegate <ul><li>Inspired by the design of OpenID, OPSN support “delegate”: </li></ul><ul><ul><li>You can delegate your OPSN service point to another OPSN service, it could be an OPSN server which designed to host many users </li></ul></ul><ul><ul><li>Delegate is simple, just add a few lines in your URI </li></ul></ul><link rel=“OPSN:delegate” type=“application/xml+OPSN” href= http://some_opsn_server/someuser title=“OPSN delegate”/>
  23. 23. Delegate User A User B User B <ul><li>User B </li></ul><ul><li>User C </li></ul><ul><li>… </li></ul><ul><li>User A </li></ul><ul><li>… </li></ul><ul><li>… </li></ul>OPSN endpoint OPSN endpoint Delegate <link rel=“OPSN:delegate” type=“application/xml+OPSN” href= http://some_opsn_server/someuser title=“OPSN delegate”/>
  24. 24. Process of OPSN operation <ul><li>Local operations </li></ul><ul><ul><li>Add / Edit / Query / Delete </li></ul></ul><ul><li>Operations which require inter-op </li></ul><ul><ul><li>Request for social network data </li></ul></ul><ul><ul><ul><li>Owner profile </li></ul></ul></ul><ul><ul><ul><li>Contact list </li></ul></ul></ul><ul><ul><ul><li>Contact’s profile </li></ul></ul></ul><ul><ul><li>Notification of been added </li></ul></ul>
  25. 25. OPSN 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
  26. 26. OPSN Import Mary 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 import The 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!
  27. 27. OPSN APIs
  28. 28. (TBD)
  29. 29. OPSN Prototype
  30. 30. Prototype <ul><li>An OPSN server </li></ul><ul><ul><li>Can host many users </li></ul></ul><ul><ul><li>Provide some additional features for easy blog intergration </li></ul></ul><ul><li>Build on Microsoft ASP.NET MVC technology </li></ul><ul><ul><li>http://www.codeplex.com/opsn </li></ul></ul><ul><li>With OPSN prototype server, we can very easily turn any blog into a decentralized social network </li></ul>
  31. 31. Features <ul><li>Basic social network / contact management </li></ul><ul><ul><li>Add contacts </li></ul></ul><ul><ul><li>Edit contacts </li></ul></ul><ul><ul><li>Delete contacts </li></ul></ul><ul><ul><li>Query contacts </li></ul></ul><ul><li>Import from other social network </li></ul><ul><ul><li>Support import hCard from any social network </li></ul></ul><ul><ul><li>Flexible pluggable architect to allow implement import from none-microformats social networks in the future </li></ul></ul><ul><li>OPSN Service endpoint </li></ul><ul><ul><li>APIs </li></ul></ul><ul><ul><li>Delegate support </li></ul></ul><ul><ul><li>Automatic synchronize </li></ul></ul><ul><li>Blog widgets </li></ul><ul><ul><li>My widgets </li></ul></ul><ul><ul><li>Friends list </li></ul></ul><ul><ul><li>Friend life stream </li></ul></ul>
  32. 32. Others <ul><li>Use OpenID as authentication </li></ul><ul><li>Use oAuth as authorization framework (to be done) </li></ul>
  33. 33. Screen shots Import from any hCard sites Login with OpenID
  34. 34. Screen shots My hCard Friends list Turn a blog into a social network by simply add some widgets