Action Links for Activity Streams/Salmon

4 views
Skip to first unread message

Chris Messina

unread,
Nov 9, 2009, 2:57:04 AM11/9/09
to activity-streams, salmon-...@googlegroups.com
Just want to toss this out there, so I don't forget...

A couple days ago, Recordon linked to Luke Shepard's presentation on "Building with Facebook":


One slide in particular caught my attention: #37.


In it is the anatomy of a stream entry. What caught my eye is the array of "action links". 

Quite simply, these could act as "callback verbs" that are available to be performed on the object...

From Salmon's perspective, this would be extremely useful, since, as activities are syndicated around, they could advertise their functionality and where to send a response bundle. 

I haven't fully worked this out yet, nor am I going to attempt to come up with examples of how this might work off the cuff at midnight, but I wanted to throw it out in case I forgot... what if each activity entry advertised to the aggregator the list of actions that were available to take on the activity, or the actor or object of the activity?

Hmm....

Chris

--
Chris Messina
Open Web Advocate

Personal: http://factoryjoe.com
Follow me on Twitter: http://twitter.com/chrismessina

Citizen Agency: http://citizenagency.com
Diso Project: http://diso-project.org
OpenID Foundation: http://openid.net

This email is:   [ ] shareable    [X] ask first   [ ] private

Dan Brickley

unread,
Nov 9, 2009, 3:25:11 AM11/9/09
to activity...@googlegroups.com, salmon-...@googlegroups.com
On Mon, Nov 9, 2009 at 8:57 AM, Chris Messina <chris....@gmail.com> wrote:
> Just want to toss this out there, so I don't forget...
> A couple days ago, Recordon linked to Luke Shepard's presentation on
> "Building with Facebook":
> http://www.scribd.com/doc/22257416/Building-with-Facebook-Social-Dev-Camp-Chicago-2009
> One slide in particular caught my attention: #37.
> http://flic.kr/p/7eh3m2
> In it is the anatomy of a stream entry. What caught my eye is the array of
> "action links".
> Quite simply, these could act as "callback verbs" that are available to be
> performed on the object...

Interesting. Maybe I'm reading too much into the slide or not entirely
getting the example,
but the example URLs given don't seem to contain object IDs.

Is the idea that typically they would, or that there are mappings from
a template URL to a full URL, eg by appending an
object identifier? Also translation of the link text seems important;
the example suggests it's in the markup directly.

There's a slippery slope here which ends with the reinvention of the
Web Services stack; but it should be possible to
do something very useful without going nearly that far. A key question
is whether the callback verbs can take arguments.

eg. translate to ['en','fr','it',...]; share by
['mail','facebook','twitter', ...] ...

> what if each activity entry advertised
> to the aggregator the list of actions that were available to take on the
> activity, or the actor or object of the activity?

Yup. And if the activity and it's associated links are described
clearly enough, I think we can expect downstream
services to add in new verby links.

cheers,

Dan

Bill de hOra

unread,
Nov 9, 2009, 4:13:58 PM11/9/09
to activity...@googlegroups.com, salmon-...@googlegroups.com
Dan Brickley wrote:
> On Mon, Nov 9, 2009 at 8:57 AM, Chris Messina <chris....@gmail.com> wrote:
>> Just want to toss this out there, so I don't forget...
>> A couple days ago, Recordon linked to Luke Shepard's presentation on
>> "Building with Facebook":
>> http://www.scribd.com/doc/22257416/Building-with-Facebook-Social-Dev-Camp-Chicago-2009
>> One slide in particular caught my attention: #37.
>> http://flic.kr/p/7eh3m2
>> In it is the anatomy of a stream entry. What caught my eye is the array of
>> "action links".
>> Quite simply, these could act as "callback verbs" that are available to be
>> performed on the object...
>
> [...]
>
>> what if each activity entry advertised
>> to the aggregator the list of actions that were available to take on the
>> activity, or the actor or object of the activity?
>
> Yup. And if the activity and it's associated links are described
> clearly enough, I think we can expect downstream
> services to add in new verby links.

Just been talking about this in work today. Not the same domain but
Sun's Kenai and OCCI cloud projects "have this pattern". Here's an
example from the OCCI spec:

{{{
<link rel="http://purl.org/occi/action/restart#cold"
class="action"
title="Cold Restart"
href="http://example.com/123/restart;type=cold" />
}}}

One concern is verb proliferation, but if the actions are modeled as
state transitions from the activity that should reduce the number of
links (I've found you don't get much thanks from the mobile world by
sending lots of redundant links in content). Another is posting
semantics - AtomPub provides a standard model for pushing content around
but no such thing exists for performing actions - are we talking about
forms posting and out of band documentation of the parameters? Finally
there is the distinction between performing the action and views on the
activity data by action - I seem to recall Chris had a presentation
where the user could click through on actions, if the posting ops are in
links and the view ops are embedded in markup that makes for a messy API.

Bill


John Panzer

unread,
Nov 9, 2009, 4:24:18 PM11/9/09
to salmon-...@googlegroups.com, activity-streams
These are interesting; Salmon envisioned a single rel value (say,
"salmon") that could be applied to anything you want to get all types
of feedback about. E.g., put it in a web page, you get salmon pushed
to you about that page. Put it on a comment, you get comments on your
comment. Or likes on your comment. Or...

It's been suggested though that having the ability to specify what
kinds of things you want to get would be highly useful, e.g., I want
to get likes and comments but will ignore "this is spam"
notifications, so don't bother sending them and more importantly don't
offer the option in your UI.
--
--
John Panzer / Google
jpa...@google.com / abstractioneer.org / @jpanzer
Reply all
Reply to author
Forward
0 new messages