Common Lisp Interface Manager (CLIM) PREFACE

Total Page:16

File Type:pdf, Size:1020Kb

Common Lisp Interface Manager (CLIM) PREFACE Common Lisp Interface Manager (CLIM) PREFACE This book documents how to develop programs using the Common Lisp Interface Manager (CLIM), Release 2.0. It is intended for use by programmers who are expe rienced with Common Lisp and CLOS programming concepts. This book is useful for a programmer writing CLIM 2.0 applications on any Lisp platform, but includes some material that is specific to CLIM on Genera and Cloe. Organization This document has these major parts: "What is CLIM?" Describes the roots of CLIM 2.0, gives a technical overview of it, and compares it to Genera’s Dynamic Win dows. "CLIM Tutorial" Gets you started developing programs in CLIM with ex tended examples that you can run. This section introduces the important concepts of CLIM via these examples. "CLIM User’s Guide" Provides conceptoriented reference documentation cover ing topics in more detail than the Tutorial. The chapters in the User’s Guide also include summaries of functions, classes, macros, etc., which are documented more fully in the Dictionary. "CLIM Dictionary" Provides detailed reference documentation of CLIM func tions, classes, macros, and so forth, in alphabetic order. You can use the CLIM Dictionary when you need to know the syntax and semantics of a particular CLIM operator. "Glossary of CLIM Terminology" Provides a description of many CLIM terms. How to Use This Book Start with "What is CLIM?" for background information and a technical overview of CLIM. When you are ready to start programming, proceed to the "CLIM Tutorial", and experiment with the examples. Code for these examples can be found in the direc tory SYS:CLIM;REL2;TUTORIAL;. The directory SYS:CLIM;REL2;DEMO; is also a rich source of example code. When you want to learn about a topic in more detail, you can use the "CLIM User’s Guide" and the "CLIM Dictionary"). Page 1140 Documentation Conventions This documentation uses the following notation conventions: cond, clim:accept Printed representation of Lisp objects in running text. Return, Abort, control-F Keys on the keyboard. SPACE or Space The space bar. login Literal typein. (makesymbol "foo") Lisp code examples. (myfind item list &optional test &key :start :end) Syntax description of the invocation of the function myfind. item, list, test Arguments to the function myfind, usually expressed as a word that reflects the type of argument (for ex ample, string). :start, :end Keyword arguments to the function myfind. &optional, &key Introduces optional or keyword argument(s). Show File, Start Command processor command names appear with the initial letter of each word capitalized. mX Insert File, Insert File (mX) Extended command names in Zmacs, Zmail, and Sym bolics Concordia appear with the m-X notation either preceding the command name, or following it in parentheses. Both versions mean press m-X and then type the command name. [Map Over] Menu items. Click Left to select a menu item, unless other operations are indicated. (See the section "Mouse Command Conventions".) Left, Middle, Right Pointer gestures (also known as mouse clicks). shift-Right, c-m-Middle Modified mouse clicks. For example, shift-Right means hold down the SHIFT key while clicking Right on the mouse, and c-m-Middle means hold down the CONTROL and META keys while clicking Middle. Modifier Key Conventions Modifier keys are designed to be held down while pressing other keys. They do not themselves transmit characters. A combined keystroke like Meta-X is pronounced "meta x" and written as m-X. This notation means that you press the META key and, while holding it down, press the X key. Modifier keys are abbreviated as follows: CONTROL c- or control Page 1141 META m- or meta SUPER s- or super HYPER h- or hyper SHIFT sh- or shift These modifier key names are based on the labels on a Symbolics keyboard, and most keyboards do not label their modifier key names the same way. This is just a convention; nonSymbolics machines will simply use differently labelled keys on the keyboard. Modifier keys can be used in combination, as well as singly. For example, the nota tion c-m-Y indicates that you should hold down both the CONTROL and the META keys while pressing Y. Modifier keys can also be used, both singly and in combination, to modify mouse commands. For example, the notation sh-Left means hold down the SHIFT key while clicking Left on the mouse and c-m-Middle means hold down CONTROL and META while clicking Middle. The keys with white lettering (like X or SELECT) all transmit characters. Combina tions of these keys should be pressed in sequence, one after the other (for exam ple, SELECT L). This notation means that you press the SELECT key, release it, and then press the L key. Trademarks CLIM is a registered trademark of International Lisp Associates (ILA). Microsoft and MSDOS are registered trademarks of Microsoft Corporation. Windows, Windows/286 and Windows/386 are trademarks of Microsoft Corporation. Intel and 386 are trademarks of Intel Corporation. Adobe and PostScript are registered trademarks of Adobe Systems Inc. What is CLIM? Technical Overview of CLIM CLIM is an acronym for the Common Lisp Interface Manager. It is a portable, powerful, highlevel user interface management system toolkit intended for Com mon Lisp software developers. The important things to understand about CLIM are: • How it helps you achieve a portable user interface how it fits into an existing host system; how you can achieve the look and feel of the target host system without implementing it directly, and without using the lowlevel implementa tion language of the host system. • The power inherent in its presentation model the advantages of having the vi sual representation of an object linked directly to its semantics. Page 1142 • The set of high-level programming techniques it provides capabilities that en able you to develop a user interface conveniently, including formatted output, graphics, windowing, and commands that are invoked by typing text or clicking a mouse (or ``pointer’’) button, among other techniques. CLIM 2.0 does not currently provide any highlevel user interface building tools, nor does it provide any sort of highlevel graphical or text editing substrate. These are areas into which future releases of CLIM may extend. CLIM is also not suitable for high performance, very high quality graphics of the sort needed for sophisticated paint, animation, or video postproduction applications. Of course, it is possible to write the bulk of such an application’s user interface using CLIM, and use lower level facilities for drawing in the main ``canvas’’ of the application. Introduction to CLIM’s Presentation Model A software application typically needs to interact with the person using it. The user interface is responsible for managing the interaction between the user and the application program. The user interface gets information from the user (com mands, which might be entered by typing text or by clicking a mouse), gives that information to the application, and later presents information (the program’s re sults) to the user. Figure 25 shows this common paradigm. Input Computation Output Figure 46. Cycle of Input/Computation/Output We might describe one conventional approach to the input/computation/output cycle as follows. Invisibly to the user, the application takes the commands and interprets them in terms the program can handle. For example, if the application uses object oriented techniques, it might build objects based on information garnered from the command and arguments, then manipulate those objects internally, finish its com putation, and finally translate from the resulting objects to the appropriate re sponse which is then given to the user. Figure 26 depicts this sequence of events. The conventional approach uses objectoriented techniques within the computation phase, but the objects do not surface to the user interface. The program performs two translations: from user input to objects, and later from objects to output in Page 1143 Input User enters command and arguments Program interprets command and arguments Program builds objects based on commands Computation Program manipulates its internal objects Program translates objects to visible results Program discards objects Output User sees results of the program Figure 47. Conventional Approach to the Input/Computation/Output Cycle tended for the user. CLIM revolutionizes the cycle by bringing the power of object oriented programming to the surface, all the way up to the user interface. CLIM recognizes that many applications manipulate internal objects which we call application objects and they have display objects, which are presented to the user. A display object can appear as text or a graphic picture. CLIM supports a direct linking between application objects and display objects. CLIM automatically main tains the association between application objects and display objects, so there is no need for the application to do any translation. Figure 27 shows how CLIM views the cycle of input/computation/output. In effect, CLIM replaces some of the tedious and errorprone steps of the conven tional userinterface model with higherlevel objectoriented techniques. The advan tages of the objectoriented user interface are subtle but extremely powerful (in fact, you might not recognize them at first glance, but they will grow on you grad ually as you develop your CLIM applications): • A command is structured so that the user interface understands something of the semantics of its arguments. That is, each argument must be an object of a specified type. This helps the user in several ways: ° The user is prevented from entering invalid input, because the user interface automatically enforces the validity of each argument. ° The user can get online help or prompting from the user interface, based on the type of the argument. ° The user can enter input in creative and convenient ways, such as by clicking on object displayed on the screen by a previous command.
Recommended publications
  • Genera Workbook Using This Book Preface This Is the Document To
    Genera Workbook Using This Book Preface This is the document to read when you’re ready to sit down at your Symbol- ics computer. It teaches you the initial skills you need to use the Genera system effectively. We present concepts you need to know, as well as providing exercises andactivitiesthatturnthoseconceptsintopracticalskills. The material covered in the first group of chapters in this workbook is a pre- requisite for all Symbolics Education Services Courses. However, you can com plete the second and third sections after taking your first course. Practicing the material helpsyou learn it faster. Bring this workbook to all courses you take with Symbolics. We expect that you have used a computer before; we do not expect that you have used a Symbolics computer before. You need to learn this material whether or not you are a programmer. This is not a programming textbook. We make no assumptions about your programming background or future; this work bookisforbothprogrammersandnonprogrammers. Every time we use a term for the first time, we put it in italics. If you see a term you don’t recognize, be sure to check the glossary at the end of the work book. This workbook uses Symbolics documentation conventions and a few of its own. If you see a word or phrase enclosed in brackets, like [Help], it is a menu item.We use two different conventions withrespect to Symbolics keyboard keys: in text,thekeylabelledHELPlookslikethis: HELP butinexamplesitlookslikethis: <HELP> todifferentiateitasasinglekeystrokefromthetextaroundit. It is very important to have a Symbolics computer available so that you can work through the hands-on activities, called walk-throughs.
    [Show full text]
  • 10 Keyboard/Keypad Page (0X07) This Section Is the Usagepage for Key Codes to Be Used in Implementing a USB Keyboard
    54 Universal Serial Bus HID Usage Tables 10 Keyboard/Keypad Page (0x07) This section is the UsagePage for key codes to be used in implementing a USB keyboard. A Boot Keyboard (84-, 101- or 104-key) should at a minimum support all associated usage codes as indicated in the “Boot” column below. The usage type of all key codes is Selectors (Sel), except for the modifier keys Keyboard Left Control (0x224) to Keyboard Right GUI (0x231) which are Dynamic Flags (DV). Note A general note on Usages and languages: Due to the variation of keyboards from language to language, it is not feasible to specify exact key mappings for every language. Where this list is not specific for a key function in a language, the closest equivalent key position should be used, so that a keyboard may be modified for a different language by simply printing different keycaps. One example is the Y key on a North American keyboard. In Germany this is typically Z. Rather than changing the keyboard firmware to put the Z Usage into that place in the descriptor list, the vendor should use the Y Usage on both the North American and German keyboards. This continues to be the existing practice in the industry, in order to minimize the number of changes to the electronics to accommodate other languages. Table 12: Keyboard/Keypad Page Ref: Typical AT-101 Usage ID Usage ID Usage Name Position PC- MacUNI Boot (Dec) (Hex) AT X 0 00 Reserved (no event indicated)9 N/A 4/101/104 1 01 Keyboard ErrorRollOver9 N/A 4/101/104 2 02 Keyboard POSTFail9 N/A 4/101/104 3 03 Keyboard ErrorUndefined9
    [Show full text]
  • The Linux Command Line
    The Linux Command Line Fifth Internet Edition William Shotts A LinuxCommand.org Book Copyright ©2008-2019, William E. Shotts, Jr. This work is licensed under the Creative Commons Attribution-Noncommercial-No De- rivative Works 3.0 United States License. To view a copy of this license, visit the link above or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042. A version of this book is also available in printed form, published by No Starch Press. Copies may be purchased wherever fine books are sold. No Starch Press also offers elec- tronic formats for popular e-readers. They can be reached at: https://www.nostarch.com. Linux® is the registered trademark of Linus Torvalds. All other trademarks belong to their respective owners. This book is part of the LinuxCommand.org project, a site for Linux education and advo- cacy devoted to helping users of legacy operating systems migrate into the future. You may contact the LinuxCommand.org project at http://linuxcommand.org. Release History Version Date Description 19.01A January 28, 2019 Fifth Internet Edition (Corrected TOC) 19.01 January 17, 2019 Fifth Internet Edition. 17.10 October 19, 2017 Fourth Internet Edition. 16.07 July 28, 2016 Third Internet Edition. 13.07 July 6, 2013 Second Internet Edition. 09.12 December 14, 2009 First Internet Edition. Table of Contents Introduction....................................................................................................xvi Why Use the Command Line?......................................................................................xvi
    [Show full text]
  • The Evolution of Lisp
    1 The Evolution of Lisp Guy L. Steele Jr. Richard P. Gabriel Thinking Machines Corporation Lucid, Inc. 245 First Street 707 Laurel Street Cambridge, Massachusetts 02142 Menlo Park, California 94025 Phone: (617) 234-2860 Phone: (415) 329-8400 FAX: (617) 243-4444 FAX: (415) 329-8480 E-mail: [email protected] E-mail: [email protected] Abstract Lisp is the world’s greatest programming language—or so its proponents think. The structure of Lisp makes it easy to extend the language or even to implement entirely new dialects without starting from scratch. Overall, the evolution of Lisp has been guided more by institutional rivalry, one-upsmanship, and the glee born of technical cleverness that is characteristic of the “hacker culture” than by sober assessments of technical requirements. Nevertheless this process has eventually produced both an industrial- strength programming language, messy but powerful, and a technically pure dialect, small but powerful, that is suitable for use by programming-language theoreticians. We pick up where McCarthy’s paper in the first HOPL conference left off. We trace the development chronologically from the era of the PDP-6, through the heyday of Interlisp and MacLisp, past the ascension and decline of special purpose Lisp machines, to the present era of standardization activities. We then examine the technical evolution of a few representative language features, including both some notable successes and some notable failures, that illuminate design issues that distinguish Lisp from other programming languages. We also discuss the use of Lisp as a laboratory for designing other programming languages. We conclude with some reflections on the forces that have driven the evolution of Lisp.
    [Show full text]
  • The Linux Users' Guide
    The Linux Users' Guide Copyright c 1993, 1994, 1996 Larry Greenfield All you need to know to start using Linux, a free Unix clone. This manual covers the basic Unix commands, as well as the more specific Linux ones. This manual is intended for the beginning Unix user, although it may be useful for more experienced users for reference purposes. i UNIX is a trademark of X/Open MS-DOS and Microsoft Windows are trademarks of Microsoft Corporation OS/2 and Operating System/2 are trademarks of IBM X Window System is a trademark of X Consortium, Inc. Motif is a trademark of the Open Software Foundation Linux is not a trademark, and has no connection to UNIX, Unix System Labratories, or to X/Open. Please bring all unacknowledged trademarks to the attention of the author. Copyright c Larry Greenfield 427 Harrison Avenue Highland Park, NJ 08904 [email protected] Permission is granted to make and distribute verbatim copes of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the sections that reprint \The GNU General Public License", \The GNU Library General Public License", and other clearly marked sections held under seperate copyright are reproduced under the conditions given within them, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language under the conditions for modified versions.
    [Show full text]
  • Softwindows™ 95 for UNIX User's Guide (Version 5 of Softwindows
    SoftWindows™ 95 for UNIX User’s Guide (Version 5 of SoftWindows 95) Document Number 007-3113-007 CONTRIBUTORS Edited by Karin Borda and Douglas B. O’Morain Production by Carlos Miqueo © 1998, Silicon Graphics, Inc.— All Rights Reserved The contents of this document may not be copied or duplicated in any form, in whole or in part, without the prior written permission of Silicon Graphics, Inc. RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure of the technical data contained in this document by the Government is subject to restrictions as set forth in subdivision (c) (1) (ii) of the Rights in Technical Data and Computer Software clause at DFARS 52.227-7013 and/or in similar or successor clauses in the FAR, or in the DOD or NASA FAR Supplement. Unpublished rights reserved under the Copyright Laws of the United States. Contractor/manufacturer is Silicon Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94043-1389. TurboStart and SoftNode are registered trademarks of Insignia Solutions. SoftWindows is a trademark used under license. Silicon Graphics, the Silicon Graphics logo and IRIX are registered trademarks, and Indy, O2, and IRIS InSight are trademarks of Silicon Graphics, Inc. R5000 and R10000 are registered trademarks of MIPS Technologies, Inc. Apple and Macintosh are registered trademarks of Apple Computer, Inc. DEC is a trademark of Digital Equipment Corporation. WinPost is a trademark of Eastern Mountain Software. FLEXlm is a trademark of Globetrotter Software Inc. IBM is a registered trademark and IBM PC and IBM PC/AT are trademarks of International Business Machines Corp. Intel and Pentium are registered trademarks of Intel Corporation.
    [Show full text]
  • GSI Local Guide
    UNIX Primer GSI Local Guide GSI Computing Center Version 2.0 This is draft version !!! Preface: More than one year ago, we published our ®rst version of the Unix primer, which has been used in the meantime by many people at GSI and even in the outside HEP community. Nowadays, as more and more physicists have access to a Unix computer either via a X-terminal or use their own workstation, and as the installed computing power has increased by a large factor, we have revised the ®rst version of our Unix primer. We tried to re¯ect the changes in the installedhardware, like the installationof the 11 machine AIX cluster, and the installationof new software products, as the batch system for job submission, new backup and restore products and the graphics system IDL. Almost all chapters have been revised, and some have undergone substantial changes like the introduction, the section about experimental data and tape handling and the chapter about the editors, where more editors are described in detail. Although many topics are still missing or could be improved, we decided to publishthe second edition of the Unix primer now in order to give a guide to the rapidly increasing Unix user community at GSI. As for the ®rst edition, many people again have contributed to this document: Wolfgang Ahner, Eliete Bertulani, Michael Dahlinger, Matthias Feyerabend, Ingo Giese, Horst GÈoringer, Eva Hocks, Peter Malzacher, Udo Meyer, Kerstin Schiebel, Kay Winkler and Heiko Weber. Preface for Version 1.0: In early summer 1991 the GSI Computing Center started a Unix Pilot Project investigating the hardware and software possibilities of centrally operated unix workstation systems.
    [Show full text]
  • Summary Keyboard Mapping
    Technical Bulletin Product: RUMBA OFFICE 2.0 RUMBA for UNIX RUMBA for the VAX Version #: See above Host: UNIX, VAX Summary If you find that one or more of the keys you press in RUMBA for the VAX or RUMBA for UNIX doesn't produce the effect you expect, it may be that there is a mismatch between how the keyboard is mapped in RUMBA software and how the keys are mapped on the host. By remapping the characters that a key sends, RUMBA software can emulate most keyboards and be made to work with almost any application. When a key is pressed one of two things can happen. If the key defines a "local function," RUMBA software performs that function and nothing is sent to the host. One local function is the F2 or PrintScreen key. This function does not require host interaction. RUMBA software simply copies the information from the screen to the printer. If the key does not define a local function then RUMBA will send either a single character or a string of characters to the host. This document describes how to change the character or string of characters sent by RUMBA software when a key is pressed. It also covers some basic ways to determine what the host or application expects. To effectively fix key mapping problems, you will need to talk with your system administrator and possibly with the vendor of the host application you are using. Keyboard Mapping Host applications are written for a specific host keyboard. In the case of DEC and UNIX applications, this keyboard is usually a VT keyboard.
    [Show full text]
  • Keyboard Scan Code Specification
    Windows Platform Design Notes Designing Hardware for the Microsoft® Windows® Family of Operating Systems Keyboard Scan Code Specification Abstract: This specification details the PS/2 Scan Codes and USB Usage Tables that are validated for compliance to the Microsoft® Windows® Logo Program testing standard. This document details the alternative make and break PS/2 scan code and USB code response for the Windows Logo Key and Application Keys, plus Advanced Configuration and Power Interface (ACPI) power controls. This specification was previous published, with the same content, as “Windows Hardware Quality Labs Keyboard Specification” and also referred to as “Windows Keys Specification” and “New Keys Specification.” Revision 1.3a — March 16, 2000 Disclaimer: The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented. This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT. Microsoft Corporation may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. The furnishing of this document does not give you any license to the patents, trademarks, copyrights, or other intellectual property rights except as expressly provided in any written license agreement from Microsoft Corporation. Microsoft does not make any representation or warranty regarding specifications in this document or any product or item developed based on these specifications.
    [Show full text]
  • Symbolics Architecture
    Symbolics Architecture David A. Moon Symbolics, Inc. W hat is an architecture? In com- languages, user interface, and operating This architecture puter systems, an architecture system. System architecture defines the rapid is a specification of an inter- product that people actually use; the other enables face. To be dignified by the name architec- levels of architecture define the mecha- development and ture, an interface should be designed for a nism underneath that implements it. Sys- long lifespan and should connect system tem architecture is implemented by soft- efficient execution of components maintained by different orga- ware; hardware only sets bounds on what large, ambitious nizations. Often an architecture is part ofa is possible. System architecture defines the product definition and defines character- motivation for most of the design choices applications. An istics on which purchasers of that product at the other levels ofarchitecture. This sec- rely, but this is not true of everything that tion is an overview of Symbolics system unconventional design is called an architecture. An architecture is architecture. avoids trading off more formal than an internal interface be- The Symbolics system presents itself to tween closely-related system components, the user through a high-resolution bitmap safety for speed. and has farther-reaching effects on system display. In addition to text and graphics, characteristics and performance. the display contains presentations of ob- A computer system typically contains jects. The user operates on the objects by many levels and types ofarchitecture. This manipulating the presentations with a article discusses three architectures de- mouse. The display includes a continuous- fined in Symbolics computers: ly updated reminder of the mouse com- (1) System architecture-defines how mands applicable to the current context.
    [Show full text]
  • Xterm Control Sequences
    Xterm Control Sequences EdwardMoy University of California, Berkeley Revised by Stephen Gildea XConsortium (1994) Thomas Dickey XFree86 Project (1996-2003) Definitions c The literal character c. C Asingle (required) character. Ps Asingle (usually optional) numeric parameter,composed of one of more digits. Pm Amultiple numeric parameter composed of anynumber of single numeric parameters, separated by ;char- acter(s). Individual values for the parameters are listed with Ps . Pt Atextparameter composed of printable characters. C1 (8-Bit) Control Characters The xterm program recognizes both 8-bit and 7-bit control characters. It generates 7-bit controls (by default) or 8-bit if S8C1T is enabled. The following pairs of 7-bit and 8-bit control characters are equivalent: ESC D Index(IND is 0x84) ESC E Next Line ( NEL is 0x85) ESC H TabSet ( HTS is 0x88) ESC M Reverse Index( RI is 0x8d) ESC N Single Shift Select of G2 Character Set ( SS2 is 0x8e): affects next character only ESC O Single Shift Select of G3 Character Set ( SS3 is 0x8f): affects next character only ESC P Device Control String ( DCS is 0x90) ESC V Start of Guarded Area ( SPA is 0x96) Xterm Control Sequences C1 (8-Bit) Control Characters ESC W End of Guarded Area ( EPA is 0x97) ESC X Start of String ( SOS is 0x98) ESC Z Return Terminal ID (DECID is 0x9a). Obsolete form of CSI c(DA). ESC [ Control Sequence Introducer ( CSI is 0x9b) ESC \ String Terminator ( ST is 0x9c) ESC ] Operating System Command ( OSC is 0x9d) ESC ^ Privacy Message ( PM is 0x9e) ESC _ Application Program Command ( APC is 0x9f) These control characters are used in the vtXXX emulation.
    [Show full text]
  • Free As in Freedom (2.0): Richard Stallman and the Free Software Revolution
    Free as in Freedom (2.0): Richard Stallman and the Free Software Revolution Sam Williams Second edition revisions by Richard M. Stallman i This is Free as in Freedom 2.0: Richard Stallman and the Free Soft- ware Revolution, a revision of Free as in Freedom: Richard Stallman's Crusade for Free Software. Copyright c 2002, 2010 Sam Williams Copyright c 2010 Richard M. Stallman Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License." Published by the Free Software Foundation 51 Franklin St., Fifth Floor Boston, MA 02110-1335 USA ISBN: 9780983159216 The cover photograph of Richard Stallman is by Peter Hinely. The PDP-10 photograph in Chapter 7 is by Rodney Brooks. The photo- graph of St. IGNUcius in Chapter 8 is by Stian Eikeland. Contents Foreword by Richard M. Stallmanv Preface by Sam Williams vii 1 For Want of a Printer1 2 2001: A Hacker's Odyssey 13 3 A Portrait of the Hacker as a Young Man 25 4 Impeach God 37 5 Puddle of Freedom 59 6 The Emacs Commune 77 7 A Stark Moral Choice 89 8 St. Ignucius 109 9 The GNU General Public License 123 10 GNU/Linux 145 iii iv CONTENTS 11 Open Source 159 12 A Brief Journey through Hacker Hell 175 13 Continuing the Fight 181 Epilogue from Sam Williams: Crushing Loneliness 193 Appendix A { Hack, Hackers, and Hacking 209 Appendix B { GNU Free Documentation License 217 Foreword by Richard M.
    [Show full text]