Open Source Development with CVS
Authors: Karl Franz Fogel
Venue:  (1999)

From the Book:If you're like most programmers, you don't make your living from free software (though it would be nice if you could, wouldn't it?). But chances are you've at least used some free software, and perhaps contributed code or documentation to free projects. In that case, you'll have noticed a couple of things about the free software explosion of the last few years: A culture and a shared set of values are springing up. Among these: Software has maintainers but not "owners," the line between developers and users is deliberately left undrawn, bugs are publicized instead of denied, and information hoarding of any kind is frowned on. Many free projects, and especially those with large, distributed development teams, store their source code in a revision control system called CVS. The second phenomenon is closely related to the first. CVS is flourishing precisely because it supports, and even encourages, the open, evolutionary development methods favored by free software. It allows anyone on the Internet immediate access to the latest version of the source code, it facilitates the creation of the "patch files" so necessary for contributing bug fixes and new features to a project, and it allows active developers to hack away at the same code base without worrying about stepping on each others' toes. Truly, if CVS did not exist, we would have to invent it. This book has two goals, therefore--one social, the other technical. The social goal is to document this new culture and provide concrete advice for people managing or participating in Open Source projects. The technical goal is to tell you everything you need to know to use CVS,with an eye toward using it on Open Source projects. As to the first goal: The operative word here is "advice." It would be presumptuous of me to make authoritative pronouncements on a subject so young and unsettled. Remember all those Web page design books that came out when the World Wide Web was barely a year old? Hindsight now shows many of their suggestions to be questionable or just plain wrong. Anxious to avoid the same pitfall, I will try to stick to what I know from personal experience to be true about Open Source practices. When my personal opinions do break into view, as will happen frequently, please do not take them as proven fact. And as for CVS, note that although it will be taught in the context of Open Source projects, you will learn CVS well enough to use it anywhere. It's not just for managing program source code; people also use it to version-yes, that's a verb now-Web sites, text documents, configuration files, and so on. (You'll also learn how to judge, without resorting to time-consuming experiments, whether CVS is the right tool for a given situation.) Accordingly, the book is arranged loosely into alternating chapters, some about Open Source development, some about CVS. As it progresses, and you become increasingly familiar with both topics and the strong links between them, this division will become less and less strict. It is assumed that you know something about programming or working with online documents, but previous familiarity with CVS is not required. At least a passing familiarity with Unix will prove handy, because the CVS examples are given in a Unix environment. But if you're a quick study you can get by without previous Unix experience. A Word About Terminology Is it "Open Source" or "free software"? This is an old-by Internet standards anyway-and rancorous debate. It has the defining characteristic of a linguistic dispute, namely, that people spend a lot of time arguing about whether there's anything to argue about. In my mind, the two terms are essentially synonymous, and I will use them interchangeably in this book. See Richard Stallman's essay "Why 'Free Software' is better than 'Open Source'" at http://www.gnu.org/philosophy/open-source-or-free.html for a well-written presentation of the case that the terms are not interchangeable. The "free" in free software refers, of course, not to price but to liberty-the freedom to modify and redistribute the source code as one wishes. It is this freedom, not the software's low cost, that has been the key to free software's success. It is unfortunate, then, that English does not have separate words for these two largely separate concepts. I hope it is not reflective of our values that our language associates low prices with liberty.