On the Post and Share activities

I've raised this on the AS2 spec tracker. It's a somewhat of a rather 
radical change - removing two of the most common activities always will 
be - and somewhat of a change to the ActivityStreams data model. But in 
my opinion, it brings about much practical simplification learned 
through implementation experience with AS1; and in terms of the spec 
text it's not a major change.

It also brings the ActivityStreams model and 
Indieweb/Microformats/RSS/Atom model closer together.

On the Post and Share Activities 
<https://github.com/jasnell/w3c-socialwg-activitystreams/issues/97>

Amy's post on explicit vs implicit typing 
<http://rhiaro.co.uk/2015/04/post-and-activity-types>brought to mind 
something I've been mulling over for a while.

ActivityStreams is very focused on Activities. It's kind of in the name. 
Meanwhile, the IndieWeb has coalesced around the Post, which in 
ActivityStreams-ese would be the Object.

Both of them have a conceptual elegance: In the Indieweb, your feed is a 
stream of your posts. On ActivityStreams, your feed is a stream of your 
activities.

I think both of these are wrong, but I think that ActivityStreams is 
more wrong. And I refer specifically to the Post and Share activities.

These are the "major" activities of the network. In real deployments 
such as Pump.io, they're called out specially: These activities are 
placed in your "major feed*"; while other activities (such as liking and 
following) are placed in your minor feed. Posts and Shares create and 
spread content respectively.

The posts are perhaps the bigger offender. They're entirely synthetic. A 
"Post" activity carries no additional information than what is contained 
in the object, with the exception of the audience targetting properties. 
And, as it turns out, you'd much rather the audience targetting 
properties be on the object. Them being on the activity is very 
problematic when the object becomes detached from its' post activity.

The share activity also has major issues. Specifically, it doesn't let 
me add my own commentary visible on my own feed. Nigh every social 
network lets me do this (Twitter being the notable exception, though 
even there people substitute hacks), but ActivityStreams doesn't.

Ostensibly I could add commentary to the activity using its' "content" 
property but this feels rather nasty and like trying to work around what 
the object was intended

My opinion is that these activities should be removed. The audience 
targeting properties should be permitted on content objects (which are 
distinct from non-content objects - such as a person). The "post" 
activity would be replaced by simply inlining the content object in the 
user's feed in its' place, and the "share" activity would be replaced by 
a "repost" object. The action of "posting" becomes implicit in the 
placement of an object in your stream, and your stream would contain 
objects of types Content | Activity.

This would then tighten up the definition of Activity significantly, 
into two categories:

  * Content free user actions: Like. Dislike. Checkin. Commited (code).
    Added an item to a list.
  * Social graph actions: Follow. Unfollow. Joined a Group.

Removing those two activities actually makes our lives simpler. 
Activities unify with objects better - becoming more of a pattern than a 
special kind of object (though certainly some actions are special and 
will have impact on your social graph), and we remove the big modeling 
disconnect between ActivityStreams and Microformats/Atom/RSS/etc.

I think this would be a very worthwhile simplification.

(* With limitations: Pump.io filters out "posts" of an object of type 
"comment")

Received on Monday, 13 April 2015 20:18:50 UTC