Books: A User's Report
The computer field fortunately provides several distinct categories. It includes software development, hardware implementations, communications, and configurations for both software and hardware, to mention a few of its divisions. This column's selections include a hardware communications book, an Open Source process book, and a general Linux reference. Specifically, I reviewed: Interconnections: Bridges, Routers, Switches, and Internetworking Protocols, Second Edition by Radia Perlman (Addison-Wesley Professional Computing Series); Open Source Development with CVS by Karl Fogel (Coriolis Open Press); and Linux: The Complete Reference, Third Edition by Richard Petersen (Osborne/McGraw-Hill).
Notes and News: Addison Wesley has released a special edition of The C++ Programming Language by Bjarne Stroustrup. This hardcover edition (ISBN 0-201-70073-5, $59.95) includes two additional Appendices on Locales and Standard Library Exception Safety, which are also available at http://www.research.att.com/~bs/. This is an elegant edition of one of the most popular C++ texts published. Stroustrup's C++ book has become a classic guide to learning C++ and is also the definitive reference by the language's creator.
Interconnections: Bridges, Routers, Switches, and Internetworking Protocols
Addison-Wesley Professional Computing Series
In a world connected by networks, the knowledge of how those networks are designed and, more importantly, how they function is both essential and desirable. Radia Perlman's Interconnections books examine the principles and their corresponding implementations, the protocols employed, the characteristics of the individual methods used, and some historical notes regarding networks, their topologies, and their accompanying terminology. Perlman's original text, Interconnections: Bridges and Routers (Addison-Wesley Publishing Company, 1992, ISBN 0-201-56332-0) explained the uses and designs of routers and bridges; it also clarified the associated algorithms and vocabulary.
In the first book, the author simultaneously addressed three different audiences: the uninitiated learned the elements of networking, administrators and programmers appreciated the system analysis features, and the experts used it as a resource and reference guide. The current edition not only updates the information to include recent developments in technology, but also expands the book's scope to include more topics and increases the number of examples provided. Perlman retained the order of the introductory chapters: Essential Networking Concepts, Data Link Layer Issues, Transparent Bridges, and Source Routing Bridges. These chapters clearly describe the basic concepts of networking and furnish a solid foundation for the novice (without overwhelming him or her).
The central section of the book analyzes the following topics: Hubs, Switches, Virtual LANs, and Fast Ethernet; Network Interface: Service Models; Connection-oriented Nets: X.25 and ATM; Generic Connectionless Service; Network Layer Addresses; Connectionless Data Packet Formats; Neighbor Greeting and Autoconfiguration; Routing Algorithm Concepts; Fast Packet Forwarding; Specific Routing Protocols; and WAN Multicast. These chapters survey the fundamental developments (both old and new) in networking and describe protocols and packets, algorithms and addresses, and topologies and transfers. The concluding chapters feature Sabotage-proof Routing, To Route, Bridge, or Switch: Is That the Question?, and Protocol Design Folklore. Sabotage-proof Routing details cryptography practices and denial of service attacks. The final two chapters encapsulate and review the rest of the book, highlighting the most important facts and including some insightful advice from the author. Perlman has also included a thorough glossary.
Interconnections: Bridges, Routers, Switches, and Internetworking Protocols, Second Edition by Radia Perlman remains a superb networking classic. The author describes the essential concepts, presents the state-of-the-art solutions, discusses former solutions, and demonstrates their implementations. She provides examples throughout the text and illustrates why the reader should know the features and functions of the current topic. Perlman expresses the concepts and procedures logically and clearly with a humorous touch. The homework at the end of each chapter additionally makes this book an ideal selection for either class use or independent study. Whether you start with the Table of Contents or the Index, this is a practical and exceptional book for any beginning, intermediate, or expert user; no networking professional should be without a copy!
Open Source Development with CVS
Coriolis Open Press
Portions of This Book Available
Under the GPL
The Open Source Movement (a.k.a. Revolution) has inspired a lot of people to contribute their ideas, time, and efforts to Open Source projects. Since many of them have never attempted this before, their first question is How does this work?. Obviously, there must be some type of method so that Dave in Boston doesn't add a feature that either duplicates or conflicts with the changes that Donna in California has just finished. The solution to this scenario relies on some type of source code control. Concurrent Version Control (CVS) allows developers to independently and simultaneously modify the same program, merges their changes, and notifies the programmers of any conflicts. Fogel addresses both Open Source procedures as well as CVS techniques and behaviors. He describes how each functions separately and also illustrates how they interface with one another.
The author presents the specific topics in the following order: Why Open Source Development And CVS Go Together; An Overview Of CVS; The Open Source Process; CVS Repository Administration; Designing for Decentralized Development; Advanced CVS; Building, Testing, And Releasing; Tips And Troubleshooting; Complete CVS Reference; and Third Party Tools That Work With CVS. The Appendices contain (A) CVS Maintenance And Development Today, and (B) GNU General Public License. In the first chapter, Fogel provides a brief and informative (as well as enlightening) history of Open Source technology accompanied by a description of CVS's development. He recounts the use of RCS (Revision Control System), its attributes and disadvantages, and the resulting evolution of CVS. One of the best arguments that I have read for Open Source appears on Page 1:
Most commercial programs are shipped already half-broken -- not that they don't work as advertised, but their potential for future maintenance and development has been drastically curtailed because they withhold their source code... Your only choice is not attractive -- you have to wait for the next version to be released and hope the manufacturer has fixed the bugs. [Page 1]
That's it! Fogel has distilled the primary reasons to participate in Open Source projects as opposed to proprietary products within two sentences. The ability to examine the source code when a program doesn't perform as expected is a definite advantage and quickly becomes habit-forming. After reading this chapter, the developer's initial How? question evolves into more specific queries, such as How does CVS work? and How can I use CVS?. The second chapter provides both a general explanation of CVS and a guide to its basic procedures. Chapter 3, The Open Source Process, is not only a glimpse of how an Open Source project progresses, but also demonstrates how to successfully manage an Open Source project.
In the following section, CVS Repository Administration, Fogel discusses maintaining a project's development and changes employing CVS. He also evaluates the elements of good software design, particularly for Open Source projects and developers. The Advanced CVS chapter details its capabilities beyond the development stage. The author examines the commands that communicate changes (or the lack of change) and code status to others simultaneously working on the project. In the Building, Testing, and Releasing chapter, Fogel distinguishes the process from the user's and the developer's individual perspectives, and surveys the procedure from the developer's viewpoint. The final chapters provide troubleshooting scenarios (Tips and Troubleshooting), a Complete CVS Reference, and Third-Party Tools That Work With CVS.
It is extremely frustrating when a given program doesn't work properly; it is even more frustrating when you can't see why it doesn't. The increased acceptance of Open Source projects is allowing more developers to not only see why something doesn't work right, but also to modify it so that it will. Open Source Development with CVS by Karl Fogel illustrates how both the Open Source process and CVS work. The author analyzes the uses of CVS from several different perspectives, including the developer's and the administrator's roles, demonstrates how it interfaces with the Open Source process, and describes other issues (e.g., program design) that are also involved. Fogel furnishes abundant examples throughout the book combined with a straightforward, appealing, and often humorous writing style. Open Source Development with CVS is an exceptional book for every developer and administrator concerned with the Open Source process or Concurrent Version Control. It is an excellent resource and reference for both the beginner and the experienced user.
Linux: The Complete Reference
Two CD-ROMs Included
The need for comprehensive, reliable, and understandable references remains the same whether the operating system is Solaris, HP-UX, AIX, or Linux. As long as there are new users and administrators and development keeps changing, good documentation will be essential. In Linux: The Complete Reference, Third Edition, Petersen provides an excellent demonstration of recent changes within the Linux operating system environments. The second edition addressed Linux concepts, procedures, and practices with a focus on OpenLinux by Caldera. In contrast, the third edition includes both Red Hat Linux and Caldera's OpenLinux on CD-ROM with emphasis on Red Hat, Caldera, and SuSE distributions.
The author discusses the topics through six major sections, plus the Appendix. Part 1, The Introduction, describes the basic installation and configuration choices. The second section, Environments, surveys the desktops (e.g., KDE and Gnome), the various Window Managers, and Shell techniques. In the third section, Petersen details Internet options, including the Web, FTP, Gopher, Mailers, and Usenet, while the following section examines Servers, specifically Internet and FTP Servers, the Apache Web Server, Gopher, DNS and BIND, and Mail Servers. The Applications division presents the capabilities of office and database applications, software management, including the Red Hat Package Manager (RPM), and editors. Systems administration issues comprise the following section, featuring File System Administration, System Administration, and the accompanying utilities, Network Administration, the X Window System, and Xfree86. The Appendix examines the contents of the CD-ROMs.
Linux: The Complete Reference, Third Edition provides an excellent resource for new and experienced users, as well as administrators. Whether you are looking for Linuxconf options, Samba configuration, or Apache directives, Petersen describes, illustrates, and explains the topic in a superb manner utilizing a well-written style. This is an effective and valuable guide to Linux concepts, implementations, and practices that every user and administrator will appreciate and use frequently. n
About the Author
Elizabeth Zinkann has been involved in the UNIX and C environment for the past 13 years. She is currently a UNIX and C consultant, and one of her specialties is UNIX education. In addition to her computer science background, she also has a degree in English. Her writing has also appeared in Linux Magazine, Performance Computing, and Network Administrator. Elizabeth can be reached at: email@example.com.