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-2017 Karl Fogel, under the CreativeCommons Attribution-ShareAlike (4.0) license [http://cre- ativecommons.org/licenses/by-sa/4.0/]. Version: 2.0 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 ............................................................................................................................. vi Why Write This Book? ............................................................................................... vi Who Should Read This Book? .................................................................................... vii Sources ................................................................................................................... vii Acknowledgements ................................................................................................... viii For the first edition (2005) ................................................................................ viii For the second edition (2017) ............................................................................... x Disclaimer .............................................................................................................. xiii 1. Introduction .................................................................................................................... 1 History ...................................................................................................................... 3 The Rise of Proprietary Software and Free Software ................................................. 4 "Free" Versus "Open Source" ............................................................................... 7 The Situation Today .................................................................................................... 9 2. Getting Started .............................................................................................................. 11 Starting From What You Have .................................................................................... 12 Choose a Good Name ........................................................................................ 13 Have a Clear Mission Statement .......................................................................... 15 State That the Project is Free .............................................................................. 15 Features and Requirements List ........................................................................... 16 Development Status ........................................................................................... 16 Downloads ....................................................................................................... 17 Version Control and Bug Tracker Access .............................................................. 18 Communications Channels .................................................................................. 19 Developer Guidelines ......................................................................................... 19 Documentation .................................................................................................. 20 Demos, Screenshots, Videos, and Example Output .................................................. 22 Hosting ............................................................................................................ 23 Choosing a License and Applying It ............................................................................. 24 The "Do Anything" Licenses ............................................................................... 24 The GPL ......................................................................................................... 24 How to Apply a License to Your Software ............................................................ 25 Setting the Tone ....................................................................................................... 26 Avoid Private Discussions .................................................................................. 26 Nip Rudeness in the Bud .................................................................................... 28 Codes of Conduct ............................................................................................. 29 Practice Conspicuous Code Review ...................................................................... 29 Be Open From Day One .................................................................................... 31 Opening a Formerly Closed Project .............................................................................. 33 Announcing .............................................................................................................. 34 3. Technical Infrastructure .................................................................................................. 37 What a Project Needs ................................................................................................ 38 Web Site ................................................................................................................. 39 Canned Hosting ................................................................................................ 40 Mailing Lists / Message Forums .................................................................................. 42 Choosing the Right Forum Management Software .................................................. 44 Version Control ........................................................................................................ 52 Version Control Vocabulary ................................................................................ 53 Choosing a Version Control System ..................................................................... 56 Using the Version Control System ....................................................................... 57 Receiving and Reviewing Contributions ................................................................ 60 Bug Tracker ............................................................................................................. 62 ii Producing Open Source Software Interaction with Email ........................................................................................ 64 Pre-Filtering the Bug Tracker .............................................................................. 65 IRC / Real-Time Chat Systems .................................................................................... 66 IRC Bots ......................................................................................................... 68 Archiving IRC .................................................................................................. 68 Wikis ...................................................................................................................... 69 Wikis and Spam ............................................................................................... 69 Choosing a Wiki ............................................................................................... 70 Q&A Forums ........................................................................................................... 70 Translation Infrastructure ............................................................................................ 71 Social Networking Services ........................................................................................ 71 4. Social and Political Infrastructure ..................................................................................... 73 Forkability ............................................................................................................... 73 Benevolent Dictators .................................................................................................. 74 Who Can Be a Good Benevolent Dictator? ............................................................ 74 Consensus-based Democracy ....................................................................................... 75 Version Control Means You Can Relax ................................................................ 76 When Consensus Cannot Be Reached, Vote ........................................................... 76 When To Vote .................................................................................................. 77 Who Votes? ..................................................................................................... 78 Polls Versus Votes ............................................................................................ 79 Vetoes ............................................................................................................. 79 Writing It All Down .................................................................................................. 80 Joining or Creating a Non-Profit Organization ................................................................ 81 5. Participating as a Business, Non-Profit, or Government Agency ............................................. 83 The Economics of Open Source .................................................................................. 83 Types of Corporate Involvement .................................................................................. 84