Over the past few years I've watched myself and other developers become
continuously and multiply connected. There are any number of ways that our
online presences are manifested: instant messanger, blogs, wikis, SharePoint
sites, VOIP, and so on. But there's another sort of connection that I keep
expecting and not seeing: connection inside of our developer tools. Let me
explain.
I was reminded of my thoughts in this area by running across MoonEdit on the Web. MoonEdit is a
multi-platform collaborative text editor. You run a server somewhere that
everyone can see it, and then they all connect with their MoonEdit clients.
Connected users can simultaneously edit the same file and see each other's
changes, with changes being color-coded by user. The experience ends up being
something like a freeform chat. I've experimented with using it to keep meeting
notes from a meeting going on simultaneously with a more standard chat
client.
Combined with some other channel of communication (like IM or VOIP), MoonEdit
would be perfect for pair programming over the Web. Except - it's only perfect
for those who like to program in a plain vanilla text editor, even if we
postulate that MoonEdit will continue to add features. What about those of us
who like to write code in an IDE? That is the untapped collaborative
market niche that I keep expecting to see filled.
I would love to be able to fire up and somehow share an IDE with someone else
working in their own IDE on the same code. This would be useful for pair
programming scenarios, training, and troubleshooting, among other things.
Imagine the QA person reproing a bug and the dev dropping into code to fix it,
without having to be in the same room or on the same computer. Sure, there are
technical hurdles to making this work, but that's why there are big companies
full of smart developers out there.
You can do some of this with tools like NetMeeting today, but I'm left
wanting more integrated sharing with tighter protocols, rather than a
general-purpose sharing of the entire desktop. I also think there are other
tools where a sharing strategy is potentially useful: test tools come to mind,
for example.
I'm left with a few alternatives to choose from: perhaps I'm underestimating
the technical hurdles, and something like this is too hard to implement. Perhaps
it's already been implemented, and I've missed the tools. Perhaps I'm
idiosyncratic, and there really isn't a market. Any ideas?