文件名称:Producing Open Source Software How to Run a Successful Free Software Project
文件大小:639KB
文件格式:PDF
更新时间:2014-11-09 03:12:32
*软件
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" ........................................................................ 6 The Situation Today ............................................................................................ 8 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 ....................................................... 15 Communications Channels .......................................................................... 16 Developer Guidelines ................................................................................. 17 Documentation ......................................................................................... 17 Example Output and Screenshots ................................................................. 19 Canned Hosting ........................................................................................ 20 Choosing a License and Applying It ..................................................................... 20 The "Do Anything" Licenses ....................................................................... 20 The GPL ................................................................................................. 20 How to Apply a License to Your Software ..................................................... 21 Setting the Tone ................................................................................................ 21 Avoid Private Discussions .......................................................................... 22 Nip Rudeness in the Bud ............................................................................ 23 Practice Conspicuous Code Review .............................................................. 24 When Opening a Formerly Closed Project, be Sensitive to the Magnitude of the Change ................................................................................................... 25 Announcing ..................................................................................................... 26 3. Technical Infrastructure .......................................................................................... 28 What a Project Needs ......................................................................................... 29 Mailing Lists .................................................................................................... 29 Spam Prevention ....................................................................................... 31 Identification and Header Management ......................................................... 33 The Great Reply-to Debate ......................................................................... 34 Archiving ................................................................................................ 36 Software .................................................................................................. 37 Version Control ................................................................................................ 38 Version Control Vocabulary ........................................................................ 38 Choosing a Version Control System .............................................................. 41 Using the Version Control System ................................................................ 41 Bug Tracker ..................................................................................................... 46 Interaction with Mailing Lists ...................................................................... 48 Pre-Filtering the Bug Tracker ...................................................................... 49 IRC / Real-Time Chat Systems ............................................................................ 50 Bots ........................................................................................................ 51 Archiving IRC .......................................................................................... 52 RSS Feeds ....................................................................................................... 52 Wikis .............................................................................................................. 52 Web Site ......................................................................................................... 54 Canned Hosting ........................................................................................ 54 4. Social and Political Infrastructure ............................................................................. 56 Benevolent Dictators ......................................................................................... 57 Who Can Be a Good Benevolent Dictator? ..................................................... 57 Consensus-based Democracy ............................................................................... 58 Version Control Means You Can Relax ......................................................... 58 When Consensus Cannot Be Reached, Vote ................................................... 59 When To Vote .......................................................................................... 60 Who Votes? ............................................................................................. 60 Polls Versus Votes .................................................................................... 61 Vetoes .................................................................................................... 61 Writing It All Down .......................................................................................... 62 5. Money ................................................................................................................. 64 Types of Involvement ........................................................................................ 65 Hire for the Long Term ...................................................................................... 66 Appear as Many, Not as One ............................................................................... 67 Be Open About Your Motivations ........................................................................ 67 Money Can't Buy You Love ................................................................................ 69 Contracting ...................................................................................................... 70 Review and Acceptance of Changes .............................................................. 71 Funding Non-Programming Activities ................................................................... 72 Quality Assurance (i.e., Professional Testing) ................................................. 72 Legal Advice and Protection ....................................................................... 73 Documentation and Usability ...................................................................... 74 Providing Hosting/Bandwidth ...................................................................... 74 Marketing ........................................................................................................ 75 Remember That You Are Being Watched ...................................................... 75 Don't Bash Competing Open Source Products ................................................. 76 6. Communications .................................................................................................... 77 You Are What You Write ................................................................................... 77 Structure and Formatting ............................................................................ 78 Content ................................................................................................... 79 Tone ....................................................................................................... 80 Recognizing Rudeness ............................................................................... 81 Face ....................................................................................................... 82 Avoiding Common Pitfalls .................................................................................. 84 Don't Post Without a Purpose ...................................................................... 84 Productive vs Unproductive Threads ............................................................. 84 The Softer the Topic, the Longer the Debate ................................................... 86 Avoid Holy Wars ...................................................................................... 87 The "Noisy Minority" Effect ....................................................................... 88 Difficult People ................................................................................................ 88 Handling Difficult People ........................................................................... 89 Case study ............................................................................................... 89 Handling Growth .............................................................................................. 91 Conspicuous Use of Archives ...................................................................... 92 Codifying Tradition ................................................................................... 94 No Conversations in the Bug Tracker .................................................................... 97 Publicity .......................................................................................................... 98 Announcing Security Vulnerabilities ............................................................. 99 7. Packaging, Releasing, and Daily Development .......................................................... 105 Release Numbering ......................................................................................... 105 Release Number Components .................................................................... 106 The Simple Strategy ................................................................................ 107 The Even/Odd Strategy ............................................................................ 109 Release Branches ............................................................................................ 109 Mechanics of Release Branches ................................................................. 110 Stabilizing a Release ........................................................................................ 111 * by Release Owner .................................................................. 112 Change Voting ....................................................................................... 112 Packaging ...................................................................................................... 114 Format .................................................................................................. 115 Name and Layout .................................................................................... 115 Compilation and Installation ...................................................................... 117 Binary Packages ..................................................................................... 118 Testing and Releasing ...................................................................................... 119 Candidate Releases .................................................................................. 120 Announcing Releases ............................................................................... 120 Maintaining Multiple Release Lines .................................................................... 120 Security Releases .................................................................................... 121 Releases and Daily Development ....................................................................... 121 Planning Releases ................................................................................... 122 8. Managing Volunteers ........................................................................................... 125 Getting the Most Out of Volunteers .................................................................... 125 Delegation ............................................................................................. 126 Praise and Criticism ................................................................................. 128 Prevent Territoriality ............................................................................... 128 The Automation Ratio .............................................................................. 130 Treat Every User as a Potential Volunteer .................................................... 132 Share Management Tasks as Well as Technical Tasks ............................................ 134 Patch Manager ........................................................................................ 134 Translation Manager ................................................................................ 135 Documentation Manager .......................................................................... 137 Issue Manager ........................................................................................ 137 FAQ Manager ........................................................................................ 138 Transitions ..................................................................................................... 139 Committers .................................................................................................... 141 Choosing Committers .............................................................................. 141 Revoking Commit Access ......................................................................... 142 Partial Commit Access ............................................................................. 142 Dormant Committers ............................................................................... 143 Avoid Mystery ....................................................................................... 143 Credit ........................................................................................................... 143 Forks ............................................................................................................ 145 Handling a Fork ...................................................................................... 145 Initiating a Fork ...................................................................................... 146 9. Licenses, Copyrights, and Patents ........................................................................... 148 Terminology .................................................................................................. 148 Aspects of Licenses ......................................................................................... 150 The GPL and License Compatibility ................................................................... 151 Choosing a License ......................................................................................... 152 The MIT / X Window System License ........................................................ 152 The GNU General Public License .............................................................. 153 What About The BSD License? ................................................................. 153 Copyright Assignment and Ownership ................................................................ 154 Doing Nothing ........................................................................................ 154 Contributor License Agreements ................................................................ 155 Transfer of Copyright .............................................................................. 155 Dual Licensing Schemes ................................................................................... 156 Patents .......................................................................................................... 157 Further Resources ........................................................................................... 159 A. Free Version Control Systems ............................................................................... 160 B. Free Bug Trackers ............................................................................................... 164 C. Why Should I Care What Color the Bikeshed Is? ....................................................... 167 D. Example Instructions for Reporting Bugs ................................................................. 171 E. Copyright .......................................................................................................... 173