Birds of a feather
For well over a year now, Twitter has been an often-requested addition to our repertoire of services. As a user of the service I absolutely understand. The current base of Twitter clients often leave something to be desired, behave in a weird way, or just add an additional application you need to keep open.
Fear not! Using Matt Gemmell‘s MGTwitterEngine, a library used to communicate with the Twitter API, I’ve managed to make what I consider to be a very good Twitter client into Adium. Your friends (people you follow) are displayed in a group on the Contact List: adding or removing will follow or unfollow them, and chatting with them will send (or receive) direct messages. Note that you can only send a direct message to someone who follows you, so it might be a one-way conversation.
A group chat named “Timeline (username)” (you can rename it like I have above) will appear alongside your Twitter contacts. When new tweets arrive, this group chat will open; you can close it to help keep your place in the tweets, or leave it open and watch them arrive. Of course, the check interval is customizable (between never checking and checking every hour), and you can force an update through the chat’s context menu. There’s also an option to automatically update tweets when you send one.
When an incoming tweet is a reply to one of yours, the message style you are using will highlight the message for you. I’m going to be modifying all of the message styles included in Adium to support this (it’s been around for group chats since 1.3 was released, but not many have added it). You can also set an Event to fire when a reply comes in: display a growl notification, play a sound, whatever floats your boat!
You can get information on any of your Twitter contacts, and their biographical information (with links to friends, followers, and updates) and their latest 20 statuses will be loaded.
Next to every Tweet is a set of action links. “original” will go to the post which the tweet is replying to, “link” will go to the permanent link for the status, and the “reply” link will set up a reply like below. The “@” character next to the character count indicates that the Tweet you are sending is replying to a specific tweet.
If you come across a tweet online, you can open the “Reply to a Tweet” window, which lets you either enter the username and status ID, or paste the twitter.com URL to fill in the information. This makes replying to tweets other people reference a great deal easier! For example, if I didn’t click the “reply” link for Ryan’s status above, I could paste the Twitter.com URL into the window and see something like this:
My goal has been to integrate the service seamlessly into the Adium experience, and I think I’m meeting or exceeding my own expectations. However, I’m definitely open for suggestions which could go in before this is released. There’s still a few bugs to iron out, a few things to finish up, and a few new ideas which are bound to pop into my head. We also need to beat Twitter into submission about giving us a service identifier.
I’ve got a fun few ideas for ways Adium could save you time and effort, like automatically uploading images you insert into a message (like you would a direct IM on AIM) to Twitpic. This will largely depend on how much time and effort are available before Adum 1.4 is released (hopefully in the next few months we’ll see a beta!) and how many insane stints of programming I can slip in between now and then.







March 8th, 2009 at 11:25 AM
That’s what I call two birds with one stone.
Looking forward to this as well as 1.4. Twitter in Adium suddenly feels very natural the way you describe it.
March 8th, 2009 at 11:41 AM
That is great news! Maybe that would be the thing that would finally bring me to use Twitter. Tell them this, they would get one more client, at least from me!
March 8th, 2009 at 11:46 AM
This looks awesome. Great idea and keep it up! One suggestion which you may already be doing, but I didn’t see above after reading twice: The web Twitter page will shorten any URL that puts you over the 140 limit. Any way you could possibly automate the same thing?
March 8th, 2009 at 12:19 PM
Eitan: We have a character-counter in Adium 1.3 and later. Colin put it in for using Twitter over XMPP; in 1.4, it appears on the Twitter service as well. It’ll let you go over (it’ll read negative), so you can write out a thought before cutting it down to fit.
March 8th, 2009 at 12:52 PM
Great! Will skype chat be featured next?
March 8th, 2009 at 1:03 PM
Sounds (and looks) great!
May i suggest to add An entry in the Twitter Group to follow Tags? So it is a timelime but that one of all twits with a specific tag?
That would make this my absolutely preferred Twitter Client.
March 8th, 2009 at 1:12 PM
Is it possible to do this without hard-coding twitter.com so that it could also support, say, identi.ca?
March 8th, 2009 at 1:23 PM
@Eitan K – twitter.com is actually what will shorten a URL if it goes over, but I could see about auto-shrinking URLs which are pasted in.
@Alex von Halem – This is not the place to request features, but Skype will probably never come: it’s encrypted, and not reverse-engineered. It’s not easy at all to do.
@DarkMoonWolf – In the long term plans, yes. I would like to be able to add group chats which are search terms (i.e., search for #adium -> join group chat named #adium).
@Daniel – No, sorry.
March 8th, 2009 at 1:27 PM
Amazing work! This may very well be the first desktop Twitter “client” that I end up using regulary
March 8th, 2009 at 2:53 PM
As someone who uses twitter very often, you’re going to need to get that update time down to like 1 minute, at the very most, 1 hour is WAY too long.
March 8th, 2009 at 3:27 PM
Hey Zac,
Looks good; glad my MGTwitterEngine code came in handy. Looking forward to trying out the Twitter support in Adium 1.4.
March 8th, 2009 at 3:49 PM
@Jake Marsh – Right, which is why you can set it to a lower value. The options range from never to 60 minutes, you can pick 2, 5, 15, 30, or 60 minute update intervals.
@Matt Gemmell – Thanks for working on it, it’s come in very handy indeed!
March 8th, 2009 at 4:59 PM
Any chance we can get a beta out there to help test things out?
March 8th, 2009 at 7:12 PM
@Charles Marshall: It’s in SVN, so I made a build of it:
While Twitter seems to work pretty solid already Adium has crashed already so it’s not stable, and I think I’ve run across some other 1.4 related bugs already (mostly in the contactlist). So.. be prepared for that kind of stuff in alpha software. Use at your own risk.
March 8th, 2009 at 9:51 PM
@Charles Marhsall / Simon – I don’t mind people running trunk, but I would really not prefer to (at least on here) encourage people to use non-upgrading, unstable copies of trunk. It’s just a support nightmare.
March 8th, 2009 at 11:21 PM
I am a heavy user of both Adium and Identica, and I am currently using their Jabber interface. I would be extremely interested in having Adium support Identica and other services that support the Twitter API and not just Twitter. If you could put in a preference so that we can use a different URL instead of Twitter, that’s really all you need to support Identica/Laconica, I strongly urge you to take that small step to support open source web services.
March 8th, 2009 at 11:22 PM
* a different URL instead of twitter.com, that is.
March 9th, 2009 at 4:17 AM
Excited to get my hands on a release of adium incorporating this feature. I’ve wanted to use twitter and adium together for ages now. Kudos for delivering this.
March 9th, 2009 at 6:14 AM
Oh this sounds amazing. I keep moving from one client to another, whereas Adium has remained my chatter of choice for years now. Would love to see this in action. Any release date?
Cheers
March 9th, 2009 at 7:49 AM
OK, Between the time of my starting to write my comment and hitting refresh I see its in 1.4. Embarrassing
Looking forward to 1.4 alpha! Cheers
March 9th, 2009 at 8:41 AM
omg Richards you got my words!
March 9th, 2009 at 11:47 AM
I’m very interested in testing twitter integration to report bug if necessary but building the newest trunk version only give me the option to see the Twitter account type in preferences, If I click nothing happens
March 10th, 2009 at 4:27 AM
Tested the trunk version, it works awesome.
March 10th, 2009 at 9:32 AM
@Matthijs the problem has been fixed few hours after my comment
March 10th, 2009 at 12:12 PM
@Nelson – The major problem with Laconica is having to special-case it. The URLs for permanent links/etc don’t follow the same formats, so I’d have to not include them at all…I don’t like this. I had identi.ca semi-working locally, I had to change one or two things for it. However, it doesn’t respond to rate_limit_status at all, which is part of the Adium login step. Other than that, it probably works.
March 12th, 2009 at 12:27 PM
This looks absolutely brilliant, I’ve been wanting a new twitter solution for OS X for a while and as the current trend for twitter apps is to use air, I haven’t been getting along well with any of the newer apps! Plus I have adium running most of the time and I always prefer to run as few apps as possible
My top requests for a service like this would be to incorporate twitpic & twitlonger – both these services are brilliant & I’ve become quite reliant on them in tweete (twitlonger has only been in tweetie a few days and I love it already!)
How do you post a normal tweet, that is not a reply or direct message? On the timeline ‘group chat’ window?
March 12th, 2009 at 12:30 PM
This is awesome. Thanks so much!
March 12th, 2009 at 12:39 PM
This is awesome. I’m stoked.
March 12th, 2009 at 12:54 PM
Wow I cannot wait for 1.4 with Twitter. I have been looking for a good client to use but they all seem rather clunky. I bought Twitteriffic and it works for the time being but it is a pain also.
I look forward to this addition
March 12th, 2009 at 1:01 PM
“If you come across a tweet online, you can open the “Reply to a Tweet” window, which lets you either enter the username and status ID, or paste the twitter.com URL to fill in the information. This makes replying to tweets other people reference a great deal easier! For example, if I didn’t click the “reply” link for Ryan’s status above, I could paste the Twitter.com URL into the window and see something like this:”
You could have someone whip up a greasemonkey script that could send replies via Adium. I can think it, but I can’t make it.
March 12th, 2009 at 2:06 PM
@Zoe Corkhill – You can post in the group chat, it will send a normal Tweet. You can also set a “Social Networking Status” (globally, to Facebook/Twitter at the same time, or to the specific account) though that’s a bit more effort. I haven’t seen Twitlonger before, I’ll take a look.
@Tim Burke – It will be pretty trivial to make a greasemonkey script like that.
March 12th, 2009 at 2:16 PM
As long as there is an easy way to hide away the contacts for the Adium + Twitter integration, I think it’s an awesome setup. But I don’t have any interest in seeing a list of all of the people I follow on my buddy list.
March 12th, 2009 at 3:17 PM
Will the reply’s provide the proper reply ID’s (not sure what they are called)? I hate it when I want to drill down through another person’s reply and there is no reference to the original tweet.
March 12th, 2009 at 3:26 PM
+1 on what Jonathan Metts said above, if it’s possible. In any case, this sounds fantastic.
March 12th, 2009 at 4:03 PM
+1, I hate replies without the “in reply to…” and the reference to the original post.
March 12th, 2009 at 4:28 PM
I love the idea of having one fewer client to think about. I don’t love the idea of having all those twitters cluttering up my contact list. It isn’t necessary, is it? How about an option to hide the whole group? (Not just shrink it up, which only works if you have your contacts in groups) No other client I’ve seen needs to show you everyone you’re following and even the main twitter page puts it on a separate screen. And for a killer feature, it should have the ability to open new ‘chat windows/timelines’ to follow searches. I was a ta conference this week where participants were all twittering with a hash tag, and I switched clients to TweetDeck just so I could have a section to follow that tag. Killer feature.
March 12th, 2009 at 4:56 PM
@Jonathan – Yes, in_reply_to_status_id is set properly when you click a reply link.
@Chad – I added View > Hide Social Networking Contacts, which makes only the timeline appear. I’ve been toying with the idea of a group chat with possible search terms.
March 12th, 2009 at 5:05 PM
Can’t wait for it, Twitterrific bores me.
March 12th, 2009 at 5:24 PM
Great feature … = )
Got my own Adium from svn with tweeter feature =)
March 12th, 2009 at 5:50 PM
This looks really awesome, with the exception of the twitpic part… why twitpic? A service that require that it’s users handle their twitter credentials even for a simple comment on a photo! I would rather have images uploaded to flickr and the link tweeted (since flickr has a nice authentication interface that does not require users giving their passwords away for 3rd parties).
Other than that, I am pretty excited about the possibility of having twitter updates on my adium again (I used to use their discontinued IM integration…)
March 12th, 2009 at 6:13 PM
Next thing, you might as well add facebook status and news pages like EventBox.
Can’t believe this will make it in before Xbox chat though… Since Xbox chat is still actually chat.
March 12th, 2009 at 8:11 PM
Just compiled lastest adium svn, works like a sharm goodbye thwirl and pwitter
thanks Adium team
March 12th, 2009 at 8:20 PM
Allow me to also throw my support behind the idea of having hashtag-based “chat room” functionality baked into any implementation of Twitter in Adium. If you had that, you would utterly kill any need I might feel to use a separate client like TweetDeck or Twhirl. If you also tossed in Ping.fm integration, you would make my year!
March 13th, 2009 at 12:44 AM
If you ask me, I’d say that integration with IM-only Skype would be FAR more interesting to me than Twitter integration. So hate using Skype, but I IM with people on it with surprising frequency. Think of it as a strong request.
March 13th, 2009 at 3:11 AM
Dave Taylor: if Skype had a nice API with existing libraries to reuse for talking to it (as Twitter does), it’d be a lot more likely to happen. Sadly, the opposite is true; they’re incredibly paranoid about their protocol.
March 13th, 2009 at 4:43 AM
Actually, there’s something missing – a one-to-one dialogue view like the one found in TwitterFon where you can see threaded conversations (both in @replies and DMs, listing only the tweets “in reply to” or from/to a specific user), and that I think is _precisely_ what Adium ought to do better.
I suggest you guys grab TwitterFon (it’s free) and give it a whirl – that specific feature is the reason a lot of people are turning to it on the iPhone, and, after all, Adium is all about one-to-one dialogue…
March 13th, 2009 at 10:30 AM
With your twitter-announced concern over twitpic performance, how about letting the user select a URL-abbreviator and a photo-store? That would allow someone to choose twurl.nl if they like it, or some other URL-shortening tool, but I’m not sure how a flickr/twitpic choice can be made. (@-replied in twitter but I doubt you’re following me
)
March 13th, 2009 at 11:40 AM
This looks awesome. If you pull this off Adium will be my sole desktop client, which will be a relief. One question: Will the Twitter contact be in a separate window from my standard chat contacts? Otherwise I can see the contact list becoming unmanageable. At the same time, I think most people wold likely skip the Twitter contacts list as the list would likely include hundreds, potentially thousands of names?
That said, rock on — Adium rules.
March 13th, 2009 at 12:03 PM
Looks great!!, I can’t wait. Donation button time!
March 13th, 2009 at 1:17 PM
I run Adium most of the time and I’m constantly logged into Twitter via the rather excellent TweetDeck. I doubt Adium would replace TweetDeck but nonetheless Twitter integration would be fantastic. I look forward to reading more about this in the near future.
Nice one!
Chris
twitter.com/marsahll24
March 13th, 2009 at 2:03 PM
This looks great! Please keep us updated on progress and when it might be released. I actually don’t use IM’s that often anymore, save for the odd AIM or GTalk request, but I use twitter everyday. Right now I’m using Twhirl, because it’s free. But if I could combine twitter with IM’s, Adium would become my default client! That would definitely be worthy of a donation.
March 13th, 2009 at 2:28 PM
Wow.. so Awsome ! Can’t wait to give it a try.
March 13th, 2009 at 6:53 PM
Is there any chance of somehow syncing your tweets with your AIM, GTALK, MSN status messages?
Keep up the amazing work!
twitter.com/teddyg
March 13th, 2009 at 8:09 PM
Thank you thank you thank you. This looks fabulous, and is such a logical extension! No more choking on Adobe’s Air, or dealing with Twitterific’s ad’s – woot!
March 13th, 2009 at 9:19 PM
@Fabricio Zuardi – I haven’t decided what to go with. No matter what service(s) I choose, code is going to have to be written for all of them.
@akatsuki – I think you’re missing the point. Twitter is basically a large group chat; this is how I am treating it. If you don’t agree, don’t add a Twitter account. But try it out: I think you’ll enjoy it if you’re a Twitter user.
@SonyaLynn – My TODO definitely includes it; the problem is MGTwitterEngine doesn’t support it (yet) in a release version, and it’s not an XML outputted API so I would have to utilize a secondary parser. We’ll see; I want it myself.
@Dave Taylor – Skype just isn’t happening. There’s no need to ask. It’s an encrypted proprietary network with *0* third-party clients.
@Rui Carmo – I’ll take a look. Direct messages are private chats, though. Threaded.
@davidconnell – You can detach any group (right click – detach), or you can hide the Twitter contacts in 1.4.
@Ted Grubb – On the TODO list. It’s technically possible if you don’t enter it in the timeline chat, but I intend to do it a bit more properly.
March 14th, 2009 at 9:33 AM
FYI -I know many of the devs are on all the social websites, keeping up to date… but just incase a few of you have not seen:
http://digg.com/apple/Adium_gets_its_Twitter_on_in_version_1_4
I read the article linked, but then went and read the comments for the Digg… someone might want to go through there and straighten some people out
March 14th, 2009 at 10:56 AM
One of the features that I loved about the Twitter IM while it last was, that I didn’t receive tweets from everyone I follow (3,500 +), but only from those that I’ve turned “Device Updates” on.
Will this functionality be in Adium 1.4?
Thanks for providing a great resource.
March 14th, 2009 at 11:22 AM
adium is really awesome
March 14th, 2009 at 12:41 PM
@KatLady – Honestly, it’s not worth the time. People will be straightened out over time.
@Evan Courtney – The functionality will (probably) not be in Adium 1.4. I am, however, interested in how well Adium would handle such a huge amount of follows. Be sure to keep us updated when 1.4 alpha/beta is released.
March 14th, 2009 at 1:25 PM
You crazy folk will be interested to know that I’ve put Laconica support in the latest version of trunk. Follow me on identi.ca: http://identi.ca/zacwest
March 14th, 2009 at 1:37 PM
@Zac West – I will exceeded my allotted API limits fairly quickly, and will be unable to use this feature on Adium. I’ll try it out at the release though, and keep you posted.
March 14th, 2009 at 2:01 PM
@Evan Courtney – Hmm
35 requests to get friends
~15-20 requests per timeline update
You could have Adium set to update every 30 minutes and probably be okay.
March 16th, 2009 at 1:53 PM
THIS IS AWESOME.
March 16th, 2009 at 2:58 PM
Zac, are you saying that you take 15-20 requests to do a single timeline update??? Why such a huge number? /statuses/friends_timeline.xml is one request and should have everything you need in it.
March 16th, 2009 at 3:46 PM
@Tim Dorr – It will take 15-20 requests for someone with 3500 follows, I am guessing.
March 17th, 2009 at 1:31 PM
meebo beat us to the punch with an app for iPhone 3.0 software
March 18th, 2009 at 5:42 AM
Would it be possible to create groups of friends like in TweetDeck?
For instance I follow a ton of news related twitterers whose chatter can often overwhelm my client so much that I miss tweets from my core group of friends. If there was a way to create a separate group chat window just for them it would be awesome.
March 22nd, 2009 at 8:35 AM
I made an imaginary mockup… you can see it here:
http://macthemes2.net/forum/viewtopic.php?id=16794424
March 22nd, 2009 at 10:32 AM
Can’t come fast enough! it’s crazy that I like my iphone twitter app better than any desktop app available.
March 22nd, 2009 at 11:57 AM
Neat mockup, Zkaka!
March 24th, 2009 at 11:45 AM
Once again, the best messaging client (not only in the Mac world) out there.
Great one, even if I don’t use Twitter.
March 24th, 2009 at 8:12 PM
Will you also port it/make it available for GAIM/Pidgin.. ??
March 24th, 2009 at 11:29 PM
@enigma – Eventually.
@Zkaka – Interesting.
@ Tonci – Nope.
March 25th, 2009 at 2:33 AM
Can. Not. Wait.
March 25th, 2009 at 9:33 PM
Using it. Loving it. Release it
March 29th, 2009 at 5:27 AM
Great news, looking forward to it!
I do have some suggestions/questions:
- Is there support for multiple accounts?
- Along with TwitPic support, you could also implement Mobypicture
- Check interval could be shorter than every hour, maybe somoething like every 5 minutes?
- Automitically expand URL’s, so instead of showing tinyurl.com/…. you see the ectual link. This is done in EventBox and I love it. (of course not only with the TinyURL service)
- Show the Timeline “contact” at the top of the list (as an option or by default)
Hope I’m not to critical. This is really good news, I now already have 2 extra apps on my Mac for this sort of things.
Cheers! Lex
March 29th, 2009 at 9:37 AM
@Lex
- Is there support for multiple accounts?
Yes.
- Along with TwitPic support, you could also implement Mobypicture
Twitpic isn’t happening because I’m not willing to share the user’s credentials behind their back (let alone with OAuth it would be impossible to do so), even if they give permission it’s just not a good idea. I’ll look into mobypicture but it appears to require usernames and passwords as well.
- Check interval could be shorter than every hour, maybe somoething like every 5 minutes?
Quoting the post, “Of course, the check interval is customizable (between never checking and checking every hour)”
- Automitically expand URL’s, so instead of showing tinyurl.com/…. you see the ectual link. This is done in EventBox and I love it. (of course not only with the TinyURL service)
Possible with a javascript included in the message style, been thinking about a way to make it generalized so every style could have it. It’s only a few lines to add, if you wanted to modify the style yourself for it.
- Show the Timeline “contact” at the top of the list (as an option or by default)
It follows your normal sort rules; you could create a group for it, or move it around.
March 30th, 2009 at 4:37 PM
Nice! Thanks