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 <http://mercurial.selenic.com>`__, 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 <git-scm.com/>`__ 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?