Producing Open Source Software How to Run a Successful Free Software Project
Total Page:16
File Type:pdf, Size:1020Kb
Producing Open Source Software How to Run a Successful Free Software Project Karl Fogel Producing Open Source Software: How to Run a Successful Free Software Project by Karl Fogel Copyright © 2005 Karl Fogel, under a CreativeCommons Attribution-ShareAlike license Dedication This book is dedicated to two dear friends without whom it would not have been possible: Karen Under- hill and Jim Blandy. i Table of Contents Preface ......................................................................................................................v Why Write This Book? ........................................................................................ v Who Should Read This Book? ............................................................................... v Sources ............................................................................................................vi Acknowledgments .............................................................................................. vi Disclaimer ...................................................................................................... viii 1. Introduction ............................................................................................................ 9 History ............................................................................................................ 11 The Rise of Proprietary Software and Free Software ........................................ 11 "Free" Versus "Open Source" ...................................................................... 14 The Situation Today .......................................................................................... 16 2. Getting Started ...................................................................................................... 18 Starting From What You Have ............................................................................. 19 Choose a Good Name ................................................................................ 20 Have a Clear Mission Statement ................................................................... 21 State That the Project is Free ....................................................................... 21 Features and Requirements List ................................................................... 22 Development Status ................................................................................... 22 Downloads .............................................................................................. 23 Version Control and Bug Tracker Access ....................................................... 23 Communications Channels .......................................................................... 24 Developer Guidelines ................................................................................. 25 Documentation ......................................................................................... 25 Example Output and Screenshots ................................................................. 27 Canned Hosting ........................................................................................ 28 Choosing a License and Applying It ..................................................................... 28 The "Do Anything" Licenses ....................................................................... 28 The GPL ................................................................................................. 28 How to Apply a License to Your Software ..................................................... 28 Setting the Tone ................................................................................................ 29 Avoid Private Discussions .......................................................................... 30 Nip Rudeness in the Bud ............................................................................ 31 Practice Conspicuous Code Review .............................................................. 32 When Opening a Formerly Closed Project, be Sensitive to the Magnitude of the Change ................................................................................................... 33 Announcing ..................................................................................................... 34 3. Technical Infrastructure .......................................................................................... 36 What a Project Needs ......................................................................................... 37 Mailing Lists .................................................................................................... 37 Spam Prevention ....................................................................................... 39 Identification and Header Management ......................................................... 41 The Great Reply-to Debate ......................................................................... 42 Archiving ................................................................................................ 44 Software .................................................................................................. 45 Version Control ................................................................................................ 46 Version Control Vocabulary ........................................................................ 46 Choosing a Version Control System .............................................................. 49 Using the Version Control System ................................................................ 49 Bug Tracker ..................................................................................................... 54 Interaction with Mailing Lists ...................................................................... 56 Pre-Filtering the Bug Tracker ...................................................................... 56 IRC / Real-Time Chat Systems ............................................................................ 58 Bots ........................................................................................................ 59 ii Producing Open Source Software Archiving IRC .......................................................................................... 59 Wikis .............................................................................................................. 60 Web Site ......................................................................................................... 61 Canned Hosting ........................................................................................ 61 4. Social and Political Infrastructure ............................................................................. 63 Benevolent Dictators ......................................................................................... 64 Who Can Be a Good Benevolent Dictator? ..................................................... 64 Consensus-based Democracy ............................................................................... 65 Version Control Means You Can Relax ......................................................... 65 When Consensus Cannot Be Reached, Vote ................................................... 66 When To Vote .......................................................................................... 67 Who Votes? ............................................................................................. 67 Polls Versus Votes .................................................................................... 68 Vetoes .................................................................................................... 68 Writing It All Down .......................................................................................... 69 5. Money ................................................................................................................. 71 Types of Involvement ........................................................................................ 72 Hire for the Long Term ...................................................................................... 73 Appear as Many, Not as One ............................................................................... 74 Be Open About Your Motivations ........................................................................ 74 Money Can't Buy You Love ................................................................................ 76 Contracting ...................................................................................................... 77 Review and Acceptance of Changes .............................................................. 78 Funding Non-Programming Activities ................................................................... 79 Quality Assurance (i.e., Professional Testing) ................................................. 79 Legal Advice and Protection ....................................................................... 80 Documentation and Usability ...................................................................... 81 Providing Hosting/Bandwidth ...................................................................... 81 Marketing ........................................................................................................ 81 Remember That You Are Being Watched ...................................................... 82 Don't Bash Competing Open Source Products ................................................. 83 6. Communications ...................................................................................................