Hi everyone - wanted to send an update on OSML.

We've been making good progress on the spec. The template discussion group
has a initial set of tags and design for data pipelining that we hope to
propose to the community at large soon. Notes from a meeting we had earlier
this week below.

If you're interested in contributing to the spec proposal, please join the
OSML discussion group @ http://tech.groups.yahoo.com/group/os-templates/.

Thanks,
Evan

---------- Forwarded message ----------
From: Evan Gilbert <[EMAIL PROTECTED]>
Date: Thu, Aug 14, 2008 at 7:17 AM
Subject: Notes from OSML deep dive @ Yahoo
To: [EMAIL PROTECTED]


As I mentioned before, a number of us met at Yahoo earlier this week to try
to accelerate consensus on the initial set of OSML tags. We came to internal
consensus on a number of details, and want to propose these resolutions back
to the community.

*Attendees*
Charlie Jiang, Isaac Schlueter, Xavier Legros, John Hardy, Chris Bissel, Max
Newbould, Scott Seely, Mike Austin, David Byttow, Evan Gilbert

*Goals*
Agreement on the following goals:

   - Aim for a unified model between type="proxied" and type="html". Also
   have this model support content pushed via a setView() call or equivalent in
   the future
   - Syntax / overhead should be as minimal as possible for developers
   - We should aim to support the range of. For example, <os:PersonSelector
   group="somegroup"> seemed more appropriate than <os:FriendSelector
   person="(VIEWER || OWNER)">


*OSML and Data Pipelining*
Would like to use OpenSocial Data Pipelining (
http://wiki.opensocial-templates.org/index.php?title=OpenSocial_Data_Pipelining)
as the standard way for OSML tags to access OpenSocial data.

   - Data can be loaded explicitly via <os:DataSet> and then referenced by
   OSML tags. Example:
   <os:DataSet key="PagedFriends">
     <os:PeopleRequest group="OWNER_FRIENDS" pageNumber="1" pageSize="40"/>
   </os:DataSet>
   ...
   <os:PeopleSelector group="${PagedFriends}" name="formFieldName">


   - We will work as much as possible to minimize syntax overhead
      - For data requests that need parameters, we will look at simplified
      syntax options. Simplified version of the above data request:
      <os:PeopleRequest *key="PagedFriends" *group="OWNER_FRIENDS"
      pageNumber="1" pageSize="40"/>

      - For data requests that don't need parameters or have good defaults,
      we will implicitly define them. For example:
      <os:PersonRequest key="OpenSocialViewer"
      fields="name,id,thumbnailUrl,profileUrl"/> would probaby be implied

      and you can always call the following without explicitly making a data
      request
      <os:Badge person="${OpenSocialViewer}"> and ${OpenSocialViewer.Name}


   - The advantages of this approach:
      - Supports accessing full set of OpenSocial API data
         - Adapts to different use cases easily - <os:PeopleSelector
         group="${SomeGroup}"> supports many more use cases than
<os:FriendSelector
         person="VIEWER">.
      - Relatively minimal developer overhead:
         - For calls to OpenSocial APIs that need parameters, the developer
         will need to add ~1 line of code
         - Calls that don't need parameters are for free
         - Provides a consistent model across all OpenSocial content types
      - Data binding supports many common developer needs that  tags alone
      can't
      - Supports data in attributes and JavaScript, i.e.: <a title="This
         will alert for ${Viewer.Name}" href="#" onclick="alert('Hello
         ${Viewer.Name}')">
         - Supports internationalization more cleanly:
            - <os:pronoun> doesn't work for all countries
            - Variants of the following will: <div if="${Person.Gender ==
            'MALE'}">He said</div><div
if="${Person.Gender='FEMALE'}">She said</div>
            - All fields on OpenSocial person object

*Tags*
Agreed on the following tags... Wiki hasn't been updated yet, so deltas are
called out below

   - 
<os:Name><http://wiki.opensocial-templates.org/index.php?title=OpenSocial_Markup#.3Cos:name.3E>
   - Inline tag to show a person's name, possibly linked and/or with inline
   container bling (i.e. more information on hover)
      - @person parameter will be an object
      - Discussion over whether we needed this tag - ${Person.Name} could be
      sufficient. We felt that linking and container bling made this
worthy of a
      separate tag
      - 
<os:Badge><http://wiki.opensocial-templates.org/index.php?title=OpenSocial_Markup#.3Cos:badge.3E>-
Block level tag to show information about a person in the style of the
   container, usually with a photo
      - @person parameter will be an object
      - Discussion that we could allow for a size parameter
      (small|medium|large). We felt that we could add this later when
we have more
      concrete use cases
      - 
<os:PeopleSelector><http://wiki.opensocial-templates.org/index.php?title=OpenSocial_Markup#.3Cos:friendSelector.3E>
   - Tag to show a UI that chooses from a list of people, and sets a form field
   with the associated value
      - Name was changed to PeopleSelector from FriendSelector to accurately
      represent that it can be any group of people
      - @person will be changed to @group, which references the group of
      people from which you are selecting
      - Discussion that we could support @onchange parameter for taking
      actions immediately when user selects someone (similar to HTML
onchange). We
      agreed this might be useful but not required and we can easily
add it easily
      in the future.
   - 
<os:TabSet>/<os:Tab><http://wiki.opensocial-templates.org/index.php?title=OpenSocial_Markup#.3Cos:tabset.3E>tags
to create a tabbed UI
      - No changes from Wiki spec.
      - The examples show an @src parameter for having a tab load data from
      an OpenSocial view or possibly navigate to a view when clicked.
We discussed
      this and felt that it wasn't required for the initial spec.

*Syntax*

   - People were generally flexible but the group had a preference for
   <os:UpperCamelCase>. It seemed easier to read and type.

Reply via email to