At Yahoo! Open Hack Day on Friday, September 12, I gave an overview of Y!OS along with Neal Sample, Y!OS Chief Architect. Here’s our presentation in entirety:
UPDATE: YDN Theater has posted a full video version of our talk:
(They also have videos of many of the other Y!OS talks from the Open Hack event including Xavier Legros on YAP and Jonathan Trevor on YQL.)
Here are the high level cliff’s notes of our talk:
Slide 3: Y!OS Goals
There are three major goals to Y!OS: creating a social dimension, opening Yahoo! (both our data and our application UI), and rewiring Yahoo! properties with a new architecture built on this new open platform.
Slide 4: Key Driver 1 – Social Dimension
Social is no longer a destination at Yahoo!; social will become a dimension. This means that we will discontinue social networking vertical experiences like Yahoo! 360 and Mash and instead build a single social layer that permeates across your Yahoo! experience…and one that you can take with you to other sites. Any property at Yahoo!, and any site on the web, can be made more relevant with a social context.
Slide 5: Key Driver 2 – Open Like Never Before
Slides 6-8: Rewire Yahoo!
As we integrate Y!OS into our existing rich property experiences, we will rewire Yahoo! to be fundamentally more open and more social. In general, we will move from a controlled editorial experience to one that is more highly dynamic according to the interactions and choices of individual users. The context that each of our properties natively provides is a key differentiator, both to driving relevant social conversation and to affording applications with unique, interesting canvases.
Slide 9: Y!OS Platforms
Here’s a “market-ecture” view of our four primary Y!OS platforms: Social Platform, Application Platform, YQL, and Yahoo! Developer Network (the latter being more of a marketing and engagement platform for us).
Slide 10: Social Platform
This section will talk about some of the core rules and components of the Y!OS Social Platform, which defines “who I am, who my friends are, and what I’ve been doing”. Here are our Y!OS Social Platform API docs.
Slides 11-13: Identity
We will be consolidating a user’s many different identities across Yahoo!, and we will create an immutable ID called the “GUID” to which all of these identities will be mapped. The GUID is how our APIs will identity a Yahoo! user. We will also let a user associate other identities they have on the web to their GUID. Finally, we will let a user take identity information they’ve stored with us with them wherever they want, including any of the third party identity information that third parties allow us to syndicate on behalf of the user.
Slides 14-17: Relationships
Yahoo! has hundreds of millions of users, each of which currently engage in a number of different types of relationships across our network. Y!OS will recognize three primary relationship types. The first is random encounters. When you encounter someone you don’t know — say you see that they’ve left a comment on a Yahoo! Sports blog post about the Kansas Jayhawks being the best basketball team ever! — you don’t have a data-sharing relationship with that person. All you can see is the information about themselves that they’ve chosen to make public. Contacts are “one-way relationships”. These are people that you know that you place in your address book. But all of the data you have about them is data that you’ve put in there. They are not sharing any of it with you. All that you can see of them when you encounter them around the web is public data. In this since, they aren’t that different from randoms except that you are storing some records about them. Connections are “two-way reciprocated relationships”. Connections both know each other and agree to share specific information with each other. Connections are the tightest form of relationship within the Yahoo! Social Platform. We will actively build up our connection graph by proactively recommending connections to our users based on users’ communication and interaction patterns with each other.
Slides 18-20: Permissions & Privacy
Users are always in control of the data they put into the system. Users can declare some data about themselves to be public. Anyone on the web can see a user’s public data. Developers can use public data in applications without having to ask permission from a user. Users can permission data as “shared”. Shared data can be seen only by connections. Users can grant 3rd party applications with access to “shared” data via OAuth. Users can permission data as “private”. Private data can not be seen by anyone, though users can still opt to allow 3rd party applications to access their private data if they wish.
Slides 21-23: Updates
Updates is our activity stream platform. As users go about the act of doing things that users do, such as rating movies or commenting on articles, we can ask them if they’d like to have that event broadcast out as an Update. 3rd party sites can also do the same; we call this being an “Updates producer”. The Updates platform aggregates these events and allows them to be queried by API by a number of attributes. The Updates can then be displayed elsewhere across the web. When a new user sees an Update from another user, they can access the original content item that produced the update in the first place. This provides a great cross-Yahoo! and cross-web promotion network for user generated content actions.
Slide 24: Social Platform Recap
The combination of identity elements, relationships and permissions make up our Social Directory, and Updates and other elements of the Y!OS Social Platform utilize this social model consistently. User privacy and permissions are always maintained such that users are always in control with respect to what information they want to share with whom.
Slide 25: Application Platform (YAP)
The Yahoo! Application Platform allows for content and applications to be deployed into Yahoo! properties.
Slide 26: Programming Model
YAP affords developers a number of programming models, which will be discussed in more depth in following slides. This includes elements of the OpenSocial framework.
Slide 27: Targets
YAP has two primary targets. The App Base is a robust full view of an application. This is where developers should put the bulk of interaction materials for an application. The Small Box (aka widget or small view) is the component of an app that gets embedded into existing Yahoo! properties like the Yahoo! Profile or My Yahoo!.
Slide 28: Targets (addl)
YAP will also offer support for non-traditional (in the OpenSocial sense) targets. Two pictured here are SearchMonkey and OpenMail, both of which allow for very unique “hooks” that are specific to the context of the property in which they exist.
Slide 29: Discovery
Users can discover apps in a number of ways, all of which are relatively standard in the social applications space. This includes browsing a gallery, discovering a new app serendipitously via Updates, or being invited to use an app by a friend.
Slide 30: User Expectations – Security
Slide 31: User Expectations – Performance
We’ve taken care to ensure that the small box views of an app that run inside Yahoo! properties maintain performance standards that Yahoo! users expect. To do this, we ensure that the Small Box is always cached, and we’ve provided APIs to you to allow you to set the cache when users are taking actions within the App Base view of an app.
Slides 32-34: User Expectations – Privacy
Users are always in control of what data an app can access. They must grant an app permission to see their data (via OAuth) before installing an app. Similarly, just because a user is ok sharing data with a connection, they might not want that friend’s apps also having access to their data. Users can opt out of allowing their friends’ apps to see their data. Finally, our caching mechanisms ensure that beacons do not function in apps, preventing an app from being able to track a user’s activities across the web.
Slide 35: Programming Model – Server-side
Developers can make server-side calls to Yahoo! APIs and proxy the UI back to Yahoo!.
Slide 37: Programming Model – Browser-side Flash
YAP apps can render swf files into the App Base by using the YML:SWF tag. The SWF can then call and execute Yahoo! APIs directly via our AS3 Libraries.
Slide 38: YQL & Web Services Platform
This section will outline the Yahoo! Query Language, a tool to help you filter and mash up data from Yahoo! and the web at large. Here is our detailed YQL documentation.
Slide 39-41: YQL – Query
YQL provides a single endpoint service that allows developers to query, filter, and combine data from Yahoo! and beyond (the latter via Pipes). Developers can leverage OAuth to request access to a user’s own personal data on a topic (e.g., My Connections list).
Slides 42-49: Y!OS: Different?
Y!OS is different and unique because of the power that Yahoo! brings to it. Yahoo! today has hundreds of millions of users and a collection of web properties rated #1 or #2 in over twenty categories. As we add a platform layer, we will grow the platform incrementally as we activate our properties with Y!OS elements. Y!OS allows us to unify identities for users, help them activation connections, show them the things their connections and others are up to across the web (including some really rich Updates from our own Media properties), and provide them with means to add applications that they love into the system as well as take their data out of the system as they like.
Slide 50-52: Yahoo!/Y!OS Sybmiosis
(The build on this section isn’t fully rendering in the embedded slideshare version for some reason at present.)
We will leverage our properties heavily to help jumpstart the Y!OS rewiring. We will tackle this in three parts: 1) building a social dimension throughout key Yahoo! properties including Yahoo! Messenger, Yahoo! Mail and more by exposing ways for users to activate their connections and to consume Updates from their connections; 2) opening up select properties like My Yahoo!, Search (via Searchmonkey), Mail and the Front Page to allow for third party apps to be embedded directly in them; and 3) generating interesting Updates events out of our own properties (like Yahoo! Movies and Yahoo! TV) in order to capture user interest with interesting Updates events.
Again, please read our API documentation, and if you have questions please hop on the YDN Forum for Y!OS.