Collaborative tools

I do quite a bit of collaboration. In fact, since after my PhD research, I have written exactly one preprint that does NOT spring from a collaboration. And there is quite a bit of technological support that flows into a good collaboration of mine. Here are some of the tools I uses and some of the thoughts I have on them.

Version control

Since I work in mathematics (and, arguably, in the fringes of Theory CS), everything I write is written in LaTeX. This is for one thing very helpful, since it means that the actual texts we collaborate on are plain text with markup. Eminently suitable for the toolkit provided by the software community.

As such, I make it a fundamental point to ALWAYS use version control software with my writing projects. Regardless of whether I do it for just myself, or in a team with collaborator, everything is under version control. If my collaborators do not yet know any such systems, I teach them `Mercurial <>`__, my own personal favourite. This has varied success — if my collaborators absolutely refuse, I'll maintain the version control interactions myself, but I have had some collaborations where my partner is enthusiastic enough to subsequently teach everyone HE works with to do the same.

Lately, I have also started looking into `Git <>`__ as well — mainly because of the existence of github, but also because of systems such as Gitolite. These put a web-layer and an easy to use admin layer on top of the source code repository, making it easy to create or modify workgroups and remove almost all the hassle of administering a server yourself to facilitate the collaboration with these tools.

Communication in larger groups

As long as a collaboration is with one or two collaborators, I usually do well enough just typing their names into my email client any time I want to say anything, and I definitely make sure to create a new mailbox folder any time a clear project materializes. However, some of the things I work on materialize in larger groups forming the generic collaboration, and subgroups crystalizing for any particular part.

For these cases, I find a mailing list to be invaluable. Preferably with archiving, so you can send out ideas to the list, and rely both on getting feedback on the — often early and unrefined — ideas, and a searchable cache where you can go back and figure out what the ideas were in the first place. Since I do a lot of my email maintenance on Google anyway, the bigger projects I am in have gotten mailing lists setup that way too — using the very pleasant Google Groups interface to administer and handle the mailing lists.

Wikis, too, are a really nice and productive idea — I haven't done anything with them myself for running collaborations, but my current workgroup uses a wiki to discuss software design issues.

For quicker turn-around and lower formality than email, I have had very good success with some of my collaborators chatting on Skype or on GTalk about our problems. This requires everyone to be comfortable enough with the text chat as a medium, but can be surprisingly productive.

Meetings with geographic diversity

And then, every so often, you just have to meet up and talk.

Best, of course, is if you happen to get together geographically anyway — so that you can occupy a seminar room and go wild on a blackboard, hashing out any details you need to deal with. This strains everybody's travel budgets, and eats time in masses, so it is not always feasible.

Next best thing is a video and voice chat, preferably with a whiteboard or at least screen sharing functionality. Good thing is there are a few of these around.

Skype is a tool I've used a few times for this. It has video, voice, and screen sharing in the later versions, and is really easy to get up and running and to deal with. The biggest drawback I see with Skype is that you'll have to pay to get video conferencing and not just video chat, which is a genuine drawback as soon as people are distributed on more than two sites. If there are only two places involved, however, few things are as painless as kicking up a Skype session.

The other tool I've used lately is Google+. A lot can be said about this foray into the Social Web, but the part I want to highlight here is the hangout feature. A G+ hangout is a video conference for up to 10 participants. Everyone (who chooses to) streams video, or their own screen if they want to, and in the client you either roam to whoever makes the most noise (hopefully the person speaking at the moment), or you can lock your view to one of the feeds. This combined with tablet software like Microsoft Journal, or even just a paint application is enough to get a whiteboard up and running. I have yet to find a good collaborative whiteboard (though Google Docs and their drawing app probably does a good job), but as long as only one person needs to hold the pen, this solution is marvelously smooth.

These are my collaboration tools. What are yours?