Twitter and Identi.ca – State of the Union

Over the past weekend I recorded a special Gillmor Gang edition with Dustin Sallings, the inventor and chief proprietor of the famed TwitterSpy hack around Twitter’s late great Track feature. With Track over XMPP still disabled, a small but vocal group of Twitter users has used TwitterSpy, and another growing group of microbloggers has migrated to Identi.ca, an open source platform. Sallings is now working with the open Identi.ca XMPP stream to develop a similar Spy service, and I felt the time was right to drill down and discuss where we are and can go in the near future.

DUSTIN: Well, Identi.ca has the stuff I actually wanted from Twitter, which is the ability for me to request and receive a feed of the public timeline as it’s happening. So instead of having to poll various APIs and leverage people who are receiving such a feed, I can get it myself and do the types of processing I want, which means that users of my software can get, effectively, real time tracks.

STEVE: Compare the two implementations right now, TwitterSpy and IdentiSpy.

DUSTIN: I started over completely with the Laconica Tracker because it was an inverted project. Instead of having to define polling mechanisms and frequencies and stuff like that, I got to receive stuff that was coming in, so I built an architecture that would allow that kind of stuff to come in and get processed in these batched queuing types of mechanisms that can deal with traffic spikes, all that kind of stuff. It’s really sort of inverted, so I really started over – and it’s brought TwitterSpy closer to what I’m doing with the new work. Bit it’s still an inverted process.

In the long term I can imagine taking some of the polling stuff out of TwitterSpy and just feeding it directly into something like this. Featurewise, my IdentiSpy tracker is behind but technologywise
it’s advanced. Right now I’m in the process of writing the read/write support so you can carry on the conversation in the single IM window instead of two and some other things like that.

STEVE: A single conversation?

DUSTIN: Right now, I’m tracking stuff, and it comes in from one XMPP account, and then I say, oh, that’s something I want to talk about and I go to this other window and write stuff and wait for it to come back in to the first one.

STEVE: What is the other window? Is it the Identi.ca Update window in GTalk/Jabber?

DUSTIN: Right. There’s the features that Identi.ca provides, that is, here’s how you talk to us, and very limited listening – and I added advanced listening but no talking. So I’m trying to fix that right now.

STEVE: Will this give the same kind of listening capability that I have with the Update Gtalk window?

DUSTIN: The tricky part here is really the Friend Following. I don’t get a notification when you decide to follow someone. So I would have to occasionally go and ask whom you’re following, so I’ll be able to do that. I certainly could. But he way that works right now in TwitterSpy is I go to Twitter occasionally and I say, hey, has anyone I’m following said anything? Which is isn’t exactly what I want. So that part’s a little tricky.

STEVE: There’s no way for you to work with Evan (Prodromou, Identi.ca’s developer) to make that a little easier, or is that just a matter of polling their API…

DUSTIN: I’m certain he could feed me that data. It’s not high on my priority list right now. Right now I’ve got the keyword tracking, and I want to do the posting. And once I do the posting it starts to be a place where I kind of move into, then the other stuff would kind of follow.

STEVE: So, the kinds of things you’ve implemented in terms of TwitterSpy, such as AutoPost for example, which is basically a switch you can turn on so you don’t have to say post before each message. You’ll be doing that here?

DUSTIN: Right. What I’ve been working on is getting one of the Twitter APIs to talk to Identi.ca. I just successfully posted from there, so now it’s sort of downhill. I add the feature, I add the AutoPost feature, then it all just works and I stop posting from two windows to carry on a conversation.

STEVE: Right. You’re just using the other window for Follows…

DUSTIN: A follow is just a special case of a track. At the point where I’m making sure I’m tracking all the right people I can poll it or just ask him if there’s a way I can get a feed of that information too. I get the impression that he’s really open to data sharing so I don’t think that would be a huge problem. But I don;t know if that would be high on his priority list, so I’m not going to assume that if I ask for it right now that he’ll give it to me.

STEVE: Before we talk more about it is that you’re interested in doing…are you an Identi.ca user?

DUSTIN: I am, yes

STEVE: What’s your feeling about where the two services, Identi.ca and twitter, are in relationship to each other right now?

DUSTIN: Identi.ca is a bit rough right now. The XMPP posting is not reliable at the moment, which is one of the reasons I want to make my own because I think I can add a bit more reliability over what he’s got. There is no SMS support, well, email SMS gateway, but no proper way to post that, no clients that are really available. But these are all little issues, in the grand scheme of things, they’re not really important to me.

The real things that Twitter has right now are obviously user base and SMS. Twitter is the wrong direction as you can see. What you’re doing with Twitter is relying on this one small organization to build everything you would ever want, and hope the remaining APIs they give you allow you to fill in the rest but as we’ve seen it really doesn’t. Identi.ca is sort of a bit of an inversion of that where we’re relying on the community to build the things we want. The community is behind, i mean, it’s brand new, barely crawling yet. I’m pretty impressed with where it is right now. I can imagine, all the user bases are growing, so it’s just going to — it seems like the kind of thing that will fix itself very rapidly and in the right direction.

Really even then it’s only working toward the right direction. i thikn the end direction is to do the same thing we’re doing right now with blogging. There are blogger.com services, but I wrote my own blog, integrated with FF and google reader because there are standards for that.

Identi.ca is important because it’s making people aware that you can separate these a bit, but it’s not quite doing the full distributed separation that I think the end game is.

Shaking people up a bit is the important thing it’s doing.

STEVE: Pulling back from Twitter…fed up with managed non-response of the company, but more importantly, they have huge user base so it’s not easy to be able to communicate with vendors, people, etc. The real reason I did it was to essentially promote that there was another service that had this capability — this realtime capability that made Twitter what it was. Was mostly amarketing effort on my part to try to encourage some group of ppl to come over who would then encourage others to come over. Issue then emerged: so-called double-posting issue. What’s your attitude toward that.

DUSTIN: there’s businesses that seem to have sprung up to provide this service of spamming across multiple networks. it feels like there’s something missing — friends in one place, friends in another place, you want to make sure they hear you, but ignores friends in both places.

What you’re really wanting is something that happens in email. You have this point to point and tools to get your message out. They’re trying to solve a problem but solving it the wrong way.

STEVE: Bigger problem created – noise of fragmentation, duplication, drowns out signal to noise of new service, which pushes you back to suborning the larger cloud.

If you have read/write capability in IdentiSpy and TwitterSpy, then the ability to merge those two clients together and provide a single stream where followers are a special case of track…if you do that you come up with a single client that allows you to hear everything, leaving the question of how you speak back to the individual clouds. If you can do that, it would be a real advantage.

DUSTIN: That’s effectively is what this IdentiSpy architecture is about. There’s a place where those messages can go, and those messages that end up there get brought into the track system and properly distributed back out. so taking the part that reads from twitter for twitter spy and feeding it into this place means you basically get that right away. When you turn it around and go to write it’s a little scary to me i can’t imagine doing that and presenting an interface where someone has to choose which service and not getting yelled at constantly for not supporting them all at the same time. Then I’m the spammer. It’s really what people want to do anyway..there’s ping.fm and all these sorts of things…

STEVE: If you were to merge streams together, you’d know which service the message came from.

DUSTIN: Right.

STEVE: If the user could turn on and off the messages from individuals they’re following based on if they’re coming from both or one stream. Say a message is coming to you from Twitter and you’re on IdentiSpy only If you respond to it, you know where you’re responding, you know where you’re responding, so that message could go back to that service, Might have a trailer on it saying ‘via IdentiSpy’, to advertise that you’re responding from the cloud that you prefer as opposed to the one that generated it. That already exists, with Twhirl or other clients. Why not able to identify what the cloud is?

DUSTIN: the client identifier doesn’t really tell you that. Could register for multiple app ids, but kind of an abuse of that mechanism.

STEVE: let’s take example of someone you follow on both services. I listen to both services. Integrated stream of both streams — if I could somehow have that capability.

Easy thing to do is look at message and say I’ve already sent this message wiht this text. Some people have done a poll inversion thing, where they send this message out on Twitter and all your friends.

There is the part where you know this is the exact same person. Microformats allow you to recognize that two people are exact same person. it might be difficult to say two people i’m following are same unless you specifically say so.

STEVE: For many people the number of follows you have is smaller than the number of people who follows you. I have 70-90 ppl that I follow. If you had ability to say in one integrated window to say I know this guy on Twitter and Identi.ca are broadcasting the same thing, using a gateway on ping.fm or whatever. I write a flag in my track (if we’re using idea that track is a superset of follow). Couldn’t you write a flag saying if message comes from twitter from this person I don’t want to see it b/c i’ll see it on Identi.ca.

DUSTIN: What if they only send to one or the other?

STEVE: if they only send to one or the other, don’t flag them. User is responsible for cleaning this stuff up. Ultimately you can introduce algorithms for ths purpose.

DUSTIN: on TwitterSpy, i end up deduplicating messages. if message body comes back the same, i can deduplicate the message. One case that breaks is where a lot of people are saying the same thing and you want to see it all.

STEVE: What is interesting is ability to start following ppl and those who reply through a track keyword.

Twitter is not going to do this. Identi.ca is not going to do this. It’s going to take some kind of third party. Twhirl is doing it effectively, but doubt they have a strategy for providing for all this support and services for multiple containers and then turning around and handing to an open XMPP stream for someone like you.

Twitter is trading ubiquity and large cloud for lack of performance and inability to have a real time conversation, which automatically promotes services which can do that. I’ve said that’s a very highly monetizable audience. They know what they want, not getting it from one cloud, will migrate over to a cloud that does.

If we put these things into the same window, develops a certain momentum, which would encourage people to move to the most fidelity in terms of the source of data, giving them their cake and eat it too. They can move over from twitter to new service as features become more robust, able to identify those remaining on twitter and evangelize new services.

DUSTIN: I like the idea in the future of having multiple people in my position you can choose from and then multiple people in Identi.ca’s position to choose from and not having to say “everybody come over here” like on all the social networks. Like if you had to get all your friends to move from Friendster to Orkut to Facebook and all those sorts of things, and those guys are still trying to solve that problem of data graph portability and all that stuff. But

STEVE: All right, so you have the same problem and you have the same motivation. You have a small audience that cares about this, but it’s a highly targetable audience in terms of tis value proposition. It’s quality, not quantity. And I don’t mean to say that people who use Twitter are not quality audience, of course they are, but the fact is that they are limited in what they can do. The major problem, of course, is the serendipity of hearing voices on the network, on the larger network.

The reason I am trying to figure this one out now, is that it occurs to me that at a certain point my particular vote of staying off Twitter in regard to posting becomes irrelevant. For most people it was irrelevant the first time I did it. It did have the success of bringing over a core group of people who I think have enhanced the core value of Identi.ca. Not only that, but I think that I’ve been exposed to a similar cloud of people over on Identi.ca that I was not aware of, and because of the limitations of the number of people I was following and I had the ability to not really capsize the stream or follow by following a lot of people so I’ve been following the people who either ask me a question or answer or yourself or Evan or some of the people who are trying to push this thing forward and I have developed an interesting group of people that I wouldn’t have been aware of.

So there is a certain amount of serendipity that has entered in because of the scale of the cloud at this point. Now that will change, and what I’m trying to figure out is at what point will it become logical to essentially, as I suggested, remarket the efficiencies of the smaller cloud to the larger group. In other words, if TwitterSpy and IdentiSpy merge, or if an iteration of it merges, it’s possible that TwitterSpy would be shut down immediately as a result of that. Have you had any conversations with the Summize or the Twitter people about your use of their stream?

DUSTIN: Not since the first day. I kind of expected something after the bug yesterday but for the most part it’s been pretty quiet, and this is really where their kind of inversion to the fire hose thing works. At some point, if it gets popular enough, polling is just way more expensive for them than just sending me a feed. So if anything, I would expect them to say you’re just making too much noise, here’s some data. That’s kind of an optimistic view, but it’s in their best interest at some point when I’m hitting their API so hard trying to look for everything that they should just send me everything to begin with and not be worried about it.

STEVE: That seems to fly in the face of what they’ve done with other developers and vendors.

DUSTIN: Oh, no, I agree, I’m just thinking of a— I don’t think it business levels very well. At a technical level it kind of makes sense. I ge the impression they don’t know what they want to do, but the more stuff they give away the harder it will be to do it and that’s sort of where the problems are right now.

STEVE: So, uh, I’m not sure that I understand …I understand their logic, at least the way they’ve rendered it to date, even though I don’t think it’s particularly smart. I don’t understand your logic about why they would suddenly want to give you more data. You mean give it to you directly through XMPP as opposed to through the API.

DUSTIN: Right. The idea is that at some point there’s so much traffic hitting them for these one-off API calls, I mean there’s what, somewhere around 200 users here right now, depending on how many of these 173 users, if they’re logged in, and they are actually using the Twitter services it means that every three minutes I do like two API calls against Twitter for each one of those users plus all the different treck calls that are going on for all of the users and at some point those requests are greater than the number of messages they’d be sending me if they just sent me all the messages directly.

STEVE: All right, so I understand. Two questions: GNIP. How would that interface here.

DUSTIN: Well, the problem with GNIP…so what I could do with GNIP is I could deal with a subset of followers and I’ve been looking at the GNIP APIs and they just don’t provide the value that I need. So they get the public timeline from Twitter, which means that if your friends are posting publicly, I can send a message to GNIP and tell them this is part of the user base that I want to see and I can get notifications from GNIP that say that this user who’s a friend of your user has just updated. So I can do that, except for the people who don’t post to the public timeline, in which case I still have to end up polling to see those people. The other thing is their whole idea is based on the importance of individuals saying things, which doesn’t make sense to me. I don’t care about the people, I care about the things they are saying. I don’t find people by talking to people I already know, I find people by looking for people who are interested in things and seeing who’s saying things. You know, the other way around. So GNIP doesn’t seem to have those services. Now they are in the position to do that, so they should at least at some level have the information to know these things are happening. But they don’t seem to be getting the what, t hey just get the who.

STEVE: So what are you suggesting that they do? Or are you suggesting that they do?

DUSTIN: The position that I would be in if I were them negotiating this stuff would be to get enough of a feed and then build out the APIs in such a way that they are track. Because they’ve got momentum and they’ve got partners and all that sort of stuff. They are sending the information now; if they can do the content analysis at that point and allow ME to watch things instead of people, then my job gets easier. And that’s the missing link. That’s kind of what I’m thinking. What I’m kind of approaching is being what I think GNIP should be. which is I pull the data or I have the data pushed to me, or however it works from various places, I do content analysis on it, and then I send out streams to various people who are interested in the content and not the sender, I’m not saying that in my data center or my garage I’m competing with GNIP, but conceptually it’s the same kind of service but a different aspect.

STEVE: Right. And you know the law of small numbers works here, which is that you’re… with the small group of users that you have, you are directly competing with GNIP.

DUSTIN: Right. And with the small number of messages I am receiving from Identi.ca today, I’ve got really stupid performance things I’m doing with my code and it’s not my priority right now. I mean I could go back and fix it,; but it’s working well enough that I can work on features and then go back and do some things…throw in some caches and stuff. I mean the latency right now is under a second from the time that you post something to Identi.ca and all of the followers all pick it up. At the point where it IS a asecond there’s a really simple optimization I can put it place.

It’s built to scale. I mean I can have multiple front ends, multiple XMPP servers multiple matching engines, all these multiple things can happen and it can grow horizontally. It’s really exciting especially when you have a couple of messages a minute. I believe I could take Twitter’s feed right now, not on my current machines, but I could go EC2 and process Twitter’s feed without an issue and do what I’m doing with IdentiSpy on Twitter.. I don’t think I’ll have a chance to show that, but my architecture supports high message counts.

STEVE: All right, so let’s examine… obviously just theory, but what can Twitter do to restore track and what would be the impact be? Again, if they don’t make track available in such a way that you could strip stream it along with Identi.ca traffic, then they don’t have what they’re.. the full solution. They only have a partial solution.

DUSTIN: Yea, the interesting thing about that is, if they bring back track in the state that they had it in before, which was single positive match sort of thing, I don’t know what the limitations are per user, but you know theoretically all I’ve got to do is create an account that tracks all of the stuff my users are interested in, and then I have an XMPP feed of the subset of their traffic that I’m interested in and then I can do my track on top of their track with no negatives and all that sort of thing. and then I’m feeding it into the same place where I’m feeding my Laconica traffic and then it all happens together.

STEVE: That would be good for you in other words.

DUSTIN: Yeah, that would be great for me. I could bring in all my accounts and do all that track in real time if that happened. I don’t know what their limitations would be on how many tracks I could have per account, I don’t think they’d like it. I don’t like creating a bunch of accounts to work around that limitation, but it’s all possible.

STEVE: All right, and then so let’s say they take a progressive, or at least a turn the other cheek approach to all this, considering that with the volume you’ve got now it’s not all that serious or important. important. At that point, you’ve got …and you merge the two services..

DUSTIN: It’s actually easier to merge those two services at that point because they’re both feeding data to me.

STEVE: But that doesn’t mean you couldn’t do it now.

DUSTIN: No, it’s a bit harder now. I’ve been thinking about it, but it’s not what I’m working on at the moment.

STEVE: Why would you do it?

DUSTIN: Well right now, I’ve got three windows to communicate with two services, and you know, fewer is better, I do like to have a stream of information coming in, and that’s how I built IdentiSpy. It’s just a really inverted Atom integrator, so all of the stuff that you do with your RSS reader, it happens here. The difference is, the Atom feeds come here, I figure out whether they’re interesting or not, and then I distribute them out to users. So really the fact that the current information’s identifier is Identi.ca is not the important part. The important part is information’s coming and I’m getting it. I don’t know of any other Laconica instances out there that have any kind of usage, but finding those guys out there and saying “send your data to me the way Identi.ca does” only legitimizes the service. Doing the same thing with Twitter further legitimizes the service except for the part where I have to do it badly.

STEVE: All right. If you were to… So what are your top five priorities right now in terms of features you’re working on and once you’ve answered that then I’ll ask you where you would put a merged stream as a priority.

DUSTIN: So the thing I’m working on at the moment is I’m getting the posts coming out of IdentiSpy. I want to be able to write back to Identi.ca and say here, there it is. I’ve also got prettification of the actual messages I’ve built for TwitterSpy so that when I receive the message I can do the markup for the ats and link you to Twitter and that sort of thing I want to bring something like that in, which would also support the idea of messages coming from different sources than just Identi.ca. But it means you can click on things and actually go places and see the users and stuff.

STEVE: All right. That would be number one, or two?

DUSTIN: The prettification is number two. The writing is number one, the prettification is number two. I’ve got other features in TwitterSpy like the ability to leave and follow users is all part of the experience for me, because I don’t look at the Twitter web site that much, because right now I can do things like, I’ve got a who is command and I can see who is some user…and I can see the last few things that they’ve done, information about them, where they are — all that sort of stuff and I can do that, you know, from where I am now. So being able to do all these kinds of things from inside of the one window. I’ll do a “whois stevegillmor.” It says you’re from somewhere, you don’t say where you are. But I can see the last three things you said, I can do all these sorts of things, and I get a link to your account. So all these types of commands that give me the ability to do searches and tracks and all that kind of stuff from the one window is where I want it to be. I want to bring it back up to the interface I had for TwitterSpy, which includes both the ability to do the writes and manipulations as well as prettier reads. So that’s kind of where the focus is, because that’s the part that I don’t like right now — is, the stuff I can’t do and I feel constrained.

STEVE: Alright, and what do you think… what is the second one, what did you call that?

DUSTIN: Well, I guess it’s really sort of one thing. I want the features that TwitterSpy had to exist in IdentiSpy. There’s a priority list in my mind, but it’s not, it starts with I want to be able to post, but I have all these other commands like leave and follow, search and who is and

STEVE: Right, I know but I just forgot the nomenclature you used for essentially marking up

DUSTIN: Yeah, I was calling it “prettification”

STEVE: I’m sorry, say it again?

DUSTIN: I was calling it “prettification?” I like to invent words.

STEVE: OK. Prettification. I got it now.

DUSTIN: “Marking up” sounds good. That sounds like English. Yeah, so being able to have the links in there. Possibly other things, like decoding tinyurls and stuff like that would be nice. Those are all little things that are not hugely annoying to me so the more annoying something is the more likely I am to work on it. I’ve had other people make some really interesting suggestions for types of things that they’d be interested in — hopefully if it’s annoying enough to them that they’ll do it. As far as where I am, the things that annoy me about my interaction are the things I’m interested in. I’ve also had a request for offline tracking support, which just sounds annoying to me but, you know, if it’s [transitional? traditional?] then, sure. And it’s not hard. The idea being that if you’re offline and something matches your tracks, just record it for you and when you come back online, show it to you.

STEVE: Well, but you already get that for free in Gtalk.

DUSTIN: Well, does it leave you online when you’re not there?

STEVE: I believe so. It records archives of your Gtalk messages. In Gchat.

DUSTIN: I don’t if that works if you just completely log off your computer. I think you actually need to be present for that. The idea here is that you don’t have to be present at all. You can go in, configure up some tracks and just turn off your computer and leave for the weekend and come back and see it all.

STEVE: Right, well, for me that’s like, you know, you tell the doctor that something hurts when you do something, and he says “Well, don’t do that.” So I’ll just leave the computer on. I have no pain there, whatsoever.

DUSTIN: It doesn’t matter to me. It would annoy me if it happened, so if I did it, I’d make it configurable.

STEVE: So that would be further on down the… what I was trying to get at was your notion of prettification, you mentioned that it would also incorporate the identification of where the information was coming from. It would be a big step along the road toward a merged strategy, which would allow you to be able to write back to the cloud that it came from.

DUSTIN: Right, and that’s what happens in Twitter today, although it’s really easy because it all comes from Twitter. But the tricky part really is, so it says who this came from, and stuff like that, but it isn’t web-interfaced so I can’t just click on reply. You can do an @ reply to some user, and it’s possible that two users have the account “me” at two different instances and they both say something that matches, and it’s hard. It’s the same problem you have right now on Twitter replies. You see this is in reply to something you said and you click on what it was in reply to and it

STEVE: I’m not talking about the specific use case of an @ reply. I’m talking about the ability to broadcast responses on an equal basis to both clouds at the same time, without having to send two messages to each cloud. In other words, you know, basically continue to respond to Identi.ca with Identi.ca messages but not send a message that’s in response to somebody on Twitter to Identi.ca, but rather just to Twitter.

DUSTIN: Yeah, so it’s a matter of making sure that the thing you’re responding to, or appear to be responding to, is on Twitter. Because what I get from you is, you’ve said this, and maybe you have an @ that indicates a user, and maybe recently there was a message from a user who has that name, who’s on Twitter, but it’s all kind of heuristics and maybe it works out OK and it’s not a big deal, but it’s not very exact, because I don’t know exactly what you’re responding to when you say something.

STEVE: Well, let me ask you this. If you — you’re getting this information from both clouds

DUSTIN: Right.

STEVE: Right? Are you getting the information, as you just suggested, are you getting information from something that’s coming from Twitter that’s a hit in track. Does it say that it came from Twitter?

DUSTIN: Well, I will have that information. I know where I’m getting stuff.

STEVE: OK. So, if you know where you’re getting stuff, and you have this prettification capability, couldn’t you mark that up with sort of an indication of where it — you know, “from Twitter.” As opposed to —

DUSTIN: Yeah. That part’s easy. What I —

STEVE: Hang on. So, now I’m a user, I’m processing this information, I click on that and respond, through some mechanism that I don’t yet understand as to how you do this.

DUSTIN: The problem is…

STEVE: If you’re going to mark up the identity of that person, aren’t you effectively doing what Twhirl does, which is to put the identifier in the posting window?

DUSTIN: So, there’s two different things. It’s really easy for me to tell you where the message came from? But there isn’t really a click kind of action. The click kind of stuff we have right now will take you to the site where the thing was, but it won’t, it doesn’t give you a response box, and that concept doesn’t exist in IM. So when you respond, it’s just effectively a new message from you. And I can read the message and I look at it and say this message looks like it was probably related to this message that came through recently that was from this user, but…

STEVE: Hang on. Just back up a second. You have some sort of a markup that indicates that a message has come in and you know where it’s coming from. Right?

DUSTIN: Right.

STEVE: OK. So, the user clicks on it, and what it does — just for the sake of prototyping — it puts appropriate information into the posting window.

DUSTIN: That’s not something I can do in general.

STEVE: So, in other words, that’s something that Twhirl does

DUSTIN: Yeah, I mean Twhirl can do stuff like that, but, I mean if you’re using Psi or Adium or something like that, that’s not necessarily a possibility.

STEVE: So, if you’re using Gtalk, there’s no…. Basically the way you respond is that you have to figure out how to be able to get the identifier for the user into the window so that you can send a message.

DUSTIN: Yeah, Gtalk’s actually the worst case, because the way the XMPP messages are formed, you have to send multiple parts. So I say here is an HTML, some HTML to display that represents this message. If you don’t support HTML here’s some plain text to send. Gtalk always sends the plain text, so you don’t even get to mark up for Gtalk. It ignores it. If you look at the difference between TwitterSpy on Gtalk versus TwitterSpy on Adium or something like that you can see it. There’s links for all the @s and the from and all that sort of thing, whereas in Gtalk it just kind of doesn’t do that. Gtalk itself will mark up the plain text message a little bit if it sees a URL, but for the most part it ignores anything I say.

STEVE: I understand that that’s the lowest common denominator. It also, for me, is the client that I use. At the moment, the efficiency of being able to interact with a real time flow outweighs the pain of having to drag down something and put it into a window. Let’s just say that we continue to discuss it on a basis of what Gtalk can provide for you. It seems to me that some sort of language that would say, in some sort of a hint, or a hashtag or whatever it would be, that says just send this to Twitter.

Twitterspy Yeah, that’s something I thought of. There was some discussion on some of these XMPP lists, that was about how to do these microblogging thingies in such a way that you can indicate both the user and the site. So you have the XMPP and email and all those sort of things where it’s just user@hostname. It might be good enough to just create a name for each one of these things, it doesn’t have to be a hostname, but instead of saying @user I can say @user@host, or @user @service. So you get a message that was from @stevegillmor@Identi.ca versus @stevegillmor@twitter or something like that,

STEVE: Right. And if there’s no indication of it specifically, then it would go to all registered services. For example.

DUSTIN: Yeah. Something like that. The all registered services goes back to the spamming thing, but I think that’s something I can’t really get away from, because I think there’d be enough demand for support all of these at the same time that aren’t…

STEVE: But, fundamentally, people got very angry at me for lopping off the @ sign because they felt that I was spamming everybody. In fact I was spamming everybody. Specifically I was trying to suggest, either you think that I’m too noisy, and in which case unfollow me please, or delete the track that you’re listening to, or, if you like it, then, you know, shut up and keep reading. So, it’s not your spam, I mean, if people want to broadcast to multiple services simultaneously, their problem is going to be that people who are trying to discern the most efficient type of information, and don’t have tools to be able to deal with that on the other end, on the consumption end, they’re gonna turn you off. So, you know, it’s not your problem, it’s their problem.

DUSTIN: This is kinda what I’m seeing a lot as sort of the theme here. We’re kind of in this position where the opportunity is greatly outweighing the people’s ability to keep up with demand, and I really like that. We’re in a position where there’s a lot of stuff to do, and lot of stuff we can do, and that’s what makes Identi.ca so appealing.

STEVE: I agree. So, bottom line is, as far as the things we just talked about, I can certainly see you, in the spirit of what you’ve been doing, provide an XMPP stream out — output that could be captured and utilized by someone like Twhirl or someone of that sort, which would then, if that stream contained these hints, if you will, that could then be captured into some sort of a UI over an Air or Silverlight client that would be able to make it easier for you to be able to reply, you know, intuitively, while at the same time feeding that back into the same stream that captures it inside of Gtalk and Gchat so it’s archived etcetera, that that would be a useful service and it would be to your benefit as well as to theirs.

DUSTIN: Right, and that is effectively what I want to do. I mean, one of the things you don’t see in XMPP is there’s a whole lot of extra stuff that can flow in there. So if someone like Twhirl wanted to consume track from me — although I was kind of dumb and didn’t do this in the first place, but I was planning on adding it — but I can shove a tremendous amount of information in there, that describes in great detail, the origin of the message. So I receive it that way, but then I throw a bunch away before I give it out. So when they subscribe they can have things that are consuming it programmatically, and they can say “Oh, here is a message that came from Identi.ca or this random Laconica instance that has this user over here…This is the exact moment it was sent. Maybe there’s some delay. I can calculate propagation delay. But all this rich information for people to build applications on top of, but in the meantime it solves my problem. I just want to know if someone says something.

STEVE: Okay. I think that gives us a good idea of what your blueprint is. You haven’t been giving us any dates, but I think the whole Identi.ca environment is moving quicker than most people had anticipated. There have been some bumps in the road and there are people who are concerned about issues like you know, Evan’s commercial bent and the degree to which he’s intersecting and improving the Laconica environment, etc. But I think all things considered, things seem to be moving forward, rather aggressively.

DUSTIN: I like to think it’s even more aggressive than Evan thought it would be. He’s doing a tremendous amount of work and as far as I can tell he’s doing most of it himself, and I don’t think he expected — I don’t get the feeling he expected it to be as popular as it was as fast as it was. And so, he’s definitely doing something right.

Thanks to Karoli Kuns (@karoli), Amy Bellinger (@amyloo), Francine Hardaway (@francine), and Tina Gillmor (@tinagillmor) for transcribing and editing this post.