Université De Montréal Context-Aware Source

Total Page:16

File Type:pdf, Size:1020Kb

Université De Montréal Context-Aware Source UNIVERSITE´ DE MONTREAL´ CONTEXT-AWARE SOURCE CODE IDENTIFIER SPLITTING AND EXPANSION FOR SOFTWARE MAINTENANCE LATIFA GUERROUJ DEPARTEMENT´ DE GENIE´ INFORMATIQUE ET GENIE´ LOGICIEL ECOLE´ POLYTECHNIQUE DE MONTREAL´ THESE` PRESENT´ EE´ EN VUE DE L'OBTENTION DU DIPLOME^ DE PHILOSOPHIÆ DOCTOR (GENIE´ INFORMATIQUE) AOUT^ 2013 ⃝c Latifa Guerrouj, 2013. UNIVERSITE´ DE MONTREAL´ ECOLE´ POLYTECHNIQUE DE MONTREAL´ Cette th`ese intitul´ee: CONTEXT-AWARE SOURCE CODE IDENTIFIER SPLITTING AND EXPANSION FOR SOFTWARE MAINTENANCE pr´esent´eepar: GUERROUJ Latifa en vue de l'obtention du dipl^ome de: Philosophiæ Doctor a ´et´ed^ument accept´eepar le jury d'examen constitu´ede: Mme BOUCHENEB Hanifa, Doctorat, pr´esidente M. ANTONIOL Giuliano, Ph.D., membre et directeur de recherche M. GUEH´ ENEUC´ Yann-Ga¨el, Doct., membre et codirecteur de recherche M. DESMARAIS Michel C., Ph.D., membre Mme LAWRIE Dawn J., Ph.D., membre iii This dissertation is dedicated to my parents. For their endless love, support and encouragement. iv ACKNOWLEDGMENTS I am very grateful to both Giulio and Yann for their support, encouragement, and intel- lectual input. I worked with you for four years or even less, but what I learned from you will last forever. Giulio, your passion about research was a source of inspiration and motivation for me. Also, your mentoring and support have been instrumental in achieving my goals. Yann, your enthusiasm and guidance have always been a strength for me to keep moving forward. Research would not be as much fun without students and researchers to collaborate with. It has been a real pleasure and great privilege working with Massimiliano Di Penta (University of Sannio), Denys Poshyvanyk (College of William and Mary), and their teams. In particular, I would like to thank Max for being always available to provide help and excellent advice and for hosting me in Europe and sharing with me not only the research expertise but also a joyful time and fun. Many thanks also to Denys and his wonderful team for all the great collaborations we achieved together. Thanks to all present and past SOCCER and Ptidej groups' members, in particular, Foutse Khomh and Bram Adams, for their help, relevant opinions and especially their en- couragements during all the past years of my Ph.D., and to all my friends who inspired me along the way and never hesitated to share ideas and fun. I would also like to thank my professors at Ecole´ Polytechnique de Montr´eal, the department of Software Engineering and Computer Science (DGIGL), and all the people that helped in the administrative process of this thesis. I am very thankful to Radouane Mrabet and Line Dub´ewho always believed in me and gave me excellent advice. And a heartfelt thank to my Mother and Father, who instilled the following in me as a child: an achievement is an achievement when mind, heart and principles agree. The most important thanks goes to my family. My two little nephews: Amine and Omar, and beautiful niece: kawtar. Thanks for your innocent smiles that were my source of motivation in the hard time. You always tried to call at just the right time. To all my friends, students and beloved, thank you for your friendship, love, and appre- ciation. I can not list all your names here but you know well that you are always in my mind. Finally, I would like to gratefully thanks the jury members who accepted to evaluate this thesis. v RESUM´ E´ La compr´ehension du code source des programmes logiciels est une ´etape n´ecessaire pour plusieurs t^aches de compr´ehension de programmes, r´etro-ing´enierie, ou re-documentation. Dans le code source, les informations textuelles telles que les identifiants et les commentaires repr´esentent une source d'information importante. Le probl`eme d'extraction et d'analyse des informations textuelles utilis´eesdans les arte- facts logiciels n'a ´et´ereconnu par la communaut´edu g´enie logiciel que r´ecemment. Des m´ethodes de recherche d'information ont ´et´epropos´eespour aider les t^aches de compr´ehen- sion de programmes telles que la localisation des concepts et la tra¸cabilit´edes exigences au code source. Afin de mieux tirer b´en´efice des approches bas´eessur la recherche d'information, le langage utilis´eau niveau de tous les artefacts logiciels doit ^etre le m^eme. Ceci est d^uau fait que les requ^etes de la recherche d'information ne peuvent pas retourner des documents pertinents si le vocabulaire utilis´edans les requ^etes contient des mots qui ne figurent pas au niveau du vocabulaire du code source. Malheureusement, le code source contient une proportion ´elev´ee de mots qui ne sont pas significatifs, e.g., abr´eviations, acronymes, ou con- cat´enation de ces types. En effet, le code source utilise un langage diff´erent de celui des autres artefacts logiciels. Cette discordance de vocabulaire provient de l'hypoth`eseimplicite faite par les techniques de recherche de l'information et du traitement de langage naturel qui supposent l'utilisation du m^eme vocabulaire. Ainsi, la normalisation du vocabulaire du code source est un grand d´efi. La normalisation aligne le vocabulaire utilis´edans le code source des syst`emes logiciels avec celui des autres artefacts logiciels. La normalisation consiste `ad´ecomposer les identifi- ants (i.e., noms de classes, m´ethodes, variables, attributs, param`etres, etc.) en termes et `a ´etendre ces termes aux concepts (i.e., mots d'un dictionnaire sp´ecifique) correspondants. Dans cette th`ese,nous proposons deux contributions `ala normalisation avec deux nou- velles approches contextuelles : TIDIER et TRIS. Nous prenons en compte le contexte car nos ´etudes exp´erimentales ont montr´el'importance des informations contextuelles pour la normalisation du vocabulaire du code source. En effet, nous avons effectu´edeux ´etudes ex- p´erimentales avec des ´etudiants de baccalaur´eat, ma^ıtrise et doctorat ainsi que des stagiaires post-doctoraux. Nous avons choisi al´eatoirement un ensemble d'identifiants `apartir d'un corpus de syst`emes ´ecrits en C et nous avons demand´eaux participants de les normaliser en utilisant diff´erents niveaux de contexte. En particulier, nous avons consid´er´eun contexte interne qui consiste en le contenu des fonctions, fichiers et syst`emes contenant les identifiants ainsi qu'un niveau externe sous forme de documentation externe. Les r´esultats montrent vi l'importance des informations contextuelles pour la normalisation. Ils r´ev`elent ´egalement que les fichiers de code source sont plus utiles que les fonctions et que le contexte construit au niveau des syst`emes logiciels n'apporte pas plus d'am´elioration que celle obtenue avec le contexte construit au niveau des fichiers. La documentation externe, par contre, aide parfois. En r´esum´e,les r´esultats confirment notre hypoth`esesur l'importance du contexte pour la compr´ehension de programmes logiciels en g´en´eral et la normalisation du vocabulaire utilis´e dans le code source syst`emes logiciels en particulier. Ainsi, nous proposons une approche contextuelle TIDIER, inspir´ee par les techniques de la reconnaissance de la parole et utilisant le contexte sous forme de dictionnaires sp´ecialis´es(i.e., contenant des acronymes, abr´eviations et termes sp´ecifiques au domaine des syst`eme logiciels). TIDIER est plus pr´eformante que les approches qui la pr´ec´edent (i.e., CamelCase et samurai). Sp´ecifiquement, TIDIER atteint 54% de pr´ecision en termes de d´ecomposition des identifiants lors de l'utilisation un dictionnaire construit au niveau du syst`eme logiciel en question et enrichi par la connaissance du domaine. CamelCase et Samurai atteint seulement 30% et 31% en termes de pr´ecision, respectivement. En outre, TIDIER est la premi`ere approche qui met en correspondance les termes abr´eg´esavec les concepts qui leurs correspondent avec une pr´ecision de 48% pour un ensemble de 73 abr´eviations. La limitation principale de TIDIER est sa complexit´ecubique qui nous a motiv´e`apro- poser une solution plus rapide mais tout aussi performante, nomm´eeTRIS. TRIS est inspir´ee par TIDIER, certes elle traite le probl`eme de la normalisation diff´eremment. En effet, elle le consid`ere comme un probl`eme d'optimisation (minimisation) dont le but est de trouver le chemin le plus court (i.e., d´ecomposition et extension optimales) dans un graphe acyclique. En outre, elle utilise la fr´equence des termes comme contexte local afin de d´eterminer la nor- malisation la plus probable. TRIS est plus performante que CamelCase, Samurai et TIDIER, en termes de pr´ecision et de rappel, pour des syst`emes logiciels ´ecrits en C et C++. Aussi, elle fait mieux que GenTest de 4% en termes d'exactitude de d´ecomposition d'identifiants. L'am´elioration apport´ee par rapport `aGenTest n'est cependant pas statistiquement significa- tive. TRIS utilise une repr´esentation bas´ee sur une arborescence qui r´eduit consid´erablement sa complexit´eet la rend plus efficace en terme de temps de calcul. Ainsi, TRIS produit rapide- ment une normalisation optimale en utilisant un algorithme ayant une complexit´equadratique en la longueur de l'identifiant `anormaliser. Ayant d´evelopp´edes approches contextuelles pour la normalisation, nous analysons alors son impact sur deux t^aches de maintenance logicielle bas´ees sur la recherche d'information, `asavoir, la tra¸cabilit´edes exigences au code source et la localisation des concepts. Nous ´etudions l'effet de trois strat´egies de normalisation : CamelCase, Samurai et l'oracle sur deux techniques de localisation des concepts. La premi`ere est bas´eesur les informations textuelles vii seulement, quant `ala deuxi`eme, elle combine les informations textuelles et dynamiques (traces d'ex´ecution).
Recommended publications
  • Studying the Real World Today's Topics
    Studying the real world Today's topics Free and open source software (FOSS) What is it, who uses it, history Making the most of other people's software Learning from, using, and contributing Learning about your own system Using tools to understand software without source Free and open source software Access to source code Free = freedom to use, modify, copy Some potential benefits Can build for different platforms and needs Development driven by community Different perspectives and ideas More people looking at the code for bugs/security issues Structure Volunteers, sponsored by companies Generally anyone can propose ideas and submit code Different structures in charge of what features/code gets in Free and open source software Tons of FOSS out there Nearly everything on myth Desktop applications (Firefox, Chromium, LibreOffice) Programming tools (compilers, libraries, IDEs) Servers (Apache web server, MySQL) Many companies contribute to FOSS Android core Apple Darwin Microsoft .NET A brief history of FOSS 1960s: Software distributed with hardware Source included, users could fix bugs 1970s: Start of software licensing 1974: Software is copyrightable 1975: First license for UNIX sold 1980s: Popularity of closed-source software Software valued independent of hardware Richard Stallman Started the free software movement (1983) The GNU project GNU = GNU's Not Unix An operating system with unix-like interface GNU General Public License Free software: users have access to source, can modify and redistribute Must share modifications under same
    [Show full text]
  • GNU Octave Beginner's Guide
    GNU Octave Beginner's Guide Become a profcient Octave user by learning this high-level scientfc numerical tool from the ground up Jesper Schmidt Hansen BIRMINGHAM - MUMBAI GNU Octave Beginner's Guide Copyright © 2011 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmited in any form or by any means, without the prior writen permission of the publisher, except in the case of brief quotatons embedded in critcal artcles or reviews. Every efort has been made in the preparaton of this book to ensure the accuracy of the informaton presented. However, the informaton contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, its dealers, and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark informaton about all of the companies and products mentoned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this informaton. First published: June 2011 Producton Reference: 2150611 Published by Packt Publishing Ltd. 32 Lincoln Road Olton Birmingham, B27 6PA, UK. ISBN 978-1-849513-32-6 www.packtpub.com Cover Image by John Quick ([email protected]) Credits Author Project Coordinator Jesper Schmidt Hansen Joel Goveya Reviewers Proofreaders Piotr Gawron Lesley Harrison Kenneth Geisshirt Clyde Jenkins Jordi Gutérrez Hermoso Lynda Sliwoski Acquisiton Editor Indexers Usha Iyer Hemangini Bari Tejal Daruwale Development Editor Monica Ajmera Mehta Roger D'souza Graphics Technical Editor Nilesh R.
    [Show full text]
  • Université De Montréal Context-Aware
    UNIVERSITE´ DE MONTREAL´ CONTEXT-AWARE SOURCE CODE IDENTIFIER SPLITTING AND EXPANSION FOR SOFTWARE MAINTENANCE LATIFA GUERROUJ DEPARTEMENT´ DE GENIE´ INFORMATIQUE ET GENIE´ LOGICIEL ECOLE´ POLYTECHNIQUE DE MONTREAL´ THESE` PRESENT´ EE´ EN VUE DE L'OBTENTION DU DIPLOME^ DE PHILOSOPHIÆ DOCTOR (GENIE´ INFORMATIQUE) JUILLET 2013 ⃝c Latifa Guerrouj, 2013. UNIVERSITE´ DE MONTREAL´ ECOLE´ POLYTECHNIQUE DE MONTREAL´ Cette th`ese intitul´ee: CONTEXT-AWARE SOURCE CODE IDENTIFIER SPLITTING AND EXPANSION FOR SOFTWARE MAINTENANCE pr´esent´eepar: GUERROUJ Latifa en vue de l'obtention du dipl^ome de: Philosophiæ Doctor a ´et´ed^ument accept´eepar le jury d'examen constitu´ede: Mme BOUCHENEB Hanifa, Doctorat, pr´esidente M. ANTONIOL Giuliano, Ph.D., membre et directeur de recherche M. GUEH´ ENEUC´ Yann-Ga¨el, Ph.D., membre et codirecteur de recherche M. DESMARAIS Michel, Ph.D., membre Mme LAWRIE Dawn, Ph.D., membre iii This dissertation is dedicated to my parents. For their endless love, support and encouragement. iv ACKNOWLEDGMENTS I am very grateful to both Giulio and Yann for their support, encouragement, and intel- lectual input. I worked with you for four years or even less, but what I learned from you will last forever. Giulio, your passion about research was a source of inspiration and motivation for me. Also, your mentoring and support have been instrumental in achieving my goals. Yann, your enthusiasm and guidance have always been a strength for me to keep moving forward. Research would not be as much fun without students and researchers to collaborate with. It has been a real pleasure and great privilege working with Massimiliano Di Penta (University of Sannio), Denys Poshyvanyk (College of William and Mary), and their teams.
    [Show full text]
  • Annual Report
    [Credits] Licensed under Creative Commons Attribution license (CC BY 4.0). All text by John Hsieh and Georgia Young, except the Letter from the Executive Director, which is by John Sullivan. Images (name, license, and page location): Wouter Velhelst: cover image; Kori Feener, CC BY-SA 4.0: inside front cover, 2-4, 8, 14-15, 20-21, 23-25, 27-29, 32-33, 36, 40-41; Michele Kowal: 5; Anonymous, CC BY 3.0: 7, 16, 17; Ruben Rodriguez, CC BY-SA 4.0: 10, 13, 34-35; Anonymous, All rights reserved: 16 (top left); Pablo Marinero & Cecilia e. Camero, CC BY 3.0: 17; Free This report highlights activities Software Foundation, CC BY-SA 4.0: 18-19; Tracey Hughes, CC BY-SA 4.0: 30; Jose Cleto Hernandez Munoz, CC BY-SA 3.0: 31, Pixabay/stevepb, CC0: 37. and detailed financials for Fiscal Year 2016 Fonts: Letter Gothic by Roger Roberson; Orator by John Scheppler; Oswald by (October 1, 2015 - September 30, 2016) Vernon Adams, under the OFL; Seravek by Eric Olson; Jura by Daniel Johnson. Created using Inkscape, GIMP, and PDFsam. Designer: Tammy from Creative Joe. 1] LETTER FROM THE EXECUTIVE DIRECTOR 2] OUR MISSION 3] TECH 4] CAMPAIGNS 5] LIBREPLANET 2016 6] LICENSING & COMPLIANCE 7] CONFERENCES & EVENTS 7 8] LEADERSHIP & STAFF [CONTENTS] 9] FINANCIALS 9 10] OUR DONORS CONTENTS our most important [1] measure of success is support for the ideals of LETTER FROM free software... THE EXECUTIVE we have momentum DIRECTOR on our side. LETTER FROM THE 2016 EXECUTIVE DIRECTOR DEAR SUPPORTERS For almost 32 years, the FSF has inspired people around the Charity Navigator gave the FSF its highest rating — four stars — world to be passionate about computer user freedom as an ethical with an overall score of 99.57/100 and a perfect 100 in the issue, and provided vital tools to make the world a better place.
    [Show full text]
  • GNU GENERAL PUBLIC LICENSE Preamble
    GNU General Public License v3.0 - GNU Project - Free Software Foundation (FSF) Page 1 of 11 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright © 2007 Free Software Foundation, Inc. < https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights.
    [Show full text]
  • Unix and Linux System Administration and Shell Programming
    Unix and Linux System Administration and Shell Programming Unix and Linux System Administration and Shell Programming version 56 of August 12, 2014 Copyright © 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2014 Milo This book includes material from the http://www.osdata.com/ website and the text book on computer programming. Distributed on the honor system. Print and read free for personal, non-profit, and/or educational purposes. If you like the book, you are encouraged to send a donation (U.S dollars) to Milo, PO Box 5237, Balboa Island, California, USA 92662. This is a work in progress. For the most up to date version, visit the website http://www.osdata.com/ and http://www.osdata.com/programming/shell/unixbook.pdf — Please add links from your website or Facebook page. Professors and Teachers: Feel free to take a copy of this PDF and make it available to your class (possibly through your academic website). This way everyone in your class will have the same copy (with the same page numbers) despite my continual updates. Please try to avoid posting it to the public internet (to avoid old copies confusing things) and take it down when the class ends. You can post the same or a newer version for each succeeding class. Please remove old copies after the class ends to prevent confusing the search engines. You can contact me with a specific version number and class end date and I will put it on my website. version 56 page 1 Unix and Linux System Administration and Shell Programming Unix and Linux Administration and Shell Programming chapter 0 This book looks at Unix (and Linux) shell programming and system administration.
    [Show full text]
  • Multiresolution Recurrent Neural Networks: an Application to Dialogue Response Generation
    Multiresolution Recurrent Neural Networks: An Application to Dialogue Response Generation Iulian Vlad Serban∗◦ Tim Klinger University of Montreal IBM Research 2920 chemin de la Tour, T. J. Watson Research Center, Montréal, QC, Canada Yorktown Heights, NY, USA Gerald Tesauro Kartik Talamadupula Bowen Zhou IBM Research IBM Research IBM Research T. J. Watson Research Center, T. J. Watson Research Center, T. J. Watson Research Center, Yorktown Heights, Yorktown Heights, Yorktown Heights, NY, USA NY, USA NY, USA Yoshua Bengioy◦ Aaron Courville◦ University of Montreal University of Montreal 2920 chemin de la Tour, 2920 chemin de la Tour, Montréal, QC, Canada Montréal, QC, Canada Abstract We introduce the multiresolution recurrent neural network, which extends the sequence-to-sequence framework to model natural language generation as two parallel discrete stochastic processes: a sequence of high-level coarse tokens, and a sequence of natural language tokens. There are many ways to estimate or learn the high-level coarse tokens, but we argue that a simple extraction procedure is sufficient to capture a wealth of high-level discourse semantics. Such procedure allows training the multiresolution recurrent neural network by maximizing the exact joint log-likelihood over both sequences. In contrast to the standard log- likelihood objective w.r.t. natural language tokens (word perplexity), optimizing the joint log-likelihood biases the model towards modeling high-level abstractions. We apply the proposed model to the task of dialogue response generation in arXiv:1606.00776v2 [cs.CL] 14 Jun 2016 two challenging domains: the Ubuntu technical support domain, and Twitter conversations. On Ubuntu, the model outperforms competing approaches by a substantial margin, achieving state-of-the-art results according to both automatic evaluation metrics and a human evaluation study.
    [Show full text]
  • GNU / Linux and Free Software
    GNU / Linux and Free Software GNU / Linux and Free Software An introduction Michael Opdenacker Free Electrons http://free-electrons.com Created with OpenOffice.org 2.x GNU / Linux and Free Software © Copyright 2004-2007, Free Electrons Creative Commons Attribution-ShareAlike 2.5 license http://free-electrons.com Sep 15, 2009 1 Rights to copy Attribution ± ShareAlike 2.5 © Copyright 2004-2007 You are free Free Electrons to copy, distribute, display, and perform the work [email protected] to make derivative works to make commercial use of the work Document sources, updates and translations: Under the following conditions http://free-electrons.com/articles/freesw Attribution. You must give the original author credit. Corrections, suggestions, contributions and Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license translations are welcome! identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/2.5/legalcode GNU / Linux and Free Software © Copyright 2004-2007, Free Electrons Creative Commons Attribution-ShareAlike 2.5 license http://free-electrons.com Sep 15, 2009 2 Contents Unix and its history Free Software licenses and legal issues Free operating systems Successful project highlights Free Software
    [Show full text]
  • Latexsample-Thesis
    INTEGRAL ESTIMATION IN QUANTUM PHYSICS by Jane Doe A dissertation submitted to the faculty of The University of Utah in partial fulfillment of the requirements for the degree of Doctor of Philosophy Department of Mathematics The University of Utah May 2016 Copyright c Jane Doe 2016 All Rights Reserved The University of Utah Graduate School STATEMENT OF DISSERTATION APPROVAL The dissertation of Jane Doe has been approved by the following supervisory committee members: Cornelius L´anczos , Chair(s) 17 Feb 2016 Date Approved Hans Bethe , Member 17 Feb 2016 Date Approved Niels Bohr , Member 17 Feb 2016 Date Approved Max Born , Member 17 Feb 2016 Date Approved Paul A. M. Dirac , Member 17 Feb 2016 Date Approved by Petrus Marcus Aurelius Featherstone-Hough , Chair/Dean of the Department/College/School of Mathematics and by Alice B. Toklas , Dean of The Graduate School. ABSTRACT Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.
    [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]
  • The Linux Command Line
    The Linux Command Line Second Internet Edition William E. Shotts, Jr. A LinuxCommand.org Book Copyright ©2008-2013, 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, 171 Second Street, Suite 300, San Fran- cisco, California, 94105, USA. 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. This book is also available in printed form, published by No Starch Press and may be purchased wherever fine books are sold. No Starch Press also offers this book in elec- tronic formats for most popular e-readers: http://nostarch.com/tlcl.htm Release History Version Date Description 13.07 July 6, 2013 Second Internet Edition. 09.12 December 14, 2009 First Internet Edition. 09.11 November 19, 2009 Fourth draft with almost all reviewer feedback incorporated and edited through chapter 37. 09.10 October 3, 2009 Third draft with revised table formatting, partial application of reviewers feedback and edited through chapter 18. 09.08 August 12, 2009 Second draft incorporating the first editing pass. 09.07 July 18, 2009 Completed first draft. Table of Contents Introduction....................................................................................................xvi
    [Show full text]
  • GNU Octave a High-Level Interactive Language for Numerical Computations Edition 3 for Octave Version 2.0.13 February 1997
    GNU Octave A high-level interactive language for numerical computations Edition 3 for Octave version 2.0.13 February 1997 John W. Eaton Published by Network Theory Limited. 15 Royal Park Clifton Bristol BS8 3AL United Kingdom Email: [email protected] ISBN 0-9541617-2-6 Cover design by David Nicholls. Errata for this book will be available from http://www.network-theory.co.uk/octave/manual/ Copyright c 1996, 1997John W. Eaton. This is the third edition of the Octave documentation, and is consistent with version 2.0.13 of Octave. Permission is granted to make and distribute verbatim copies of this man- ual 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 that the en- tire 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 same conditions as for modified versions. Portions of this document have been adapted from the gawk, readline, gcc, and C library manuals, published by the Free Software Foundation, 59 Temple Place—Suite 330, Boston, MA 02111–1307, USA. i Table of Contents Publisher’s Preface ...................... 1 Author’s Preface ........................ 3 Acknowledgements ........................................ 3 How You Can Contribute to Octave ........................ 5 Distribution .............................................. 6 1 A Brief Introduction to Octave ....... 7 1.1 Running Octave...................................... 7 1.2 Simple Examples ..................................... 7 Creating a Matrix ................................. 7 Matrix Arithmetic ................................. 8 Solving Linear Equations..........................
    [Show full text]