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-2021 Karl Fogel, under the CreativeCommons Attribution-ShareAlike (4.0) license. Version: 2.3214 Home site: https://producingoss.com/ 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 Acknowledgements ................................................................................................................................. viii For the first edition (2005) .............................................................................................................. viii For the second edition (2021) ............................................................................................................ ix Disclaimer .............................................................................................................................................. xi 1. Introduction .................................................................................................................................................. 1 History .................................................................................................................................................... 3 The Rise of Proprietary Software and Free Software ............................................................................... 3 "Free" Versus "Open Source" ............................................................................................................. 6 The Situation Today .................................................................................................................................. 8 2. Getting Started .............................................................................................................................................. 9 Starting From What You Have .................................................................................................................. 10 Choose a Good Name ...................................................................................................................... 11 Have a Clear Mission Statement ........................................................................................................ 12 State That the Project is Free ............................................................................................................ 12 Features and Requirements List ......................................................................................................... 13 Development Status ......................................................................................................................... 13 Downloads ..................................................................................................................................... 14 Version Control and Bug Tracker Access ............................................................................................ 15 Communications Channels ................................................................................................................ 15 Developer Guidelines ....................................................................................................................... 16 Documentation ................................................................................................................................ 16 Demos, Screenshots, Videos, and Example Output ................................................................................ 18 Hosting .......................................................................................................................................... 19 Choosing a License and Applying It ........................................................................................................... 19 The "Do Anything" Licenses ............................................................................................................. 20 The GPL ........................................................................................................................................ 20 How to Apply a License to Your Software .......................................................................................... 20 Setting the Tone ..................................................................................................................................... 21 Avoid Private Discussions ................................................................................................................ 22 Nip Rudeness in the Bud .................................................................................................................. 23 Practice Conspicuous Code Review .................................................................................................... 24 Be Open From Day One .................................................................................................................. 25 Opening a Formerly Closed Project ............................................................................................................ 27 Announcing ............................................................................................................................................ 28 3. Technical Infrastructure ................................................................................................................................ 30 What a Project Needs .............................................................................................................................. 31 Web Site ................................................................................................................................................ 31 Canned Hosting .............................................................................................................................. 32 Message Forums / Mailing Lists ................................................................................................................ 35 Choosing the Right Forum Management Software ................................................................................ 36 Version Control ...................................................................................................................................... 43 Version Control Vocabulary .............................................................................................................. 43 Choosing a Version Control System ................................................................................................... 46 Using the Version Control System ..................................................................................................... 46 Receiving and Reviewing Contributions .............................................................................................. 49 Bug Tracker ........................................................................................................................................... 51 Interaction with Email ...................................................................................................................... 53 Pre-Filtering the Bug Tracker ............................................................................................................ 53 IRC / Real-Time Chat Systems .................................................................................................................. 54 IRC Bots ....................................................................................................................................... 55 Archiving IRC ................................................................................................................................ 56 ii Producing Open Source Software Wikis .................................................................................................................................................... 56 Wikis and Spam ............................................................................................................................. 57 Choosing a Wiki ............................................................................................................................. 57 Q&A Forums ......................................................................................................................................... 57 Translation Infrastructure .......................................................................................................................... 58 Social Networking Services ...................................................................................................................... 58 4. Social and Political Infrastructure ..................................................................................................................