Practical Open Source Software Exploration
Total Page:16
File Type:pdf, Size:1020Kb
Teaching_Open_Source 0.1 Practical Open Source Software Exploration How to be Productively Lost, the Open Source Way Practical Open Source Software Exploration Greg DeKoenigsberg Chris Tyler Karsten Wade Max Spevack Mel Chua Jeff Sheltren Teaching_Open_Source 0.1 Practical Open Source Software Exploration How to be Productively Lost, the Open Source Way Edition 0.8 Author Greg DeKoenigsberg [email protected] Author Chris Tyler [email protected] Author Karsten Wade [email protected] Author Max Spevack [email protected] Author Mel Chua [email protected] Author Jeff Sheltren [email protected] Copyright © 2010 TeachingOpenSource.org. The text of and illustrations in this document are licensed by the authors under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document designate TeachingOpenSource.org as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. The licensors of this document waive the right to enforce, and agree not to assert, Section 4d of CC- BY-SA to the fullest extent permitted by applicable law. Fedora and the Infinity Logo are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. All other trademarks are the property of their respective owners. This textbook teaches the basic skills of open source development incrementally, through real involvement in meaningful projects, for students and self-learners. Preface ix 1. Document Conventions ................................................................................................... ix 1.1. Typographic Conventions ..................................................................................... ix 1.2. Pull-quote Conventions ......................................................................................... x 1.3. Notes and Warnings ............................................................................................ xi 2. We Need Feedback! ....................................................................................................... xi 1. Foreword 1 1.1. Why is This Book Necessary? ...................................................................................... 1 1.2. Why Traditional Student Projects Are Ineffective ............................................................ 1 1.3. Using This Textbook to Get Started .............................................................................. 2 1.4. A Note on Terminology - Free Versus Open Source ...................................................... 3 2. Introduction_to_Free_and_Open_Source_Software 5 2.1. Introduction ................................................................................................................. 5 2.2. Why does FOSS matter to me? .................................................................................... 5 2.2.1. Source Control .................................................................................................. 5 2.2.2. Build Systems ................................................................................................... 6 2.2.3. Documentation .................................................................................................. 6 2.2.4. Tracking Bugs ................................................................................................... 6 2.2.5. Experiencing the Software Lifecycle .................................................................... 6 2.2.6. Exercise - Finding a Cool Project ....................................................................... 6 2.3. What is source code? .................................................................................................. 7 2.3.1. Exercise - Change the source code .................................................................... 8 2.3.2. Optional Exercise - Change the binary code ........................................................ 8 2.4. Source Code: To Share, or Not To Share? .................................................................... 8 2.4.1. The value of sharing .......................................................................................... 9 2.4.2. Exercise - List of software ................................................................................ 10 2.4.3. Exercise - Compare and contrast similar proprietary and FOSS software ............. 10 2.4.4. Exercise - Install a new FOSS Tool and Blog About It ........................................ 10 2.5. Climbing Contributor Mountain .................................................................................... 10 2.5.1. User ................................................................................................................ 11 2.5.2. Seeker ............................................................................................................ 11 2.5.3. Collaborator ..................................................................................................... 12 2.5.4. Contributor ...................................................................................................... 12 2.6. Building Your FOSS Portfolio ...................................................................................... 13 2.6.1. Exercise - Learn about a project's leaders ........................................................ 13 2.6.2. Exercise - Write your own FOSS bio ................................................................. 13 2.7. Supplemental Materials ............................................................................................... 13 3. The Lay of the Land 15 3.1. The Challenges of Global Community .......................................................................... 15 3.2. The Synthetic Third Culture ........................................................................................ 16 3.3. Qualities of a Community ............................................................................................ 16 3.4. Communicating .......................................................................................................... 17 3.4.1. Wikis ............................................................................................................... 18 3.5. Exercise - Project Wikis .............................................................................................. 18 3.6. Blogs and Planets ..................................................................................................... 18 3.7. Exercise - Linking your Blog to Planets ....................................................................... 19 3.8. IRC ............................................................................................................................ 19 3.9. Exercise - Learning IRC ............................................................................................. 21 3.10. Mailing Lists and Newsgroups ................................................................................... 21 3.11. Exercise - Joining the List ......................................................................................... 21 v Practical Open Source Software Exploration 3.12. Bug Trackers and Repositories ................................................................................. 22 3.13. Drawing Conclusions ................................................................................................ 22 3.13.1. Exercise - Share Your Thoughts ..................................................................... 22 4. Getting the Code 23 4.1. Introduction ................................................................................................................ 23 4.2. A Brief Introduction to FOSS Source Control Management Tools ................................... 23 4.2.1. Exercise - Install Subversion on Your System .................................................... 24 4.3. Getting Help With Subversion ..................................................................................... 24 4.4. Getting Started: checkout .......................................................................................... 24 4.4.1. Exercise - Initial Checkout of the Sample Codebase .......................................... 25 4.5. The Basic Subversion Work Cycle .............................................................................. 25 4.5.1. Update Your Working Copy .............................................................................. 26 4.6. Make Changes to Your Working Copy ......................................................................... 27 4.6.1. Exercise - Create a Biography File and Add It to the Local Repository ................. 28 4.7. Examine Your Changes .............................................................................................. 28 4.8. Undoing Working Changes ......................................................................................... 31 4.9. Resolve Conflicts (Merging Changes of Others) ........................................................... 31 4.10. Copying a File Onto Your Working File ...................................................................... 34 4.11. Commit Your Changes .............................................................................................. 35 4.11.1. Exercise