Computer Science House
Jon Parise is the primary systems adminstrator for Computer Science House, at the Rochester Institute of Technology (RIT) in New York.
A few years ago, members of RIT's Computer Science House (CSH) began discussing solutions for source code management. The House had accumulated a good deal of legacy source code from various projects during its 25 years, and decided it would be a good idea to centralize everything in a central code repository. The repository needed to be accessible via the network, support multiple users, and offer client software for a wide range of hardware and software platforms.
Computer Science House (CSH) is a non-profit, student organization with roughly 60 active members at any given time and an alumni network of approximately 700 members. In 1999, Yahoo! Internet Life voted CSH America's "Most Wired Dorm." We're basically a bunch of RIT students who live together in the dorms and who do all sorts of computing projects.
We operate and maintain our own computer network, which includes several multi-use server computers supplying network access to every room on the floor in addition to the standard RIT Ethernet connections. Seven research and development rooms give members space to work on a range of computer hardware and software projects.
CSH members work on various projects, from developing network-accessible vending machines to running computerized light shows, in addition to more "ordinary" coding projects. It's important for us to maintain an archive and revision history of our common source code, because student members graduate and move on every few years.
When we first began looking for an SCM tool, it seemed as though CVS would be the obvious solution. Having worked with CVS in the past, I was already familiar with its organization and functional metaphors. It fulfilled all of our needs, and it was freely available. CVS support is also plentiful among popular development tools, and there are numerous third-party add-ons available. In addition, countless public software projects (including all of the BSD source trees, Mozilla, GNOME, etc.) are managed using CVS. It therefore may be surprising to hear that we didn't end up choosing CVS as our source code management solution.
A large number of House members are loyal BeOS users and developers. We learned that Be, Inc. was using a commercial software solution -- Perforce -- to manage their source trees, and decided it was worth investigating, if simply out of pure curiosity.
Perforce, being a commercial product, was undoubtedly going to be out of our price range, or so we thought until we discovered this paragraph from their Licensing and Pricing page:
"Organizations developing software that is licensed or otherwise distributed exclusively under an Open Source license may be eligible to obtain Perforce servers gratis. This includes upgrades but not support. Perforce Software reserves the right to approve the Open Source license; those fitting The Open Source Definition, including the GNU and FreeBSD licenses, are good candidates. Execution of an End User License Agreement for Open Source Software Development is required."
We contacted Perforce Software and explained to them how we fit the above requirement. Perforce also offers a moderately-priced Educational License, but since we were using Perforce to develop free software and not just in an educational environment, we qualified for the Open Source Development license.
The Perforce Solution
Perforce offers us a number of advantages over CVS. The most obvious advantage is the change list paradigm. This makes it much easier to track groups of changes to the repository. Perforce also has a superior permissions system, and support for different client workspaces makes it much easier to organize multiple group projects over the various hardware and software platforms we use.
Because interest in various CSH projects varies from year to year, Perforce allows us to maintain a consistent archive of all of our source code, with the associated log comments, so that members can pick up a project that has been dormant for a long period of time. This is especially important when the project's last developers have moved off of the floor or graduated.
Another advantage of the Perforce system is its extensibility. A client API package (complete with static libraries, header files, and sample source code) is freely available from the Perforce site. There are also hooks for running scripts (for reporting or validation) at various submission stages.
We've found the Perforce documentation to be both detailed and clear. We're also impressed with the wealth of contributed software available on the Perforce site, including graphical clients, source browsing scripts, CVS and RCS to Perforce conversion scripts, and additional merge and diff tools. Perforce had even developed a module for the Apache web server (called WebKeeper) that effectively puts the entire document tree under source control.
The Bottom Line
At Computer Science House, we are clearly impressed with the Perforce's capabilities. We may never use some of the more advanced features in our smaller, more manageable projects, however it is clear that larger software firms will surely benefit from Perforce's advanced source management competency.