> 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. :)