C multi-user compilation environment

Hello guys,

my classroom has 21 students and this year I'd like to use FreeBSD to develop little projects (programs in c/c++) developed by little groups of student (7 student by group).

The PCs of the school's lab are connected to a server.
I'll install FreeBSD on the server.

But I have a question.

When multiple users develop and compile code simultaneousy, in which a way has to be controlled the multiple cross compilation from different and PCs ?

In the past I've worked as developer in a international firm (many and many years ago = in fact as you can see I completely forgot the Unix and FreeBSD world).

I don't remember what multi-user compilation environment I used with my collegues there.

Tips are welcome.

Thanks in advance.
 
Step 1: Never use NFS as a file system to run builds on. Why? Make and friends rely on the modification time of source and built files to decide whether things need to be built. With time skew between machines, murder and mayhem will result on NFS.

Step 2: Why do you even care? With modern CPU and disk speeds, builds can be really fast. Why not have every student have their own copy of the source code, and do their own local builds? And then also learn how to use a source control system to get the source code in and out? In the last 20 years, I've not seen any multi-user development environment, it is simply no longer necessary.

A friend of mine teaches software engineering at a university. Note that I said "software engineering", not programming (coding is a tiny part of the actual work a software engineer does, perhaps 10%). He makes his students write project proposals, present them to a review committee (the other students), formulate cost/benefit analysis for their proposals. Then they have to do design and go through a design review. Then they get to use an existing source base that has some basic libraries, they learn how to use source control, how to do revision handling and branches, how to perform builds, how to create test plans and test the software, how to track and triage bugs (other students act as testers, and enter bug reports into bugzilla), how to fix bugs, and how to release a shippable, installable product. In an easy-to-use programming environment (I think he uses Java), this can be squeezed into a 12-week semester class, by having the students work in small groups. I think this is a WONDERFUL experience for students to see the other 90% of the work that is required in a real-world job.
 
Back
Top