Updated: Tweetmeme accuses Retweet.com of stealing its code

twt

When I read yesterday that Retweet.com was about to launch a competitor to Nick Halstead’s Tweetmeme, I dropped Nick an email to ask if he had anything to say about it. He didn’t reply to my email, and now I think I know why. Look what Nick just posted on the Tweetmeme blog:

What caught my attention was that some industrious individual (@travisketchum) had left a comment on the TechCrunch article that he had been doing some digging around on the website and had found a link to their development environment. What we found ourselves was that our retweet button Javascript and the WordPress plugin code seemed to have been directly copied from ours.

We are happy for others to learn from our endeavors and flattered by the copying but some of our more complex JavaScript was obfuscated to deter others from attempting to re-use our code. We take a dim view of trying to pass off our code especially when it is attempting to create a competitor.

We our seeking further legal advice and will be pursuing every avenue to protect the hard work of our team.

Can this be true? I’ve emailed Nick for more information, and I’ll be trying to get hold of Retweet.com’s COO, Tyson Quick, as well.

Update: I’ve been alerted to the following similarities in code between the Retweet.com and Tweetmeme.

(1) Take a look at the code for Retweet.com’s Retweet button (retrieved from http://174.129.199.128/meme/static/retweets.js at 17:43 today):

(function()
{
  var _url=window.location.href;
  var _url=_url.replace(/((?:?|&)?fbc_receiver=.+)?(?:#.*)?$/,"");
  var url=((typeof retweet_url=="string")?retweet_url:((typeof retweet_URL=="string")?retweet_URL:_url)).replace(/+/g,"%2b");
  var source=(typeof retweet_source=="string")?escape(retweet_source):((typeof retweet_SOURCE=="string")?escape(retweet_SOURCE):false);
  var style=(typeof retweet_style=="string")?escape(retweet_style):((typeof retweet_STYLE=="string")?escape(retweet_STYLE):"normal");
  var src="http://174.129.199.128/meme/widget/tweets/";
  switch(style){
    case"compact":
           var h=20;var w=90;break;
    case"rednose":var h=71;var w=60;break;default:var h=71;var w=60;break
   }
   src+=url;
   if(source!=false)
   {
     src+="&source="+source
   }
   document.write('<iframe src="'+src+'" height="'+h+'" width="'+w+'" frameborder="0" scrolling="no"></iframe>');
   retweet_url=null;
   retweet_URL=null;
   retweet_source=null;
   retweet_SOURCE=null;
   retweet_style=null;
   retweet_STYLE=null})();

This is an almost exact copy of Tweetmeme’s retweet button code. The word “tweetmeme” has been replaced with “retweet”. Note also the “rednose” reference: it refers to a now-defunct feature of Tweetmeme’s button.

(2) Here’s some code from Retweet.com’s WordPress plugin (retrieved from http://174.129.199.128/meme/static/retweets.zip today at 17:49):

function tm_options() { add_options_page(‘Retweets Settings’, ‘Retweets’, 8, __FILE__, ‘tm_options_page’);

}

function tm_update($content) {
See those "tm_" functions? "tm" stands for Tweetmeme.
Want more? Try looking at the two websites side by side.
Update 2 (@17:58): It appears Retweet.com has begun to delete offending code from its servers. Check out this 404 error for a page that previously contained widget code.