comparison of remote pair programming tools
The majority of my colleagues are not based in the same office, or even country, so to practice \ do pair programming we need to do some form of screen sharing. We have used webex, which was working well enough until it stopped working due to some technical issue on Gentoo (Cisco not supporting webex on 64bit OS and browser).
Trying to get it to work was not successful, so we looked for alternatives. The tools we tried out were:
- Floobits IntelliJ idea plugin
- HP RGS
I’ll try and produce a comparison of each of these collaborative tools as I’ve experienced them.
Webex is a web conferencing tool owned and developed by Cisco. You have to have a webex account and I don’t think that it’s free to use; I’m using it via work, so I have an account with my work email address.
A 32bit browser and 32bit Java plugin is required to use webex. It opens an applet where you can have whiteboard and participant chat window. The feature I’ve mainly used is the Share Desktop tool. This will share the entire of your desktop to who joins the meeting, this includes all running applications and even notifications. This can be good and bad. The good is that when you run ‘stuff’, it is all seen, including error messages and the state of what ever it is that you’re demonstrating; so this will give an accurate depiction of what is happening.
The not good bit is that you don’t control what your participants see when you share the entire desktop; IM’s, emails, etc.
When sharing the entire desktop, the resolution of the screen(s) is sent as is, if the participants have a smaller resolution that you do, they will have a window with scrolly bars and have to do some jigging around of window positioning. This is ok when it’s one person that has joined the conference, but may not be great when a number of people join who have a smaller resolution that the host.
It is possible to choose an application to share, so only that application is displayed to the participants. I’ve not used this feature much at all, so can’t comment on it other than, it worked.
One thing that webex lacks is support for application key shortcuts, these are just not sent. I like command keybindings to do stuff quickly and use the mouse as little as possible.
The usage scenario is that one person will schedule the web conference and send out a link, people join the conference. A voice conference call is up at the same time too. The conference initiator \ host is usually the one who shares their desktop \ application and with the people on the phone viewing, commenting and discussing what’s to be done.
When it worked, it was good enough.
Floobits is a an IDE plugin that allows code to be edited by multiple people at the same time in a session \ workspace. Again, you need some kind of accounts on with floobits and create workspaces (repositories) and upload code to it in a public or private workspace (repository).
We used floobits on a small, non-work coding example to test it out. Zero chance of putting code onto a cloud service, I like things to be within the firewall. Saying that, they plan to offer a within the firewall solution and other plans with a number of private workpaces. It can integrate with GitHub too.
Once accounts and workspaces were created, we created a collaborative session and got to work.
Because it’s an IDE plugin, keybindings work :-). We could both open multiple files and edit these files at the same time. We could even both edit the same file at the same time. We can watch changes that the other is doing. We can independently run the app, and tests and in debugger too; providing that a change doesn’t stop the code from compiling. We didn’t test to see what would happen with revision control.
One big positive we found is that we could discuss what needed doing and do these things in parallel if needed. Alternatively, we could stick to typical pair programming and discuss one concept at a time, but with our own resources independently open; documentation, manuals, etc.
We stuck to talking on the phone, however floobits can integrate with google hangouts, so voice and video can be done in a hangouts group.
We didn’t test with more than two people working at the same time.
We also encountered some filesystem inconsistencies, but I think it’s because we didn’t really explore who ‘hosts’ the workspace and what connecting collaborators should do in regards to overwriting files.
I really liked floobits, it was a pretty neat experience, however I don’t believe the company will pay for it at the moment.
HP Remote Graphics Software
HP RGS was designed for remote high quality graphics, I believe. It works in a client \ server set up that they term sender (server) and receiver (client). The sender is an X server plugin, making it available when the X server starts up. The receiver connects to the host over it’s propriety protocol and codecs for compressing the data being sent.
The sender is a licensed product whereas the receiver is not, but, with Z series HP workstations, you don’t need to pay. We have Z series workstations 🙂
I won’t go into the configuration of the sender here. The receiver prompts for a hostname to connect to, credentials are then prompted for and voila, desktop is shared.
RGS sends the entire desktop, but it can try and match resolution and layout. The receiver can be made to be a collaborator, so they can take control of the mouse and keyboard. Keybindings worked in the IDE for the collaborator \ receiver, which is pretty handy.
As the whole desktop is shared, this has the same pitfalls as mentioned for webex, I found the overall experience is better than webex; no additional windows and dialogues cluttering the desktop. The receiver can set the receiver to be full screen. The image quality can be adjusted depending on the network bandwidth and latency; however, running in the LAN \ WAN, we used full quality which was good – again, better than webex.
Again, we have a phone call going to talk.
A couple of negative aspects… Presentation can’t be given to someone else. To achieve this, they would have to have RGS installed and then you would need to connect to them, this isn’t that serious though. If you’re remoting, you’re dependent on the bandwidth, latency and stability of your connection, you can loose connectivity and experience some lag and connectivity warnings.
The experience was pretty good using RGS.
I’m glad that webex broke for my colleague so that we were forced to find alternatives. As much as I liked using floobits, I think RGS wins. Reasons being, everything remains in the firewall, shared image quality is very good (very nearly native, or I can’t tell that it isn’t native), pretty stable, no need for external accounts as AD authentication is used, we don’t have to pay for it as the license is bundled with the hardware (yes, money is a factor and I suspect it will not be available if the IT people decide to change the hardware purchased).