Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?
Programming Software IT Technology

Collaborative Software For Pair Programming? 302

DavidMatuszek writes "I will be teaching Java again this Fall. Students work in pairs, but unfortunately (after the first hour) typically not physically together. I would like to find collaborative software that is (1) dead simple to use, because that's not what the course is about, and (2) free. Google Docs would do, but students will be sharing code — plain text — not RTF or HTML or Word files. Is there such software for plain text?"
This discussion has been archived. No new comments can be posted.

Collaborative Software For Pair Programming?

Comments Filter:
  • by ls671 ( 1122017 ) * on Monday July 20, 2009 @04:18PM (#28761195) Homepage

    I would recommend to use Subversion. You could setup your own server but there is also hosted solutions available. I searched Google for "hosted source control" and I found this link : []

    The bonus would be to teach your student how to use version control and how to work together on the same files. Subversion (and older CVS) integrate into Eclipse and most other development environment. There is also standalone clients available if your students use a simpler editor like vi or notepad ;-))

    • Re: (Score:3, Informative)

      Mercurial would be better for this because both students would have their own repository and no central server would be required.

    • by RichardJenkins ( 1362463 ) on Monday July 20, 2009 @04:23PM (#28761287)
      If you're willing and able to release the source code, why not encourage them to use a free account on sourceforge or github?
    • I would recommend to use Subversion

      I agree. But don't forget to do the thing the students will care most about: shave your beard [].

      You look like Richard Stallman.

    • I agree. You could run a local subversion server in your lab. Require each student to have a flash drive (the 128MB ones they sell at walmart for $5 would be fine) where they can do checkouts. Each student pair would have their own repository.
      Do the checkouts / checkins from the flash drive in the lab at the beginning / end of class. That way the students can hack code at home on anything from Win98 / Notepad to Vim on their Mac. They wouldn't even need internet at home.
      Because you could do all
    • Re: (Score:2, Insightful)

      by zorg50 ( 581726 )
      I think that you're answering a different question than what the submitter asked. Subversion is great for people working on files, but has no collaborative/teamwork aspect to it (with respect to encouraging pair programming, anyway). A program that would allow multiple people to use voice or text chat while editing a document, etc, would be more along the lines of what David is looking for.
      • Re: (Score:3, Interesting)

        by ls671 ( 1122017 ) *

        > I think that you're answering a different question than what the
        > submitter asked.

        Well, I could be, sorry if I am.

        Subversion allow you to enter comment for every change you make and these comments won't go in the source code.

        For the voice/text chat part, we usually just use messenger or something similar.

        Also, I think this would be a great opportunity for the students to learn how to use a real-life tool instead of something they are less likely to reuse in the future.

        But as you said, maybe this is

    • by Roxton ( 73137 )

      That's not paired programming, though. This guy needs some kind of shared VNC + microphone setup.

    • github is good in that they can host their code for free (as long as you don't mind that students can see each others code) or there is paid hosting if they need to keep it private. You could also run your own git server.

    • by mzs ( 595629 )

      Yeah any revision control system should be fine. Give them accounts on one of your machines. There should be a computer lab in the CS dept. When the students need to work together they should go there and grab two stations next to each other and work from there once they ssh into your box. Other times they can just work from where ever and just email, call, or text each other.

    • Re: (Score:2, Insightful)

      Absolutely! I use svn in all of my courses now (with the command line, not a GUI) and it works great. Some bonuses:
      1. Teacher can see whether students are working on projects, with a log of who did what, when. This is great for resolving extension requests and for grading group projects.
      2. Teacher can help students with their bugs from home at 2am, rather than having to come into lab to see their code.
      3. Students can move files between operating systems
      4. Use revision control as a way of submitting project
  • Your e-mail address indicates you hold a position at UPenn. While I understand you trying to facilitate their collaboration by providing the right tools, shouldn't they be developing/discovering these tools themselves? I mean at U of MN, we each Unix accounts where we could create directories and set permissions on them. I would create a directory under the directory for that class and grant permissions to my partner and then we would both work on that directory through telnet/ssh/sftp/whatever and kee
  • One of the pastebin-type sites may well fit your criteria - some of them include revisions or even test-running code.
  • How about gobby? (Score:5, Informative)

    by StylusEater ( 1206014 ) on Monday July 20, 2009 @04:21PM (#28761227)
    How about gobby... [] ?
    • Re: (Score:3, Insightful)

      by gd2shoe ( 747932 )

      Hmm. It seems they've made great strides since I last played with the thing. I really hope Sobby is easier to set up than it used to be. Last time I tried to get anybody to use this with me, they objected to its difficulty in use and poor user interface. I'll need to look into this again. (I don't remember it having syntax highlighting; I'm really glad it does now.)

      Also, watch for Google Wave later this year. (Somebody's bound to write a plugin for syntax highlighting.)

  • Etherpad (Score:5, Interesting)

    by BSDevil ( 301159 ) on Monday July 20, 2009 @04:21PM (#28761245) Journal
    Try [] -

    EtherPad is the only web-based word processor that allows people to work together in really real-time. When multiple people edit the same document simultaneously, any changes are instantly reflected on everyone's screen. The result is a new and productive way to collaborate on text documents, useful for meeting notes, drafting sessions, education, team programming, and more.

    • by mrbene ( 1380531 )
      I've used EtherPad to collaborate on text - it's great for fine tuning wording. The larger the file, the less likely you are to be in the same place at the same time tho - and your students might not need to have as immediate an interaction.
    • I second this suggestion. I've used etherpad quite successfully for real-time collaboration for between 2-4 people. Pair programming is even one of the suggested use cases on the website.

    • Re:Etherpad (Score:4, Informative)

      by jd ( 1658 ) <imipak AT yahoo DOT com> on Monday July 20, 2009 @05:01PM (#28761895) Homepage Journal

      Uck! Marketroid speak! It's not exactly new, there was a multicast-based text editor as part of the MICE suite, and there were some very nice "whiteboard" programs out there which allowed you to use OLE linking to share data between two applications real-time.

      The first certainly was around in the early 1990s, the second was around in the mid 90s.

      EtherPad may be "new" in that it uses HTTP as the underlying protocol, but collaborative editors are ANCIENT. The biggest problem they've faced is that so few people have used them that they have never really maintained critical mass.

      • by Jack9 ( 11421 )

        Uck! Marketroid speak!

        That was inflammatory. It happens to be the product I use for pair programming you insensitive clod.

  • for simple plain text stuff: []
  • Please (Score:3, Insightful)

    by Anonymous Coward on Monday July 20, 2009 @04:22PM (#28761251)

    Please don't make them work in pairs, it's a horrible way to learn programming. I'm assuming you have enough computers, why not?
    Sure--learning to work on a program with others is a necessary skill, but you should already know the basics first.

    • Re: (Score:3, Insightful)

      by FooAtWFU ( 699187 )
      I do pair programming for a living. It's great for the senior guy to teach the junior guy what the heck is going on. That said, there needs to be a senior guy first.
  • by liquidhippo ( 988103 ) on Monday July 20, 2009 @04:22PM (#28761271)
    If you are working on Mac OS X, then SubEThaEdit is a great choice for collaborative coding. As for other options, check this wikipedia page: []
  • JCreator, it is an easy to use java compiler that would work fine for an introductory Java Class, I have used it to write games. You could use a TortoiseCVS as a share on a schools server. Both programs are free opensource.
  • SubEtha? (Score:3, Informative)

    by galego ( 110613 ) <jsnsotheracct&gmail,com> on Monday July 20, 2009 @04:25PM (#28761315)
    SubEthaEdit (Hydra once upon a time) allows live collaborative editing. not sure of the security or other implications/issues. I tried it once or twice. Was a decent editor otherwise ... no real big frills.
  • but students will be sharing code - plain text - not RTF or HTML or Word files

    I'm with you on Word files being binary, but RTF and HTML are both plain text.

    • by jd ( 1658 )

      I'd consider RTF to be RatherObscureText, rather than PlainText, and HTML is more ModeratelyobscureText. Both can be contrasted with TeX, which is AlmostPlainButBloodyAnnoyingText.

  • even good ole discussion forums where everyone quotes eachother and modifies, creates new threads for other topics, etc would work just fine. Subversion would make that easier and the google docs suggestion or open office can do this too.

  • by PolygamousRanchKid ( 1290638 ) on Monday July 20, 2009 @04:29PM (#28761401)

    . . . to do some research, and choose for themselves whatever suits their needs best.

    If they make a good choice, they will be all smiles. If they make a bad choice, they will have learned something that they will encounter again in their careers.

    • Well, aside from the fact that he strongly hinted that he wanted his students to focus on coursework, not extranea... given that he is going to judge his students on their code, why would you want to introduce a variable in their output that has nothing to do with their understanding of the course material?

      Anyone who has taught a class on a tight schedule knows that scope creep is as bad in the syllabus as it is for project design. So you want the students to evaluate and choose a collaboration tool in or
    • Re: (Score:3, Insightful)

      by julesh ( 229690 )

      . . . to do some research, and choose for themselves whatever suits their needs best.

      Chances are the students don't have the necessary permissions to install new software packages on the school's computers, so this would be a non-starter.

  • Good grief (Score:2, Insightful)

    by Anonymous Coward
    Don't hold your brighter students back because you want the class to learn together! You have to accommodate all minds, not just the slower ones. I went through this, and quite simply I didn't learn anything but how to pretend to be interested.
    • Re: (Score:3, Interesting)

      by pjt33 ( 739471 )

      Not that it's what this is about, as someone else has already pointed out, but getting the brighter students teaching the slower ones benefits both groups. Being able to communicate things which are obvious to you to people for whom they aren't obvious is a valuable skill.

  • Gnu screen (Score:4, Insightful)

    by jgrahn ( 181062 ) on Monday July 20, 2009 @04:30PM (#28761423)

    If the course is about Java, why do you expect them to do pair programming? (I assume you mean Pair Programming, not just cooperating to solve the tasks. If you mean the latter, it's just a matter of revision control using SVN or whatever, which they should do anyway.)

    Anyway, one free tool that comes to mind is screen(1) (aka Gnu Screen) in multiuser mode. That makes two or more users share a bunch of Unix terminals in real time.

    • While the course may not be about working in teams and having the students learn to collaborate. You should teach them that anyway. It is a valuable skill in Real Life (c) [tm]. Now you should have them do it their own way but give them guidelines on what they should consider. Use a versioning system sure. Emails IM to make sure they are not stomping on each foot. Or do it the Old way (GASP) write out what they will do each of their responsibility make a project plan and who will do what and when. Ma

    • Re: (Score:3, Informative)

      by Unoti ( 731964 )
      Teach them screen, yes. We use it constantly where I work, which is an environment where we have distributed developers working together all around the world. Screen is not dirt simple, but it's a real life practical skill that's worthwhile to teach the students. I'd rather take the extra time to get everyone comfortable with screen and have them do real collaboration than to mess around with pretend solutions like Google docs or etherpad. We use Etherpad and Google docs, too, but for pair programming a
      • Re: (Score:3, Informative)

        by charlesnw ( 843045 )

        I think that screen is very easy to use.

        screen -S "blah"
        ctrl + a :multiuser on :acladd user (repeat for every user you want to have access)

        Took just a couple minutes of googling to find a howto the first time I did it.

  • Just Plain Stupid (Score:2, Insightful)

    by pdxguy ( 726066 )
    IMHO, writing software, in Java or any language, is a creative effort. There are many fields of creative endeavor - artists, musicians, developers, etc. Pair programming is just plain stupid and nuts IMO. Do you ever hear of pair painting (canvas not houses), pair sculpture, pair composing, pair solo singing - no you don't. I had hoped this pair programming nonsense had faded into oblivion - I guess not, but let's try to push it over the cliff and into the abyss of poor ideas.
    • Re: (Score:3, Interesting)

      by tthomas48 ( 180798 )

      Actually yes. Modern music is almost always collaborative. Sculpture is often done with more than one person. And modern theater is pretty much gotten to the point where you frequently have multiple collaborators (not to mention musical theater which has been paired pretty much since its inception).

      I find that some people are not compatible with paired programming, but when it works it can be amazing. My old boss and I would write code for entire days without getting up once. Not particularly healthy, but r

    • Re: (Score:3, Funny)

      by SomeJoel ( 1061138 )

      pair solo singing

      I believe this is called a duet.

    • by snaz555 ( 903274 )

      Do you ever hear of pair painting (canvas not houses), pair sculpture, pair composing, pair solo singing - no you don't

      Pair composing is extremely common.

      I remember learning programming in the late 70s (7 or 8th grade probably) by sitting with a friend next to a computer and working together on programs. Both BASIC and 6502 assembler on the Apple II. This wasn't part of any training course or intentional teaching scheme; it was simply a necessity since there were two neophyte programmers and one computer. I think it's a good experience and an effective teaching aid. I also think it's completely useless and counterprod

  • Bespin or Cola (Score:2, Informative)

    by illumina ( 98404 ) - is a pretty slick in-browser code editor, that, if I'm not mistaken allows shared editing like Google Docs.

    There is also an Eclipse plugin called Cola that allows simultaneous editing, but I'm not sure how stable it is, I've only seen a video demo.

    And whichever method you choose, source control should be mandatory, ideally distributed (git or mercurial), though SVN is better than nothing.

  • by dgym ( 584252 )
    If you have somewhere to host them you could set up some VNC servers running a desktop and all the applications they need. Two people can share the same VNC desktop so you can do the joint development. What this doesn't do is coordinate things at all, but for that I would suggest VOIP as it doesn't need mouse or keyboard input.

    One bonus is that they don't have to set up much software, just a VNC client and a VOIP client. Setting up the VNC servers is easy too, you only need to get a host installed with a
  • by h4rr4r ( 612664 ) on Monday July 20, 2009 @04:38PM (#28761537)

    Cancel the pair programming. All that happens is one student in the pair writes all the code. They might swap back and forth, or more likely one will end up doing it all.

    • One of my profs used to say:

      "Most students say that they learn the most in this course from the lab exercises."

      "Actually, I think that they learn the most from their lab partners."

    • Re: (Score:3, Insightful)

      It will also force socialization and it's an excellent way for students to learn how to work in a team. That alone is more important than whatever grade they will get in any "learn how to program" course.
      • Re: (Score:3, Insightful)

        by JeffTL ( 667728 )
        That's cute, but these are university students who have already sat through 13 years of that in K-12. They signed up and are paying for a class on computer programming and should get what they pay for, not an occasion to "force socialization" -- that's for down at the bar after the assignment deadline.
    • Re: (Score:2, Insightful)

      It's true. Unless you end up pairing two students who think they can program better than their counterpart.

      Then you get 2 students handing in seperate Code, both amazing in their own right, saying that they wrote it themselves and had no help from their partners, insisting they get a better grade in the class.

      And then the consequences of the pair of students with NO programming experience, and are having trouble learning, and end up handing you a page that is well documented but not at all functional.

      • It's true. Unless you end up pairing two students who think they can program better than their counterpart.

        Then you get 2 students handing in seperate Code, both amazing in their own right, saying that they wrote it themselves and had no help from their partners, insisting they get a better grade in the class.

        And then the consequences of the pair of students with NO programming experience, and are having trouble learning, and end up handing you a page that is well documented but not at all functional.

        So you switch the pairs after the first assignment, or better yet use a combination of survey and quiz to figure out who's at what level and assign the pairs based on that. And give quizzes/exams based in the material, so that the weaker student still needs to learn it. One professor let us pick our final partners based on a survey, and it seemed to work out well for all the teams involved. And sometimes there is awesome karma: I had a friend who got a D in a course when his team wouldn't put his name on th

    • Re: (Score:3, Interesting)

      by MpVpRb ( 1423381 )

      I am SO glad that this stupid idea did not exist when I started learning programming.

      If it had, I probably would have quit the class.

      I just happen to learn better alone, just me and the machine.

      I don't want to have to win a debate with another person before trying something, I just want to try that I know what I'm doing, I work VERY well as a member of a team.

      • Re: (Score:3, Informative)

        by smash ( 1351 )
        Just thought i'd respond to this.

        Back in the day, when I was about 15 and starting out trying to write demos (as in demoscene - we managed to replicate a few effects we'd seen back in the 90s from other big groups - after going "Wtf, how does that work?"), a friend and I started coding together.

        The actual CODING is a one man job, sure; but when you're trying to solve a problem, having 2 minds work on the ALGORITHM gets you better results, quicker IMHO.

        Sure, you'll possibly end up with the same algorit

  • by SpryGuy ( 206254 ) on Monday July 20, 2009 @04:42PM (#28761599)

    Etherpad for real-time text file collaboration

    Yuugu for sharing desktops

    Ventrilo for voice communication

    Whatever source control solution you wish (TFS, Subversion, Perforce) for non-real-time collaboration with text documents (programs)

    Yahoo IM or the chat/IM client of your choice for casual low-bandwith and non-time-critical conversations and sharing of information, links, etc

    Email for everything else

  • If you want a folder based sharing solution for Mac or Windows...Microsoft's Live Mesh works fairly nice. I use it for my small company and share all sorts of files with my co-worker.
  • by slim ( 1652 ) <> on Monday July 20, 2009 @04:47PM (#28761683) Homepage

    I initially read the question as being about real time remote collaboration.

    If that's the case, there's Eclipse's DocShare plugin: []

    I haven't tried it, and I don't know how mature it is. But I watched a video presentation on it a while ago and it looked very promising.

    • Re: (Score:3, Informative)

      by greg1104 ( 461138 )

      There are a couple of presentations, perhaps including the one you allude to, as well as other answers to this question all right where you'd expect them to be: pair programming [].

  • Realtime, web-based collaborative text editor. If you don't especially care about the data being hosted out there amongst the tubes, free. (I suspect that the people suggesting SVN et al don't quite understand what pair programming is...) []

  • I know that it's not out yet, but isn't this a perfect example of what Google Wave is for?

  • by jazzkat ( 901547 ) on Monday July 20, 2009 @04:58PM (#28761839)
    Eclipse offers realtime collaborative editing via XMPP and the Eclipse Communication Framework: []

    Set up a Jabber server and away you go.

    I have not tried this, so I can't speak to its quality.
  • MSN has a service just like Google Docs, but built more like a "cloud"(hard-like) drive on the internet. If I remember correctly its or google it. I used it to trade code between lab computers at school.
  • My professor went through many solutions (including our CS department's own subversion repositories) and eventually just settled on Google Code. It's easy enough to set up and use with a 30 minute primer on subversion (how to import, check out, commit, resolve conflicts).

    The biggest drawback / concern was that you cannot make code hosted on Google Code private. However in our case we were working with 6-7 person groups on a major project so stealing code was not an issue since each team's implementation w

  • by Junta ( 36770 ) on Monday July 20, 2009 @05:14PM (#28762079)

    At least it is overrated outside of an educational lab.

    At least when I was in college, pair programming required two people looking at the screen and no more than one typing at a given time. You could use GNU screen, vnc, whatever for this, but realistically speaking, it is inefficient and by and large isn't feasible in the real business world after the days of .com ended.

    At the other end of the spectrum, if you operate in a vacuum, there are definite high penalties of problems being caught later than they should and requiring more rework then they should to acheive the goal.

    I personally go with a revision control system which emails me the patches the other person does, encourage frequent checkins, and review every change. I don't have to sit through them typing and reworking their snippets of code as they catch their own mistakes in their own logic flow, and yet I review the changes shortly after they make them and can offer feedback within the hour. It takes me much less time to review the diff than it does for them to create and 99% of the benefit is still acheived. It's a very happy medium. Most any sane revision control system will let you set up checkin hooks to email changes to appropriate distribution lists.

  • by Bill_the_Engineer ( 772575 ) on Monday July 20, 2009 @05:15PM (#28762097)

    You're teaching Java and need pair programming...

    Sounds like you need netbeans... []

    I think it sounds tedious, but you did ask...

  • by ghostis ( 165022 ) on Monday July 20, 2009 @05:41PM (#28762471) Homepage

    SubEthaEdit does collaborative coding on Mac, if I recall correctly. []

  • Take a look at the Bespin [] editor. It's a relatively new Mozilla Labs project, a browser-based editor with a cooperative multiplayer mode, sort of. The video on the front page demonstrates how several people can edit the same file at the same time. Bespin uses the canvas HTML element extensively, so you'll need a decent browser to use it.

    There's no official release yet, but the 0.1 version looks quite promising.


  • Use your favorite text editor (like vi or emacs) and share a terminal using GNU screen in multi-user [] mode.

  • GNU/Screen lets you share terminal between several clients.
    Emacs lets you share edited buffer between several clients.

    Pick your VOIP of choice, or let them use IRC.

    And Mercurial or some other distributed version control for when they're working apart.

    No, they're not dead, dead, dead simple, but easy enough if you give them step by step instructions.

  • Netbeans [] has a decent collaboration editor. The only limitations that bother me is the inability to interactively diff (which makes code reviews more difficult), and the fact that there's no cursor tracking. This means that you can't, for example, highlight some code you're talking about and have the other person see it.

    GNU Screen [] is, of course, always an option if you can use a command line text editor like vim or emacs.

    Gobby [] is pretty decent, although it's a bit more limited as an IDE.

    I've always

  • lmgtfy (Score:2, Informative)

    by schmichael ( 1055232 )
    Multi-user screen: [] Gobby (multi-user text editor): []
  • It's worth noting that some people are just not compatible with pair programming.

    I literally cannot work with someone else watching my screen. I can't write code, I can't write text, it completely blocks me. If I were forced to do pair programming, the other person would end up writing all the code.

    • Re: (Score:3, Funny)

      by Dolohov ( 114209 )

      Me, I hate watching someone else program, it's like watching your dog take a shit. But it's a good experience for one term -- some people will find that they hate it, but some will find that they can live with it, and some will find that it works very well for them. Education works well when it bumps you out of your comfort zone from time to time.

  • Collabed? (Score:3, Informative)

    by msimm ( 580077 ) on Monday July 20, 2009 @09:04PM (#28764511) Homepage
    I haven't used it but Collabed [] looks interesting. Of course most kids would probably end up doing it with im and the occasional email, but it still looks interesting.
  • Bespin? (Score:4, Informative)

    by mpath ( 555000 ) on Monday July 20, 2009 @10:18PM (#28765041)

    There was some talk a while ago about this. I gave it a shot back then and it was a CPU-hog. With the latest strides in JavaScript (both browsers & the technology), it might be worth another look: []

  • screen(1) (Score:3, Informative)

    by Turmio ( 29215 ) on Tuesday July 21, 2009 @05:05AM (#28767207) Homepage
    Setup a publically accessible Linux box at your school. Load the development server with a selection of text editors to experiment, Sun Java JDK and screen (if using Ubuntu, everything is installable by running just one apt-get(1) command). Give each pair a shared account on the machine. Have them connect to the development server using what ever SSH client they please ( + command line ssh on Macs, what ever GUI terminal emulator on Linux clients + command line ssh or Putty for Windows clients). First one to log in starts a screen(1) session. Second one will attach to the session by running screen -x. Now they both share the console session in real time. Both can type input and the other one will see the updates immediately. Have them write code using any Unix text editor such as vim or emacs (or pico or jed or what ever for wussies).

    Summa summarum.
    • It can't get more text based than this.
    • Connection will be perfectly usable over a low-bandwidth link (though you should have reasonable latency, say 100ms or less, for jerk-free operation).
    • Minimal requirements at student's end
    • Having to work on text-based command line may sound a bit kinky at first if the student's are not familiar with it, but hey, you need not to be a long-bearded Unix weirdo in order to set up and use this kind of system. It's really simple when you think about it and let your prejudice go and spend 15 minutes learning the basics first.
    • Definitely free as in beer and freedom!

Heuristics are bug ridden by definition. If they didn't have bugs, then they'd be algorithms.