Review My Serialization + Questions on encoding Moderation

5 views
Skip to first unread message

Benjamin Goering

unread,
Jan 16, 2012, 6:52:28 PM1/16/12
to Activity Streams, ni...@livefyre.com
Hello all,

We at Livefyre (http://livefyre.com) are eager to start supporting AS
output in the near future, and I'd like feedback on our current plans
from anyone who is feeling sufficiently helpful.

Livefyre is a real-time commenting system. So our core data model has
Users, Comments, and what we call 'Conversations', ie a bucket of
Comments, usually tied to an Article. Conversations can be set to
'premoderated', meaning that incoming comments must be 'approved' by a
moderator before they become public to the rest of the world. I'm
curious about the best way of representing these moderation actions,
but I'll ask about that below.

Here is a gist (https://gist.github.com/5d75f0df0b711322fef8) with our
serializations of the following activities:
* User posts a comment
* User deletes his or her comment
* Moderator approves a comment: Currently using verb 'add' with target
of the conversation
* Moderator deletes a comment : Currently using verb 'remove' with
target of the conversation
* User likes a comment
* User unlikes a comment
Note that these are actually Python dicts (you'll see some datetime
objects), but will be serialized to JSON.

* Questions *

My first question is about the best way to represent a Livefyre
"Conversation". When you submit a comment to Livefyre, you submit it
into a specific Conversation. In these code samples, I've made a
Conversation a type of AS "Collection", as that is a fairly generic
type. However, I'm wondering if it would be better to make this an
instance of the "Event" objectType. Anyone have opinions?

Secondly, I'm hitting a wall figuring out how to represent moderation
in AS JSON. As mentioned before, Conversations can either be 'public',
meaning any comments posted to it get published to all observers
instantly. Conversations can also be 'premoderated', meaning that all
incoming comments must be approved by a user in a list of moderators
for that Conv before they become public. Until then, they are
'pending'; ie they are visible to the comment author and users in the
list of moderators, but no one else. Once a moderator 'approves' a
comment, it becomes visible to all users.

There are several ways I can imagine encoding this behavior in AS. If
anyone has experience with anything similar, I'd greatly appreciate
learning what you decided on:

1) This is the way that I have started. Users 'post' comments into a
conversation, but this does not mean it has been 'added' to the
conversation yet. Once the comment is approved, it is 'added' (verb)
to the conversation (target) by the moderator (actor). If a
conversation is not premoderated, meaning no approval is required, the
initial post activity is immediately followed by an 'add' activity
with the actor being the comment author. When a moderator deletes a
comment, it is 'remove'd from the conversation. As most comments end
up in the approved state eventually, the most common verb you'd see in
a public list of comment activities would now be 'add' instead of
'post' (By virtue of there being Comment objects, a historic 'post' is
implied)

2) I could not use 'add' or 'remove' from conversations. Instead, we
could use a 'state' property on the Comment objects with values in
"public", "pending", "removed", etc. Moderation activities would be
represented using the 'update' verb to change this property.

3) Does Audience Targeting belong in this discussion?

Thanks for everyone's time and insight in this problem. Been tracking
the mailing list for awhile now, and we're excited to support AS as
soon as we nail down the right way to encode our data model. :)

Benjamin Goering

unread,
Jan 18, 2012, 2:32:05 PM1/18/12
to Activity Streams
Has no one dealt with representing moderation?

I'll keep checking this thread in case anyone has opinions, but will
probably move forward developing the first option I presented above.
Reply all
Reply to author
Forward
0 new messages