Collaborative Software For Pair Programming?
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?"
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 :
http://weblogs.asp.net/fmarguerie/archive/2005/04/27/Hosted-source-control.aspx
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 ;-))
Everything I write is lies, read between the lines.
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 keep communicating. Most of the time, we would sit side by side in the lab brainstorming and talking about the project.
... well, probably more important to my career as a developer than learning Java.
:)
I suggest this because it's
If collaborating while writing code isn't natural to them, you should be pushing it. I'm not sure what server resources you have at your disposal. What if they have a lot of files? What if you need different permissions for each pair? I would say set up a SVN server but for each pair? And there goes complexity although I found TortoiseSVN to be very simple. It's great experience for them to work with a source control system though.
So what you should do is write a guide (or better yet, have an grad student write a guide) telling them how to share directories between each other and only each other.
If these are going to be one file projects (likely) and you don't care if everyone can see/modify everyone else's project (unlikely) why not make a Wiki with ground rules? Just put your code up on you and your partner's page and the whole history is right there.
Your other option is to go to a higher level course or your department and ask for a solution. You're in a computer science department and you're looking for a particular solution that isn't out there. Everything is too complex: cvs, git, svn, etc. So write up some basic requirements and give it to a class of grad students or someone looking for a research program. I'm thinking like a dumbed down interface to git is all that is needed to be developed. You know, like some really simple java application that points to your local directory and then server and then updates, commits or a few other basic commands? And open source it when you're done coding it
My work here is dung.
One of the pastebin-type sites may well fit your criteria - some of them include revisions or even test-running code.
How about gobby... http://gobby.0x539.de/trac/ ?
Cue The Sun...
for simple plain text stuff: http://etherpad.com/
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.
I use www.pastebin.com for my code sharing.
a friend and I use it at least once a week to look at code and make changes. plus you would have access to see it as well.
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: http://en.wikipedia.org/wiki/Collaborative_real-time_editor
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.
Just because you are wrong and I called you out on it doesn't mean I am a Troll.
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.
Que Deus te de em dobro o que me desejas
[May God give you double that which you wish for me]
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.
Better known as 318230.
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.
If you want private, pay, otherwise it's free and super easy to use.
http://github.com/
. . . 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.
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
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.
adobe buzzword
simple to use
can export it any format
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.
The currently in-beta Windows Live Mesh (www.mesh.com) allows multiple users to share file folders and synchronizes changes of the files inside each folder between them transparently. It is amazing.
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.
https://bespin.mozilla.com/ - 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.
Why not use git? Or cvs or any other source control, really. If it's really pairs, they could just email the source back & forth, and that might be easiest, provided they can manage conflicts on their own. With three or more that could be a hassle, and then I'd set up source control. Heck, make your departmental sysadmin do it! Then it'll be painless :)
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 all the right software and then run as many VNC servers as you need on top of that.
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.
I recently graduated and although no professor had "forced" us to use collaborative tools on our projects we always ended up doing so.
Google Code was popular, as were a few other cheap/free SVN driven online solutions..
When I pair program, what works best is to have two computers. One person does the typing with the 2nd watching. However, when needed, the 2nd person can use their computer to look things up and do research on the fly when needed to support the 1st.
If information (such as a URL) needs to be passed from one system to the other then a simple chat client does the trick.
I think the OP is going for collaborative editing, not sharing code via a SCM. The feedback cycle is entirely different when you can just type up something and the other party sees it immediately, instead of having to commit, notify the other, then have them do an update.
http://www.flickr.com/photos/mendhak/3229053685/
Always proofread carefully to see if you any words out.
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
- Spryguy
There are three kinds of people in this world: those that can count and those that can't
I would suggest looking at using http://www.ning.com/ I have taught several classes on technology, and rather than set up a server, or using "collaborative" software clients, I've used ning as my online classroom for students. It does take some configureation on your side, but it's rather simple to set up and customize. You can also set it up to be a closed network, so only your students can get into it.
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.
Doesn't seem that anyone has mentioned "kibitz". This is a shell program (*nix) that allows two users to share one shell session. I find it works quite well for this kind of thing.
I initially read the question as being about real time remote collaboration.
If that's the case, there's Eclipse's DocShare plugin: http://wiki.eclipse.org/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.
Try the DocShare Plugin for Eclipse:
http://wiki.eclipse.org/DocShare_Plugin
http://sites.google.com/ should be a good place to start, or some other free wiki hosting site such pbwiki.com. A wiki is good for text sharing, very easy to get started with, and allows extra functionality (cross linking, multiple pages) that help collaborate, and is also good for submitting a final report!
Could it really be someone who's teaching programming at a major US university doesn't know about source control systems ??
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...)
http://etherpad.com/
vi through a shared screen
I have paired up remotely using VNC to share the editor session, and skype for the voice part. It works surprisingly well.
I know that it's not out yet, but isn't this a perfect example of what Google Wave is for?
Code version control: Git, SVN, CVS,
Text communications: IM, IIRC, Jabber, AIM, whatever. gtalk
Screen Sharing: Skype - video, voice, text chat, desktop sharing all in 1.
Phone and conferences: google voice, & skype. The goal being free conferencing withot any long distance costs.
Interactive Text editing: ACE http://freshmeat.net/projects/ace
Good thing I've never thought about this at all.
You have programmers and don't have an obvious solution to your niche problem. It sounds like you could have them, or an older year class, make it a project to solve that problem. Getting students to solve actual problems is important to getting them to realize what type of problems are actually out there and what it takes to solve them.
"Gobby is a free collaborative editor supporting multiple documents in one session and a multi-user chat. It runs on Microsoft Windows, Mac OS X, Linux and other Unix-like platforms. " It is GPL, easy to use and lets you code together very rapidly. http://gobby.0x539.de/trac/
You don't really need to customize anything as these extra features are available as plugins, which are easily installable. As a plus, you might feel the need to ditch Java for Python ;)
Eclipse offers realtime collaborative editing via XMPP and the Eclipse Communication Framework:
http://www.infoq.com/news/2008/06/eclipse-ganymede-ecf
Set up a Jabber server and away you go.
I have not tried this, so I can't speak to its quality.
I used BitBucket in my 2-4 developer teams - we all live far from each other or had to work late at night - BitBucket combines versioned code, via the distributed SCM Mercurial, with a wiki and bug tracking system which were all indispensable in helping us design, code, and test our project. This can all be done privately, commits made over the web with ssl or through and ssh tunnel, and BitBucket offers OpenID integrated authentication to their website along with traditional passwords. Best of all, your first 150MB of server space is free! and AFAIK eclipse and netbeans have a mercurial plugin
Paul M. Nguyen; B.S. Computer Science; Registered Linux User #370740
As part of my degree we had to do some group development projects and chose to set up a google group to put all the work on as it allowed us to upload any type of file. We also used the page creator in it to make links to versions as they changed. This was pretty simple to set up and use though slightly tedious as times.
There is no place like
Google Notebook has been easy to use and could work out. I don't think it's plain text because it creates links out of www.example.com but it is easy to share a google notebook and allow access to it to multiple people.
You might also want to check out The NetBeans Collaboration Project:
http://collab.netbeans.org/
If you can use VNC, go for it.
If that won't work, but you're both using Windows or OS X, try http://www.teamviewer.com/
Free for non-commercial use.
Take a look at the Netbeans Collaboration tools. http://collab.netbeans.org/
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 skydrive.live.com 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 was radically different from each others.
http://tortoisesvn.tigris.org/
If the OP is a professor at a university looking for something that will allow real-time collaboration on a source code editor (syntax highlighting, build tools), I have only heard of one solution: UNA IDE. The software is proprietary and made by n-brain. http://www.n-brain.net/ I would suggest the OP contact the company and discuss educational license options. It is likely they would negotiate some reasonable pricing for class usage. I would highly recommend that the students also use a VOIP tool during coding sessions.
Modularize the code and each write separate modules.
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.
Windows is a bonfire, Linux is the sun. Linux only looks smaller if you lack perspective.
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.
XML is like violence. If it doesn't solve the problem, use more.
You're teaching Java and need pair programming...
Sounds like you need netbeans... http://collab.netbeans.org/http://collab.netbeans.org
I think it sounds tedious, but you did ask...
These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
Today there's little technical reason to offer any other interface into a UNIX host than ssh. If they need some other interface, they can setup a tunnel.
FTP, telnet should be actively DISABLED. WinSCP team, shame on you for adding FTP into your otherwise fine program.
The number of "developers" I've seen who thought FTP was require when ssh was available is staggering.
Having completed part of my education via UoP, which requires students to work in teams for every course (I was pursuing an IT BS, so coding courses did exist in my curriculum), utilizing a simple means of communicating and sharing work was important. What is wrong with a simple instant messenger? Skype, and AIM allow you to chat via IM, or verbally 1-on-1, and in small groups. You can also file transfer .txt files with your code back and forth in seconds.
This was the easiest method of remote collaboration. It was up to the group to decide how to handle things like delegation of the workload, etc. The pair should be able to handle splitting up the assignment, pasting together their parts, and file sharing .txt files to work on a project together.
eclipse has shared editor capability: http://wiki.eclipse.org/DocShare_Plugin I saw a demo about a year ago. I thought it was pretty cool. I don't have much need for it. I'm a loner. Regards.
There is a great Mac app called SubethaEdit, I highly recommend it, and is a great collaborative text exit app, allowing many ppl to contribute simultaneously.
Hate to say it, but the commercially available GoToMeeting (citrix stack) and a Skype account is pretty much all you need. Goes beyond VNC in that it allows for more refined desktop sharing controls (individual windows, IO capability toggling, simple whiteboard tools). Only requires 1 license for whomever does the hosting. There's a trial mode.
Skype ... duh.
Skype is for voice communication and YuuGuu is for screen sharing. That should get you virtual pair programming. Both are freely available and pretty simple to use.
Use ubuntu's shared folder/cloud storage... dead simple! The students can share the same folder (integrated with nautilus) so that they can have codes/binaries shared.. (svn would be the best option but, since you asked for DEAD SIMPLE)
I think you are mixing concepts here.
For source code sharing, this is probably a good time to introduce them to source control tools, either centralized (Subversion) or distributed (Mercurial, GIT, Bazaar).
For actual pair programming, which implies two people looking at the same screen (one of them actually typing) I'd recommend any screen sharing application (SharedView, NetMeeting, the last Skype, etc).
mozilla labs has a project called bespin where you can collaboratively code:
http://labs.mozilla.com/projects/bespin/
It's still getting started but has lots of promise.
http://moonedit.com/
Offers real-time collaborative typing.
Some time ago I've found an article about extending Google Docs to be used as colab tool for writing LaTeX (is very similar to write a program, hence they both need compilation)
Dekeyser, Stijn. Watson, Richard. Extending Google Docs to Collaborate on Research Papers
Whenever I've taught or trained remotely I've always used screen to multiplex the session. That takes care of the coding part. For communication I usually use something like skype or google talk. Pick your poison there. http://www.gnu.org/software/screen/
2 GB Free per accounts, shared folders, automatic synchro !
This is amaising !
https://www.getdropbox.com/
http://www.youtube.com/watch?v=IFClpADY7Tc
TossableDigits.com: Temporary Phone Numb
SubEthaEdit does collaborative coding on Mac, if I recall correctly.
http://www.codingmonkeys.de/subethaedit/
Computer Science is all about trying to find the right wrench to bang in the right screw. -T.Cumbo?
I had this Idea few years ago to make a free software colaborative Java IDE for multiple users to work on the same code at the same time. The friend I was about to program it with (but didn't) sent me a link few months ago. I think it's basically the thing we were trying to do. To be honest I didn't try it out, but from the sound of it, it's the thing you want. Here's the link: http://gobby.0x539.de/trac/ In you decide to use this, please write down my nickname. I'd like to hear your experiences with it. Thanks.
Developed out of UNC http://www.cs.unc.edu/~smithja/FaceTop.html
open source sub sim. I might start coding again for this. http://dangerdeep.sourceforge.net/contribute/
I know it's not dead simple, but maybe it's still interesting to anyone reading the thread. My university's developing a realtime pair programming plugin for Eclipse, which I think is pretty cool. Check it out: https://www.inf.fu-berlin.de/w/SE/DPP
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.
CJ
Ah, arrogance and stupidity, all in the same package. How efficient of you. -- Londo Mollari
Use your favorite text editor (like vi or emacs) and share a terminal using GNU screen in multi-user mode.
I would try netbeans. http://javadude.wordpress.com/2009/02/09/how-to-use-netbeans-collaboration/
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.
May we live long and die out
As featured on slashdot: http://developers.slashdot.org/article.pl?sid=07/12/22/1746220
The team version is ideal for collaborative work like this, although it's not free (there's a personal version that is, though). Otherwise, pick a version control system and occasionally join up for a vnc/screen/webex session.
http://www.atlassian.com/software/crucible/
We use this at work to do code reviews. It could work for what you're trying to do, i.e. allow 2 developers to see what the other is doing.
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 order to get started on their class? On day 1 or day 2 they need to be up and running...
Maybe it's just me, but I think that the course should focus on the course material, and not get bogged down in extraneous stuff like what collaborative tools to use.
"Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
That's about as dead simple to use as it gets.
I highly recommend you take a look at IBM Rational Team Concert (RTC) Express-C:
https://jazz.net/downloads/rational-team-concert/releases/2.0/
It is 100% free for up to 3 users. RTC is based on Jazz (jazz.net), a sophisticated, collaborative software delivery platform from IBM Rational. Erich Gamma, one of the technical leads for Jazz, recently responded to questions about Jazz and other topics from Slashdot users in an interview:
http://interviews.slashdot.org/story/09/07/08/1851209/Jazz-Technical-Lead-Erich-Gamma-Answers-Your-Questions
In any case, RTC will do many things for a team. It integrates directly with Eclipse or Visual Studio, and there is also a web UI. Installation is a breeze, too, as it comes with Tomcat and Derby. Here are some specifics:
- Work items are a key aspect of the product, as users are able to create work items of different types (defects, enhancements, tasks, stories, etc.), assign ownership of these work items to others in the project area, and collaborate using these work items through comments, attachments, approval/reviewer processes, and RSS/Atom feeds. Users are also able to enter planned versus actual work hours, so they can track their team load.
- There is an integrated SCM component for version control that users can leverage directly in Eclipse or Visual Studio. It is stream-based, and allows users to deliver multiple changes at one in a single change set. Change sets may be associated with work items so it's easy to see what changes were made for a particular work item, or why a change set was delivered.
- There is also an integrated build engine that uses Ant, so you can incorporate existing Ant scripts very easily. The integrated build component allows users to request a build on an ad-hoc or scheduled basis, and automatically retains a snapshot of the files in each build so they can be easily reproduced. Also, it maintains build histories, provides JUnit test results, and allows users to easily track the contents of each build.
There's a wealth of other useful functionality, as well. Check out jazz.net and see for yourself!
Murad
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 preferred NetBeans for this sort of thing, although nothing yet satisfies all of my peer programming requirements. I need an editor that lets one person follow another, and take turns editing, not something that just lets two people edit the same file at the same time. I'd argue whether the latter is of any use at all.
--- SER
Multi-user screen: http://aperiodic.net/screen/multiuser Gobby (multi-user text editor): http://gobby.0x539.de/trac/
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.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
GNU screen has the ability to share sessions, each pair could connect to the same screen session and share vim/emacs editing and other windows for logs/compiling etc.
Netbeans have a built in Chat function that allows you to share code between developers, it might do the trick.
You know how you sometimes see two road workers - one guy digging a hole, the other guy resting on his shovel just watching the first guy dig the hole.
That is Pair Programming.
Grab the NetBeans and install the collaboration plugin set from the update center. See http://collab.netbeans.org/
Actually with the Kenai (http://kenai.com/) support in NetBeans 6.7, you might not even have to do that but I haven't used it yet.
Google Wave looks like it will be a great tool for real time collaboration.
Unexpect the expected!
NetBeans IDE has this functionality built in. It's made for Java and allows the live collaboration that you are looking for.
I just found this free service, that is pretty cool. (no I am not a shill, I am working on some windows mobile software on the side)
www.xp-dev.com
Many people use screen to run a text terminal session with multiple screens, with the ability to disconnect and reconnect at will. Not so many know that if run with elevated privileges that you can connect from multiple sources simultaneously and truly interact. I haven't found a way to do so without using the elevated privileges yet, so I'd recommend running in a snapshotted VM as some form of protection.
We use subversion at Uni for that. It gets the job done
My coworker and I both work from home. We just use VNC for all pair programming and a telephone (with headset) for voice comms. We've been doing this for almost 3 years and are quite productive. For most coding we just use an editor. For a "whiteboard", we run MS Paint. What else could you ask for?
dom
Could probably even get away with RCS, but i'm not sure of too many projects that use that.
I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
I know this doesn't answer your question but...
Make your students get together IRL to collaborate. I transforms programming from a isolating activity to a social one. This way students are more likely to form personal bonds and continue studying computer science.
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.
Quack, quack.
I know Mozilla is experimenting with their Bespin project. Has anyone used it? Can it even be used to collaboratively edit yet?
Amazing how Web 2.0 (or is it 3.0) companies are still trying to deliver features that were delivered better, for free, at a fraction of the system requirements, over 20 years ago.
Have you thought on Gobby? It is easily downloaded from Ubuntu. It has sintax highlight for some languages and it is very easy to set up. The SVN Server is also a good idea, but the students should learn to configure the server. As you would like them to have on a centrilized way SVN would be the best. I would not go to git because they are "distributed" by nature, so they would do again everybody one part and not "togther". I hope this helps.
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:
https://bespin.mozilla.com/
I'm not sure what the secret to success is, but the secret to failure lies in trying to please everyone -Bill Cosby
I pair program quite a bit using a VNC. Coupling it with phone or skype allows remote sharing of a desktop for collaborative work. You can take turns editing or commenting.
It's old, tried and true.
Uh... it's not available yet, that's the trouble.
Note: I was 13 when I wrote most of this. Take with several grains of salt.
Next version of Mozilla Bespin will allow two or more devs working in the same file.
https://wiki.mozilla.org/Labs/Bespin/ReleaseNotes
Get your students interested, have them use Google Docs using XHTML with xml encoded embedded java code which they marshal and unmarshal using standard java library xml support into and out of whatever editor/development environment that each one wishes to use.
My guess is that, no matter how neat of a collaborative program you introduce to your students, they're going to give up on it after a couple of minutes, and decide to just meet in the lab on Thursday, at like 5 or something. A good deal of your students live on campus, and the rest of them are there most of the time anyway. Meeting in person is the quick-and-easy solution.
What about Openfire? http://www.igniterealtime.org/projects/openfire/index.jsp
There is plugins for both Netbeans and Eclipse.
http://collab.netbeans.org/files/documents/186/522/NB-Collab-Code-Review-for-JavaOne-v2.swf
This is a flash video of the collaboration stuff in Netbeans. It sounds like this might be what you're looking for.
I highly recommend using Review Board. you can use a normal repository like svn, git, p4. If you keep it simple and don't branch then it is pretty simple. With Review Board you can post diffs before you commit them, comment on individual lines, download the diff and try it with your own changes.
“Common sense is not so common.” — Voltaire
Hi, for Java pair programming I can only recommend the NetBeans Developer Collaboration Plugin. It is fully integrated into the IDE, people can see each other's compile results and console output from a test run and can edit one file simultaneously and see the changes the other one made in real time. This works for as many ppl simultaneously as you wish (well, maybe not for hundreds of ppl).
NetBeans also comes in a BlueJ Edition, that is especially tailored for people learning Java.
Hope this helps,
Neumaennl
I think Google Wave will be pretty good for real-time shared editing of a (text) document, once it is released.
. . . 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.
I'm surprised nobody has proposed this so far, but you can do online pair editing using some traditional tools. Steps to reproduce:
1. Student1 connects through ssh to the server
2. Student1 executes "screen"
3. Student2 connects through ssh to the server
4. Student2 executes "screen -x"
5. Their shells are bound to the same session, so now everything seen/typed on Students1 screen will show up in Students2 one, and viceversa.
6. Let them use whatever terminal editor they prefer
http://www.jetbrains.com/idea/features/ide_talk.html
And it is free for classroom, or open source projects: http://www.jetbrains.com/idea/buy/index.jsp#newuser
Nothing beats screen. One student starts programming within a scren session; the other student joins that screen session (screen -x) and now they're both in the same environment at the same time, and both are in control.
As others have said, you'll need some kind of source control (SVN probably - easier to understand and will let the students concentrate on the tasks rather than the tools). Then you'll need a voice link. Either telephone, Skype or a SIP-compliant VOIP thing. IM would be useful for communication between one pair and other pairs.
Then an IDE with collaborative editing. Netbeans has it built in apparently, but I haven't tried it. Eclipse has a number of plugins to facilitate collaborative coding:
Shareclipse: Does voice and video inside Eclipse, but projects not genuinely shared. Project might be dormant. linky
Saros: Does voice, but not video. Whole project shared. Uses a local IRC server, like XMPP or Jabber. Great demo vid. linky
Xeclip: Dependent on CVS and costs $$s. linky
XPairtise: Shares both code and code/test execution. Shared whiteboard. Needs a server in your intranet. Doesn't highlight users' cursors in different colours. linky
XCDE: Uses a intranet-local server. Shares bookmarks and tasks too in Eclipse. Has integrated voice (but requires JMF). Project might be dormant. linky
Other projects which look very dormant or incomplete: PEP, Sangam. Me, I'm planning to try Saros.
The more advanced the technology, the more open it is to primitive attack
http://www.amyeditor.com/
http://eclipse.dzone.com/news/who-needs-online-ide
Regards,
Netbeans allow for colaborative programming using XMPP protocol through one of plugins, as bonus you get all the goodies that come with IDE. Also it's portable to Windows and Linux.
I used to use "xkibitz" to share xterms. You can use the editor of your choice within that shell.
Called Cola, part of the Eclipse Communication Framework
http://wiki.eclipse.org/DocShare_Plugin
People work much better together in threes than twos.
Summa summarum.
If they're not year-one students, is GUI editing a requirement? If not, how about emacs (and the JDEE in-emacs Java IDE) under GNU screen? You can have multiple remote collaborators in a screen session.
Remote Pair Programming Using SSH Screen Vim and Skype
http://www.youtube.com/watch?v=IFClpADY7Tc
Most important: Read carefully. You did not want to be told that a Java teacher should know better, of course you do, but: it's not what the course is about. (1) dead simple! (2) free I would suggest a "portable wiki", ie, http://tiddlywiki.com/. It can be used from every internet connected browser from everywhere, and can as well be used offline just by copying one file. You can tag and categorise your entries (tiddles), for ex. "discussion" or "source", and export everything or just one entry or just one category. If not suitable, please give more information. Hope this helps mupan
Mod this one up. I've only tried it once, many years ago, but it was pretty cool. I only wish more IDEs had such features.
using a version control system along with shared desktop and voice chat can be one good option. this lets them work independently and also lets them collaborate when they want to and do code walk through or discuss on bugs etc...
Google Wave looks like an awesome platform for this.
Alas, it's not ready yet. But a wave-enabled IDE would be tough to beat for pair programming.
Google Wave would be a good solution when it's out, i guess...
--An Elf In Mordor
This appears to be less of an issue to do with the software involved and more to do with the logistics.
It seems unfair to set a task which adds the extra constraint of trying to perform pair programming at a distance. I wouldn't expect even senior developers to be comfortable with such a setup.
As most of the barriers will be in the ability to collaborate how will you mark the value of the output?
Unless you mediate the programming its hard to see how you can place any quantitative mark on the result that would be fair.
If you are trying to help them understand how to work together then its more important to see how they deconstruct a requirement and design the interfaces between them.
If it genuinely is the code output that you are interested in then leave them to do it themselves.
I haven't actually used this but take a look at synergy.
I've not seen any mention of this, but why not "VNC" to share a desktop?
I've used it frequently with distant co-workers to collaborate on why their environment is causing program breakage. Especially when I cannot duplicate the failure in my environment.
VNC allows "full access" as well as "read-only access" so you can control whether your classmate can access your stuff.
Gobby or MoonEdit
As a soon-to-be-graduating software engineering student, I would say that finding our own solution to this problem was always a useful exercise in every pair/group I've been in. And the solutions were ALL different, depending on the needs of the group.
You teach Java, stick to that. If you include more tooling in your class than just an IDE, you run the risk of coupling the tools and the language in the minds of your students, which will in turn make it difficult for them to transition into a job where the tooling is significantly different.
You'll also expand your job description to be tech support for whatever tool you choose, and you'll have to accept whatever problems and problem-generated excuses that tool generates. If you are tool-agnostic, you can be more of a hard-ass when an assignment is late or incomplete.
--"insert clever quote here"
You are teaching off-campus students pair-programming?
If an online college is trying to draw business away from local community colleges, I can think of a few colleges that would try to teach pair programming with Ventrilo+Gobby.
Pair programming is an amazing way to work and to learn. You just have to BE SURE that you have two keyboards and two mice.
I realize that the original question was in reference to remote pairing, but I don't know anything about that. Just chiming in about pairing.
Dropbox might be what your looking for. I study CS myself and dropbox is used for group work by almost everyone in my class. It's easy to use and has all the features I would expect from a revision control system.
Oh and btw, aslong as you don't need more than 2GB it's totally free.
I think that http://pastebay.com/ might be what you're searching for. The service i free and anonymous and you could share both text and code.
From http://pastebay.com/pastebay.php?help=1
"What is pastebay?
pastebay is here to help you collaborate on debugging code snippets. If you're not familiar with the idea, most people use it like this:
* submit a code or textfragment to pastebin, getting a url like http://pastebay.com/1234
* paste the url into an IRC or IM conversation
* someone responds by reading and perhaps submitting a modification of your code
* you then view the modification, and collaborate with others"