Brion Vibber wrote:
Hmm, not impossible -- I believe we're already filtering gateway'd notices like the Twitter import bridge from public timelines. (Need to double-check on search.) Having multiple notice ids is certainly the easiest way for us to handle pushing the reposts to other services on our infrastructure.

So, here's an alternative implementation that we discussed on IRC. I'm using the term 'repeat' here since it sounds like 'retweet'.

  1. We add a new column to the notice table, 'repeat_of'. It's a
     foreign key to notice.id. Semantics are, "this notice
     is-a-repeat-of that notice."
  2. The "repeat" button appears in the notice list, kind of like before.
  3.  The 'repeat' action takes a notice ID as an argument, and creates
     a new notice with the text sprintf(_("RT @%s %s"),
     $notice_author_nickname, $notice_text) and with the repeat_of
     column set to the original notice's ID.
     Example: if Alice repeats Bob's notice #32 with text "blah", her
     new notice #33 will have text "RT @bob blah" and its repeat_of
     column will have value 32.
  4. In the Web UI (noticelistitem class, to be exact), if a notice has
     the repeat_of column set, we show the author, timestamp,
     permalink, etc. of the original notice, with "Repeated by <repeat
     author>" somewhere underneath.
  5. We implement the retweeting methods of the Twitter API. I think
     they should all be pretty realizable using the repeat_of column.

Some pros to this implementation:

   * because they're "real" notices, repeats flow out everywhere
     "normal" notices go: on the Web, in the API, over XMPP, SMS, OMB,
     RSS and Atom, and to Twitter and Facebook. They also appear in
     your profile timeline.
   * we can implement the Twitter retweet API methods relatively easily.

Some downsides:

   * Repeats will get "repeated" everywhere; we don't remove
     duplicates. So, if there are 100 repeats of a notice, those
     repeats will appear in search results, on the public timeline, in
     groups, in tag streams, in inboxes; everywhere. This is just how
     things work right now, but it's one of the major advantages to
     Twitter's retweet system that they don't get duped (I think...).

All in all I think it's a pretty clean implementation option. I'm going to try to implement it as a plugin for 0.9.0rc2.

-Evan

--
Evan Prodromou
CEO, StatusNet, Inc.
e...@status.net - http://identi.ca/evan - +1-514-554-3826

_______________________________________________
StatusNet-dev mailing list
StatusNet-dev@lists.status.net
http://lists.status.net/mailman/listinfo/statusnet-dev

Reply via email to