Turning Drupal into a Distributed Twitter/Micro-Blog

One thing that has really blown up in the past two years is micro-blogging and the idea of sending little updates to a mass majority of people at once. These updates are public, and users can "subscribe" to another's updates, therefore encouraging conversations to start, and "lifestreams" to spawn.

Some fairly large websites that provide this type of service are Twitter, Jaiku, Facebook, Spoink, LinkedIn, and

Robert Scoble has made some pretty interesting quotes about the phenomenon, my favourite being "Twitter is the public square. Lots of noise, little signal. Blogs are like a speech. Signal, but little noise". But that's up for debate, and out of context with what I want to talk about in this blog post. What I want to talk about here is integrating micro-blogging with the content management system, Drupal.

Recently, has become quite popular. What makes it different then other services like Twitter is that it is open source, under software named Laconica. Since Laconica is open source, it means that there could be any number of servers running the software at any given time. I could be posting on, while my friend is posting on SportsTwit. So how do I subscribe to my friend's posts when we're on different networks? The answer is provided through the OpenMicroBlogging specification, which describes how two different systems could manage subscriptions across networks. When I log into, I see updates from people across a number of different Laconica installations and networks.

So why would we want to bring this to Drupal to make a distributed Twitter clone? This would allow you to use your own blog as your Twitter/micro-blogging profile. People could still subscribe to your posts, and you could subscribe to theirs. Instead of just writing small 140 character text updates, you could incorporate anything you wanted (video, pictures, audio, etc). Drupal is all about distributed open source awesomeness, and this would bring that awesomeness to the micro-blogging world.

How would we put this into action? The first thing to do is take a closer look at the OpenMicroBlogging specification, as well as the awesome OAuth Drupal module. Sumit Kataria wrote a brilliant post about OAuth and how it works. I posted a groups discussion on it a while ago to get discussion going, and Tim Millwood mentioned that he started FooCity. It doesn't allow subscribing to other networks through the OpenMicroBlogging specification though and that, my friends, is the next step to allowing the ultimate distributed micro-blogging platform come to life: Implement the OpenMicroBlogging specification using Drupal and OAuth.

Quicksketch + Webchick = Drupal Love

webchickFor those of you who have been living in a rock and don't know who Nate Haug or Angie Byron are, they are Lullabots, and huge people behind the Drupal community. Nate was largely responsible for the awesome drag and drop, and the crazy jQuery features, the String Overrides Drupal 5 port, and other awesomeness in Drupal 6, and Angie is just all over the place.

Well, Nate, being the awesome guy he is, gave Angie an awesome new theme for her website. The reason I bring this up, is because of the webchick logo you see on the right. I mean, look at it! If that doesn't make you smile, then I don't know what will.

Great job, Nate! I feel the Drupal Love!

Druplicon Getting Some Love

People who talk with others on IRC, particularly on #Drupal, will be happy to know that our loving IRC bot, Druplicon, is getting some love. Druplicon, if you don't know, is the IRC bot that idles in many of the Drupal IRC channels. It logs chats, helps you remember facts, and just is there when you feel like giving out the odd botsnack. Its powered by the Bot module, making it integrate with Drupal very nicely.

Anyway, I've been routing through the Bot module API lately and thought it could do much more then what it was currently being used for. Since it's run off of a Drupal website, we could integrate it with one of the many other modules out there. Just think, what could you do with an IRC bot on a Drupal website?

  • Dynamically create "meeting note" nodes when you're having a meeting.
  • Only accept people with Drupal user accounts into a given channel
  • Asterisk to make phone calls from an IRC command prompt.
  • Location module to spit out information about places it notices in a channel
  • Private Message module to send private messages through the website from IRC
  • Twitter to make tweet posts from your chat window.
  • Weather to tell you what it's like outside
  • Pirate module to have instant translations to Pirate-talk.... Yar.

In order to make any of these secure though, it definitely needed an authentication system. You wouldn't want people to make Twitter posts in your name, or take over your helpless IRC bot. So, I put together a small little module called that checks your IRC hostname,and your Drupal username. It worked pretty well, so I thought I'd take it one step further and allow me to make Twitter posts from IRC. Here's the result:

< RobLoach > TwitterBot: twitter Testing the new Twitter Bot Drupal module for IRC Twitter posting!
< TwitterBot > RobLoach: You successfully posted to Twitter.
< NotRobLoach > TwitterBot: twitter I'm posing as Rob Loach!
< TwitterBot > NotRobLoach: You are not authenticated to post on Twitter.

If you don't believe me, check the log! Anyway, posting to Twitter is just the beginning. If you want it, the code is available, and I'll be working with eaton, Morbus, dmitrig01 and cwgordon7 to make Bot module the best it can be. This is the start of some awesome things happening to Druplicon. Having authenticated sessions means we can do some really powerful stuff. I'm particularly looking forward to private messages that send when the recipient returns from being offline. What's on your wish list for Druplicon?

Parents Anniversary in the Toronto Star

John and Patti LoachMy parents were featured in the Toronto Star today: Patti and John Loach.

It's a great article, that covers their affiliation with Patricia Zentilli (IMDB), how they met, what they're doing musically, along with a note about my brothers and I. Congrats, Mom and Dad! Happy Anniversary! Love you!

And since, I think one picture isn't enough, here are more!

Disqus and Drupal: Rethinking Comments

For those of you who don't know what Disqus is, it's a web service that provides a slick enhancement to comments in websites. Usually when you visit a website, you see a discussion going. This discussion usually just takes place on that website. What you're left with is a bunch of different websites with a bunch of different discussions going on. Disqus rethinks this philosophy by bringing all of those different discussions together.

If you're making a comment on a website that uses Disqus, you'll be able to not only do cool things like make posts from your mobile device, reply to threads through email or make voice comments, you'll also be able to see other discussions going on about the same thing from other websites. You can track where you're discussions are taking place, and get email updates when replies are made. You can also subscribe to a user's comments, export your posts, or import new sets of comments. In essence, Disqus is rethinking how discussions are taking place on multiple different websites.

Although the Drupal comment module is pretty nice, it didn't do exactly what I wanted on my own site. Disqus seemed like a nice alternative, so I put together a Disqus Drupal module, which implements the Disqus web service using Drupal. It allows you to add a discussions on any node type (although we could easily extend this to any taxonomy item, any view, etc). The Disqus guys are working hard on adding import features, as well as extending their API, so there are plans to take advantage of those with this module later on, but this is a good start. If you're interested in trying it out, feel free to make a comment on this post saying where you plan to use Disqus. Enjoy the Disqus Drupal module, and feel free to add any additional ideas you may have!

Syndicate content