If you’ve ever been involved in a programming project that required many developers to work together without the aid of a source code control system, you’ve probably experienced the joy of having someone overwrite some part of the code you were working on. If this has ever happened to you, you probably now refuse to write code without a source code control package and a loaded pistol by your side. Perforce is an excellent example of the former; for the latter, see the discussion of the mod_ auth_smith_and_wesson PAM module elsewhere in this issue.
Source code control systems (SCCS) keep track of changes to a code base, preventing other developers from stepping all over your code. Through “merging,” SCCS can also make it relatively easy to blend together multiple changes made to a code base by multiple people without losing anyone’s contributions.
Perforce is a client/server source code control system that runs on a large number of platforms. The server typically is where the code store “lives.” Clients typically modify only local copies “checked out” from the server. Perforce provides Graphical User Interface (GUI) clients for operating systems such as Windows and Mac OS, and offers an excellent browser-based client called p4web for all other platforms (including Linux).
Once you get it working, Perforce is a great piece of software. Unfortunately, that can take a while. The documentation is well-written but hides some easy getting-started instructions in obscure places (such as within the demonstration program documentation). Luckily, Perforce’s customer support is top-notch and patient, no matter how many silly questions you ask (and we asked a lot).
Unfortunately, while the documentation itself was very good, it is only available online, which proved to be extremely irritating. While this may make it possible for software companies to update documentation right up to the last minute, we don’t have to like it.
As you might expect with Linux, Perforce faces stiff competition from an excellent piece of free software called CVS (Concurrent Versioning System), which can be compiled on almost any operating system. However, while CVS includes much to recommend it, Perforce definitely earns the money they charge. Perforce’s client GUIs are excellent, providing nice hierarchical views of modified files and directories. CVS has free GUIs that make it easy to work with, but they can’t touch Perforce’s years of dedicated GUI enhancements.
In addition to having fancy GUIs, Perforce has phenomenal technical support. If you’re a software developer, you’ll be up against a tight deadline at some point, and something will go wrong with your source code control system. It’s just the nature of the beast. Perforce may be fairly expensive (especially compared to a product that’s free), but you can call them when you have a problem; a patient, pleasant person will help dig you out of the hole you’re in.
If your company’s future is resting on the successful release of a new product, the kind of service that Perforce provides is priceless.