Clarifying the Open Source Movement

Dr. Dobb's Journal September 1999

By Lou Grinzo and Laryn Fernandes

Lou is a programmer, consultant, and technical writer. He can be reached at lgrinzo@ stny.lrun.com. Laryn is a programmer specializing in data mining. He can be contacted at larynf@home.com.

Open Sources: Voices of the Open Source Revolution
Chris DiBona, Sam Ockman,
and Mark Stone, editors

OÕReilly & Associates, 1999
272 pp., $24.95
ISBN 1-56592-582-3

Graphic Java 2:
Mastering the JFC
Third Edition
David M. Geary
Prentice Hall, 1999
1622 pp., $54.99
ISBN 0-13-079667-0

Ask N working programmers what "open source" means, and you'll likely get at least N+1 different answers -- perhaps the surest sign that the open source movement has reached that odd state in which it's widely recognized, but not nearly as well understood. A similar problem, also not unique to the open source phenomenon, is that people outside the movement tend to think of those inside it as walking in lockstep, in complete agreement with the movement's most visible and vocal leaders. Open Sources: Voices of the Open Source Revolution, edited by Chris DiBona, Sam Ockman, and Mark Stone, clarifies just what open source really is (and isn't), and shows the stunning diversity of people in the movement.

Open Sources has a lengthy, thoughtful introduction by the editors, and 14 chapters written by 15 different leaders of the open source movement: Eric S. Raymond (who wrote two chapters), Marshall Kirk McKusick, Scott Bradner, Richard Stallman, Michael Tiemann, Paul Vixie, Linus Torvalds, Robert Young, Larry Wall, Brian Behlendorf, Bruce Perens, Tim O'Reilly, and Jim Hamerly, Tom Paquin, and Susan Walton, who collaborated on one chapter. The book also includes two appendices: A transcript of the "Tannenbaum-Torvalds debate," and version 1.0 of the official Open Source Definition.

If you're at all familiar with the aforementioned names, you won't be surprised to hear that the authors take wildly, almost comically, different approaches to their topics. Robert Young, founder and CEO of RedHat Software, the most prominent distributor of Linux, addresses the business model of open source, citing Heinz ketchup and cars with their hoods welded shut. Richard Stallman, to no one's surprise, focuses on the ethics of open versus closed software, and seems more interested in the politics of the phenomenon than anything else. Stallman's chapter is immediately followed by one by Michael Tiemann, founder of Cygnus Solutions, who opens with a paragraph that sounds as if it were copied from an MBA program textbook. This nearly surreal segue highlights the diversity in the open source movement more effectively than any other part of the book.

Perhaps the most useful chapter is "The Open Source Definition" by Bruce Perens, in which he talks at length about the different types of software licenses that have been used in recent years. He even boils the matter down to a short list of questions about modification and distribution rights, plus a table that maps the answers to those questions to different models, allowing the reader to quickly select the right license (or licenses) for a given project.

Fans of Larry Wall, inventor of the Perl programming language, know about his love of language and penchant for thinking far outside the box. His chapter, "Diligence, Patience, and Humility," is easily the most fascinating of the book, but I will avoid attempting a concise description here, for fear of lapsing into unintended parody. The chapter deserves to be read on its own terms.

The overall tone of Open Sources is another small, but welcome, surprise. As anyone who frequents certain newsgroups knows, the more vocal adherents of open source and Linux can be quite short tempered with those who disagree with them or ask naive questions. That sort of dogmatism is, mercifully, missing from Open Sources. Eric Raymond writes (on page 219):

We half-joke about "world domination," but the only way we will get there is by serving the world. That means J. Random End-User and his Aunt Tillie; and that means learning how to think about what we do in a fundamentally new way, and ruthlessly reducing the user-visible complexity of the default environment to an absolute minimum.

If I had to sum up the philosophy of this book in just a few sentences, they would be, "Open Source is a serious phenomenon and the basis for sound business models, not the raving of left-wing loons. Open Source isn't a silver bullet that will eliminate all problems with software development or intellectual property, but neither is it a fad that will burn brightly for a week and then fade away." Some of the contributors (most notably Robert Young, Brian Behlendorf, and Michael Tiemann) take such a sober, analytical, and convincing approach to open source that it's hard for even those already on the bandwagon not to become excited.

Appendix A, "The Tannenbaum-Torvalds Debate" is a welcome surprise, in that it provides a 30-plus-page transcript of newsgroup postings from Linus Torvalds, Andrew Tannenbaum, and others debating the merits of Minix (Tannenbaum's UNIX-like OS) versus Linux, and micro- versus macrokernel architectures, dating back to early 1992. There are archives of this exchange on the net, but it's good to see it also preserved in printed form, and it's definitely worth reading in the context of this book.

Open Sources is an entertaining, enlightening, and thought-provoking book that casts considerable light on the open source phenomenon and the personalities driving it. Everyone in the software business, and probably most people who use software for business or pleasure purposes, should read this book, so they can form their own, more educated, opinion of the movement.

-- L.G.

Thinking about making that jump from the AWT to Swing? Not sure where to start or how to go about it? Your search stops with David Geary's Graphic Java 2: Mastering the JFC.

Part 1 of Graphic Java 2 covers Swing fundamentals, while Part 2 talks about the Swing components themselves. Chapter 1 introduces what Swing is all about: lightweight versus heavyweight components, the various Swing packages, and the Pluggable Look-and-Feel. Code snippets start from Chapter 2 onwards with examples on mixing lightweight and heavyweight components in the same application, popup menus, and internal frames. A "must read" in this chapter is the "Ramifications of Swing's Single-Threaded Design." The book provides a very detailed explanation of this key feature of Swing, along with sample code to explain how developers can work around it.

The Model-View-Controller (MVC) architecture that Swing components are based on is discussed in Chapter 3. Class and block diagrams, code examples, and images of applications are used to explain the concept of multiple views for a given model.

The almighty JComponent class is thoroughly covered in Chapter 4. The new Swing Border package, Icon class, and Abstract Action class appear in Chapter 5, while Chapter 6 talks about the Swing Utilities package, Progress Monitoring, and the Undo package. Code snippets are provided for all of the above. The last chapter in Part 1 explains in detail what the Pluggable Look-and-Feel is about and how to go about defining a customized Look-and-Feel.

Part 2 covers all the Swing components and their properties in detail; each component allocated a chapter. Two of the most complex components -- Table and Tree -- are covered in great detail in Chapters 19 and 20, respectively. These two chapters alone are worth the price of the book for serious Swing developers.

"Swing Tips," which are scattered throughout the book, explain principles in a brief yet concise manner. "Parting Shots," at the end of every chapter, provides a means of encapsulating the concepts presented in a chapter. It would have been nice to see a chapter on printing with respect to Swing components, but then, printing is an AWT-related topic.

All in all, Geary has done such a thorough job in Graphic Java 2 that it can be truly considered the Swing bible. Don't let the size of the book intimidate you, it provides a top-level view as well as microscopic details on all Swing components. It will definitely prove to be an asset in the Swing developer's arsenal.

Finally, Graphic Java 2 includes a CD-ROM that contains JDK 1.1.7, JDK 1.2, and Swing III Beta 1 for Windows and Solaris (only Swing III Beta 1 for the Mac), as well as complete source code for all of the examples in the book.

-- L.F.

DDJ


Copyright © 1999, Dr. Dobb's Journal