Letter, If Not the Spirit, of One Or the Other Definition
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 Under- hill 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 .............................................................................................................. 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 .................................................. 23 Hosting ............................................................................................................ 23 Choosing a License and Applying It ............................................................................. 24 The "Do Anything" Licenses ............................................................................... 25 The GPL ......................................................................................................... 25 How to Apply a License to Your Software ............................................................ 25 Setting the Tone ....................................................................................................... 26 Avoid Private Discussions .................................................................................. 27 Nip Rudeness in the Bud .................................................................................... 28 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 Message Forums / Mailing Lists .................................................................................. 43 Choosing the Right Forum Management Software .................................................. 44 Version Control ........................................................................................................ 53 Version Control Vocabulary ................................................................................ 53 Choosing a Version Control System ..................................................................... 57 Using the Version Control System ....................................................................... 57 Receiving and Reviewing Contributions ................................................................ 61 Bug Tracker ............................................................................................................. 63 Interaction with Email ........................................................................................ 65 ii Producing Open Source Software Pre-Filtering the Bug Tracker .............................................................................. 65 IRC / Real-Time Chat Systems .................................................................................... 67 IRC Bots ......................................................................................................... 68 Archiving IRC .................................................................................................. 69 Wikis ...................................................................................................................... 69 Wikis and Spam ............................................................................................... 70 Choosing a Wiki ............................................................................................... 70 Q&A Forums ........................................................................................................... 71 Translation Infrastructure ............................................................................................ 72 Social Networking Services ........................................................................................ 72 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. Organizations and Money: .............................................................................................. 83 The Economics of Open Source .................................................................................. 83 Types of Corporate Involvement .................................................................................. 84 Governments and Open Source ...................................................................................