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-2013 Karl Fogel, under a CreativeCommons Attribution-ShareAlike (3.0) license [http:// creativecommons.org/licenses/by/3.0/]. Dedication This book is dedicated to two dear friends without whom it would not have been possible: Karen Underhill and Jim Blandy. i Table of Contents Preface ............................................................................................................................ vi Why Write This Book? .............................................................................................. vi Who Should Read This Book? ..................................................................................... vi Sources ................................................................................................................... vii Acknowledgments .................................................................................................... viii Disclaimer ................................................................................................................ ix 1. Introduction ................................................................................................................... 1 History ..................................................................................................................... 3 The Rise of Proprietary Software and Free Software ................................................. 3 "Free" Versus "Open Source" ............................................................................... 7 The Situation Today ................................................................................................... 9 2. Getting Started .............................................................................................................. 10 Starting From What You Have .................................................................................... 11 Choose a Good Name ........................................................................................ 12 Have a Clear Mission Statement .......................................................................... 13 State That the Project is Free .............................................................................. 13 Features and Requirements List ........................................................................... 14 Development Status ........................................................................................... 14 Downloads ....................................................................................................... 15 Version Control and Bug Tracker Access .............................................................. 16 Communications Channels .................................................................................. 16 Developer Guidelines ........................................................................................ 17 Documentation ................................................................................................. 17 Example Output and Screenshots ......................................................................... 20 Canned Hosting ................................................................................................ 20 Choosing a License and Applying It ............................................................................ 21 The "Do Anything" Licenses .............................................................................. 21 The GPL ......................................................................................................... 21 How to Apply a License to Your Software ............................................................ 21 Setting the Tone ....................................................................................................... 22 Avoid Private Discussions .................................................................................. 23 Nip Rudeness in the Bud ................................................................................... 24 Practice Conspicuous Code Review ...................................................................... 25 When Opening a Formerly Closed Project, be Sensitive to the Magnitude of the Change ............................................................................................................ 26 Announcing ............................................................................................................. 27 3. Technical Infrastructure .................................................................................................. 29 What a Project Needs ................................................................................................ 30 Mailing Lists ............................................................................................................ 31 Spam Prevention ............................................................................................... 32 Identification and Header Management ................................................................. 34 The Great Reply-to Debate ................................................................................. 35 Archiving ........................................................................................................ 37 Software .......................................................................................................... 38 Version Control ........................................................................................................ 39 Version Control Vocabulary ............................................................................... 40 Choosing a Version Control System ..................................................................... 42 Using the Version Control System ....................................................................... 43 Bug Tracker ............................................................................................................. 48 Interaction with Mailing Lists ............................................................................. 50 Pre-Filtering the Bug Tracker .............................................................................. 50 ii Producing Open Source Software IRC / Real-Time Chat Systems .................................................................................... 52 Bots ................................................................................................................ 53 Archiving IRC .................................................................................................. 54 RSS Feeds ............................................................................................................... 54 Wikis ...................................................................................................................... 54 Web Site ................................................................................................................. 56 Canned Hosting ................................................................................................ 56 Social Networking Services ........................................................................................ 58 4. Social and Political Infrastructure ..................................................................................... 59 Benevolent Dictators ................................................................................................. 60 Who Can Be a Good Benevolent Dictator? ............................................................ 60 Consensus-based Democracy ...................................................................................... 61 Version Control Means You Can Relax ................................................................ 62 When Consensus Cannot Be Reached, Vote ........................................................... 62 When To Vote ................................................................................................. 63 Who Votes? ..................................................................................................... 64 Polls Versus Votes ............................................................................................ 64 Vetoes ............................................................................................................ 65 Writing It All Down .................................................................................................. 65 Joining or Creating a Non-Profit Organization ............................................................... 66 5. Money ......................................................................................................................... 67 Crowdfunding: Kickstarter, etc .................................................................................... 68 Types of Corporate Involvement .................................................................................. 68 Hire for the Long Term ............................................................................................. 69 Appear as Many, Not as One ...................................................................................... 70 Be Open About Your Motivations ............................................................................... 71 Money Can't Buy You Love ....................................................................................... 72 Contracting .............................................................................................................