IRC as it currently is is not adequate for pair programming. My team mates and I have learnt this the hard way. Not only are my two team mates amatuers with IRC (making them near illegable some times - not that I'm any better) but when you say 'that bit of code' or 'AClass>>aMethod' you have no idea if they've actually looked at it or not.
What you want is some way to share some browsers with the other person. This can be done over the IRC protocol, but it could only be done in something like TypeLess, running in the development environment.
I have a few problems with this idea. When an IRC server goes down, TL barfs itself in very nasty ways. When your internet connection goes down, TL barfs itself in very nasty ways. Yes, these are my bugs, but they are still bugs. So there is a tendency not to use TL in a development image, but to use it in a second image or use the BottomFeeder plugin.
If I were to have TL as part of my development image, I'd want to it look very very different. I don't think the classic IRC window layout fits in to a development image. I'd even go as far to suggest that I might start using package names as channel names and have the RB join/part as you browse things. This would allow the RB to communicate with anybody else looking at that code at that time.
This then requires some way to distinguish between people you want to talk to about particular bits of code and people you don't want to talk to about particular bits of code. How do you do that? You cannot do it by store access, as store can be segregated up. So it'd have to be a shared password of sorts. A challenge response to each user in a package based channel when you join.
This can lead to being kicked off the IRC server for flooding. That suggests you want to post your challenge-response to the channel itself, not the people in the channel. Some sort of MD5 hash would work well in that case. The participants would have to reply privately, which may add load to your connection.
SO! We've now all agreed we're talking about the same package and we should be allowed to share code between each other. What next? Well, you need to know if you're talking about the same version? or do you.. lets take a scenario.
I'm in a package and I click on a class, then a method. Who sees that? why do they see it? did they choose to see it or what? how do you wave a flag to get peoples attention that you're showing them valueable information?
This suggests there are several modes of RB IRCness. Linked to a validated participant in a package - or do you want to link with him across packages?
Are you merely sharing navigation, or are you sharing code too? If they change code should it change in your image, or merely provide you with a way of seeing their changes list. Do you mark methods with a ! that have been changed by somebody else? How do you communicate all this across IRC in an efficient manner.
Ideas please.