Real time computer code share
January 19, 2010 5:51 PM   Subscribe

What is the best way to real time share and edit computer code among 3 people?

The best I can think of is to use a google word doc but I would prefer some sort of text editor that is made for code. Code is in Latex but need to use other languages in the future.
posted by bucksox to Computers & Internet (19 answers total) 10 users marked this as a favorite
Google Wave?
posted by chengjih at 5:56 PM on January 19, 2010

If you have to work on literally the same code (like, the same actual lines) I would only do this with a single person typing and the other two kibitzing. How would simultaneous editing even work and what would it buy you?

If you mean sharing a codebase any of a million source code control systems should do. I'm currently enamored of bazaar.
posted by DU at 5:58 PM on January 19, 2010

Play with Etherpad. It's not yet designed for code across multiple files, but it's shockingly good.
posted by effugas at 6:04 PM on January 19, 2010 [1 favorite]

2nding Google Wave. I've been using it for online collaboration (though not with code just yet), and it seems like that would be an ideal platform.
posted by solipsophistocracy at 6:07 PM on January 19, 2010

I think version control software is a good idea for even very small projects, even if they're not program source code (like LaTeX). I like Bazaar too, because it's very simple to set up and use, but there are plenty of other choices (you may have your own favorite).

You can connect the version control software to something like trac, which keeps a timeline of changes made by each person, and also allows you to make notes about what problems you want to fix and things you want to add in the future. Trac is elegant and easy to use once you've installed it, but it's somewhat more difficult to set up than Bazaar.
posted by k. at 6:08 PM on January 19, 2010

It is still alpha but might work.
posted by phil at 6:08 PM on January 19, 2010

If you're on Mac OS X, SubEthaEdit does syntax highlighting, I believe. I've never had an excuse to actually use it, but it's always seemed like a really cool piece of software.

Allegedly, Gobby is similar and runs on Linux and Windows, but I know nothing about it.
posted by Kadin2048 at 6:13 PM on January 19, 2010

The benefit of a version control system is that it allows you to retreat to previous versions. With a good one you can do that on a per-file basis, or you can even tell it to pull a full copy of the entire source package as it was on a certain date.

It also allows you to pull a change history for any given file, showing exactly what got changed, by who, on every date that a change was made.

But the most important feature is locking. If someone checks a file out for change, no one else can do so.
posted by Chocolate Pickle at 6:15 PM on January 19, 2010

But the most important feature is locking. If someone checks a file out for change, no one else can do so.

Well, this depends on which system you're using. Many will allow editing a file without locking it (or don't have a way to lock files at all), and will automatically merge changes if multiple people edit the same file, as long as the changed don't overlap (and provide a mechanism for manually merging if there is a confict).

But yeah, if you actually need "real time", multiple people editing the same code at the same time and seeing other people's changes as they occur, use SubEthaEdit/Gobby/whatever. If you need to share changes but not in real time, use Bazaar/Subversion/etc. (I've become quite fond of git, but it's pretty complex and probably overkill for your situation.)
posted by The Pusher Robot at 6:28 PM on January 19, 2010

Chocolate Pickle, locking is not the most important feature of a version control system. Almost no modern version control systems do locking by default anymore. CVS, SVN, git, bazaar, mercurial, all do merging instead.

On a related topic, if you're doing a lot of sending patches back and forth to various remote people stacked git is pretty cool. It lets you manage a stack of patches on top of a source code base, and do various things with them (push, pop, reorder, incorporating new changes, etc.) It allows you to more easily keep logical changes separated, and thus make your commits more sensible and less haphazard and mixed together. It is similar to quilt but with better merging (thanks to git underneath) and you're far less apt to shoot yourself in the foot with stgit than with quilt.
posted by smcameron at 6:31 PM on January 19, 2010

Nthing version control software, such as CVS or Perforce. There are probably cheaper or more streamlined types of this software I am unaware of, tho.
posted by gnutron at 7:18 PM on January 19, 2010

Use version control. Perforce is my happy spot, but it is not free. Subversion is a quality free product, and probably the best solution for you, though getting it setup is not the easiest thing in the world to do if you have no idea what you're doing.

Using anything besides version control is the wrong solution.
posted by jeffamaphone at 8:56 PM on January 19, 2010

You can setup a free account at cvsdude that will let the three of you do this. Then you don't have to muck with setting up the server.
posted by jeffamaphone at 8:57 PM on January 19, 2010

bespin was made specifically for this. i would give it a look.
posted by Hackworth at 9:42 PM on January 19, 2010

Get a free account at github or bitbucket and use a version control system. It's not that hard and if you don't know the basics of SCM, you shouldn't be writing software.
posted by chairface at 10:00 PM on January 19, 2010

Yeah, you should be using an source control system, but that's not what you were asking for. In addition to some of the better known options mentioned here there is Mozilla Bespin.
posted by Good Brain at 11:56 PM on January 19, 2010

Gist is what you need. It's dead simple, allows threads to be private or public, and automatically applies source control to everything you do. And it's free.
posted by cerebus19 at 6:36 AM on January 20, 2010

(good lord, don't use CVS or Perforce unless you are compelled to for legacy/business reasons!)

For live realtime editing, use Etherpad, SubEthaEdit or Google Wave.

For tracking and managing sets of changes changes over time, use a SCM (source control management system). Subversion is a modern centralized SCM. Git, Mercurial, and Bazaar are decentralized, and tend to be preferred by newer open-source projects.
posted by mezamashii at 4:49 PM on January 20, 2010

A lot depends on whether you're doing different but related tasks, or are pair (trio) programming the same lines. If the former (such as one doing the database layer, one doing the middle tier, and one doing the client UI. Or, in Latex, one doing the wordsmithing, one doing charts, and one doing fact checking or footnotes) then a source code control system makes sense. If the latter, trio programming, then you might use a SCCS, but only after the fact, not as a collaborative tool. A shared editor makes sense, but no one's mentioned how you'll actually communicate. Do you want to communicate via text only, or do you want to also talk, see each other, use a whiteboard, etc? If so, you might look at conferenceing tools, such as WebEx, Microsoft's Live Meeting, OpenMeetings, etc.WebHuddle, etc. Some teams use Second Life, but I'm not sure how easy it'd be to update/download the code.
posted by at at 10:23 PM on January 21, 2010

« Older How to make reading long books ergonomic?   |   Lawyerly-like Newer »
This thread is closed to new comments.