Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Y!OS Overview and Deep Code Dive

10,559 views

Published on

Overview of the Yahoo! Open Strategy and a deep technical code dive into the components.

Published in: Technology
  • Be the first to comment

Y!OS Overview and Deep Code Dive

  1. Yahoo! Open Strategy Y!OS December 20, 2008 Jonathan LeBlanc – YDN
  2. Y!OS Goals
  3. Establish a Social Dimension – Profiles http://profiles.yahoo.com
  4. Establish a Social Dimension – Small View http://my.yahoo.com
  5. Opening Yahoo – Application platform (YAP) http://developer.yahoo.com/dashboard
  6. Opening Yahoo – Application Gallery http://apps.yahoo.com/myapps
  7. <ul><li>YAP Components How does it work? </li></ul>
  8. YAP Components – Open Authentication (OAuth) <ul><li>2-legged & 3-legged OAuth </li></ul><ul><li>Consumer / Shared Secret keys </li></ul><ul><li>Similar to BBAuth, but open standard </li></ul>
  9. YAP Components – Yahoo! Markup Language (YML) http://developer.yahoo.com/yap/yml <ul><li>Allows secured access to private data </li></ul><ul><li>Can use ‘me’ and ‘viewer’ keywords </li></ul><ul><li>Small view uses YML lite </li></ul><ul><li>Will begin integrating into OSML </li></ul>
  10. YAP Components – Social APIs http://developer.yahoo.com/social/ <ul><li>Social Directory (read) </li></ul><ul><li>Contacts (read) </li></ul><ul><li>User Status (read / write) </li></ul><ul><li>Updates (read / write) </li></ul>
  11. YAP Components – Caja http://code.google.com/p/google-caja <ul><li>HTML / CSS / JavaScript securer </li></ul><ul><li>Enforces standards </li></ul><ul><li>Includes JSLint </li></ul><ul><li>YAP is the first major platform to fully integrate this technology (and keep it running) </li></ul>
  12. YAP Components – Software Development Kits (SDKs) http://developer.yahoo.com/social/sdk PHP SDK Currently Available Open and OAuth Applications ActionScript 3 SDK Currently Available Open Applications Java SDK in Development Open and OAuth Applications
  13. YAP Components – Yahoo! Query Language (YQL) http://developer.yahoo.com/yql <ul><li>SQL-like syntax </li></ul><ul><li>Private / Public Data </li></ul><ul><li>Use of certain YDN API’s </li></ul><ul><li>Captures external data feeds </li></ul>
  14. <ul><li>YAP Applications How do They Work? </li></ul>
  15. YAP Applications – Open Applications <ul><li>Runs on platform </li></ul><ul><li>Can use 2 & 3 legged OAuth </li></ul><ul><li>Contain small and large views </li></ul><ul><li>Small view uses YIV & iframe to secure </li></ul><ul><li>Large view uses Caja to secure </li></ul><ul><li>Supports OpenSocial 0.8 </li></ul>
  16. YAP Applications – Open Applications Creating an Open Application – Step 1
  17. YAP Applications – Open Applications Creating an Open Application – Step 2
  18. YAP Applications – Open Applications Creating an Open Application – Step 3
  19. YAP Applications – Open Applications Creating an Open Application – Step 4
  20. YAP Applications – Open Applications External Access Prohibited
  21. YAP Applications – OAuth Applications <ul><li>Runs off platform </li></ul><ul><li>Uses 2 & 3 legged OAuth </li></ul><ul><li>Does not contain views </li></ul><ul><li>Requires Users to Authenticate Session </li></ul>
  22. YAP Applications – OAuth Applications Creating an OAuth Application – Step 1
  23. YAP Applications – OAuth Applications Creating an OAuth Application – Step 2
  24. YAP Applications – OAuth Applications Creating an OAuth Application – Step 3
  25. YAP Applications – OAuth Applications Creating an OAuth Application – Step 4
  26. YAP Applications – OAuth Applications Creating an OAuth Application – Step 5
  27. YAP Applications – OAuth Applications Creating an OAuth Application – Step 6
  28. <ul><li>Y!OS Resources How Do I Get Started? </li></ul>
  29. Y!OS Resources - Documentation <ul><li>Y!OS Main Overview - http:// developer.yahoo.com/yos </li></ul><ul><li>YAP Main Overview - http://developer.yahoo.com/yap </li></ul><ul><li>YQL Docs - http://developer.yahoo.com/yql </li></ul><ul><li>YML Docs - http://developer.yahoo.com/yap/yml </li></ul><ul><li>Caja - http://code.google.com/p/google-caja/ </li></ul><ul><li>Caja Support - http://developer.yahoo.com/yap/guide/caja-support.html </li></ul><ul><li>Slide Deck (Overview) - http://www.slideshare.net/jleblanc/yos-presentation-presentation </li></ul><ul><li>Slide Deck (Deep Dive) - http://www.slideshare.net/jleblanc/sdk-presentation-presentation/ </li></ul>
  30. Y!OS Resources – Tools and Galleries <ul><li>YAP Dashboard - http://developer.yahoo.com/dashboard </li></ul><ul><li>YQL Console - http://developer.yahoo.com/yql/console </li></ul><ul><li>JSLint - http://www.jslint.com </li></ul><ul><li>Application Gallery - http:// apps.yahoo.com/myapps </li></ul><ul><li>YDN Forum - http://developer.yahoo.com/forum </li></ul><ul><li>PHP SDK - http://developer.yahoo.com/social/sdk/ </li></ul><ul><li>AS3 SDK - http://developer.yahoo.com/flash/yos/ </li></ul>
  31. Y!OS Deep Dive December 20, 2008 Jonathan LeBlanc – YDN
  32. <ul><li>Y!OS Code Overview Yahoo! Markup Language (YML) </li></ul>
  33. YML – Available Tags YML Tags yml:a   yml:audio   yml:form   yml:friend-selector yml:if-env   yml:image   yml:message yml:name   yml:profile-pic   yml:pronoun yml:share  yml:swf  yml:user-badge yml:visible-to-friends yml:visible-to-owner yml:visible-to-user    YML Lite Tags yml:a   yml:audio   yml:form   yml:if-env   yml:image   yml:name   yml:profile-pic   yml:pronoun   yml:user-badge  
  34. YML – Syntax Rules <ul><li>YML tags are namespaced with yml:. However, since YML documents are not actually XML, no formal namespace declaration is required. </li></ul><ul><li>All attributes must be enclosed in double quotes. To specify double quotes within an attribute value, enter the &quot; character reference. </li></ul><ul><li>If the data type of an attribute is boolean, allowed values are &quot;true&quot; and &quot;false&quot;, which must be enclosed in double quotes. </li></ul><ul><li>Singleton tags (that is, tags with no closing tags) must end with /> . </li></ul><ul><li>White space and indentations are passed through, but ignored in the interpretation phase. </li></ul><ul><li>YML tags accept and produce characters in UTF-8 only. </li></ul>
  35. YML – Sample YML Use Tab Controller
  36. YML – Sample YML Use Tab Construction
  37. YML – Sample YML Use Tab Styles
  38. <ul><li>Y!OS Code Overview PHP SDK </li></ul>
  39. PHP SDK – 2-Legged OAuth Initialization Used For: Applications which only require access to public user data and open APIs
  40. PHP SDK – 3-Legged OAuth Initialization <ul><li>Used For: </li></ul><ul><li>Applications requiring private data access </li></ul>
  41. PHP SDK – User Data Manipulation
  42. PHP SDK – Create an Update for a User
  43. PHP SDK – Set the Status (Presence) of a User
  44. <ul><li>Y!OS Code Overview Yahoo! Query Language </li></ul>
  45. YQL – Console Location: http://developer.yahoo.com/yql/console
  46. YQL – Query Structure Projection - SELECT what FROM table - SELECT * FROM social.connections Local and Remote Filtering - SELECT what FROM table WHERE filter - SELECT * FROM social.profile WHERE guid = me Sub-selects - Joining Data - SELECT what FROM table WHERE fieldvalue IN (SELECT ...) - SELECT * FROM social.profile WHERE guid IN (SELECT guid FROM social.connections WHERE owner_guid=me) Local Paging Control - SELECT what FROM table WHERE filter LIMIT 10 OFFSET 50 - SELECT * FROM web.search WHERE query=&quot;madonna&quot; LIMIT 3 OFFSET 10 Remove Table Size Control - SELECT what FROM table(0,500) WHERE condition - SELECT * FROM web.search(0,10) WHERE query=&quot;madonna&quot; AND result.XXX = something
  47. YQL – Available Tables YQL Command: SHOW tables
  48. YQL – Table Contents YQL Command: DESC social.connections
  49. YQL – Running a Query
  50. YQL – Output Types
  51. <ul><li>Y!OS Code Overview Caja </li></ul>
  52. Caja & JavaScript – Before Cajoling
  53. Caja & JavaScript – After Cajoling
  54. Caja & JavaScript – What doesn’t work? <ul><li>eval() </li></ul><ul><li>new Function() </li></ul><ul><li>Strings as event handlers (node.onclick = '...';) </li></ul><ul><li>Names ending with double / triple underscores </li></ul><ul><li>with function (with (obj) { ... }) </li></ul><ul><li>Implicit global variables (specify var variable) </li></ul><ul><li>Calling a method as a function </li></ul><ul><li>document.write </li></ul><ul><li>window.event </li></ul><ul><li>.onclick </li></ul><ul><li>OpenSocial gadgets.io.makeRequest return JS </li></ul>
  55. Caja & HTML – What doesn’t work? <ul><li>name attributes with gadgets.io.makeRequest </li></ul><ul><li>Custom attributes </li></ul><ul><li>Custom tags </li></ul><ul><li>Unclosed tags </li></ul><ul><li><embed> </li></ul><ul><li><iframe> </li></ul><ul><li><link rel=‘… </li></ul><ul><li>javascript:void(0) </li></ul><ul><li>Radio buttons in IE </li></ul><ul><li>Relative url’s </li></ul>
  56. Caja & CSS – What doesn’t work? <ul><li>* hacks </li></ul><ul><li>_ hacks </li></ul><ul><li>IE conditionals </li></ul><ul><li>Insert-after clear fix </li></ul><ul><li>expression() </li></ul><ul><li>@import </li></ul><ul><li>Background images in IE </li></ul>
  57. <ul><li>Y!OS Code Overview Common Issues </li></ul>
  58. Common platform issues and questions <ul><li>I attempt to authenticate my 2-legged / 3-legged session and receive a “null object error” </li></ul><ul><li>How do I authenticate OAuth using JavaScript? </li></ul><ul><li>I have an existing OpenSocial application. How do I get started? </li></ul><ul><li>I have an existing Facebook application. How do I get started? </li></ul><ul><li>None of my styles are displaying, what’s happening? </li></ul><ul><li>Why PHP / AS3 for the first SDK? </li></ul><ul><li>setSmallView is not working? What’s going on? </li></ul>
  59. Questions? <ul><li>Thank you! </li></ul>

×