Producing Open Source Software

Karl Fogel

Edited by

Andy Oram


Dedication

This book is dedicated to two dear friends without whom it would not have been possible: Karen Underhill and Jim Blandy.

Table of Contents
Preface
1. Why Write This Book?
2. Who Should Read This Book?
3. Sources
4. Acknowledgments
5. Disclaimer
1. Introduction
1.1.
1.2.
1.1. History
1.1.1. The Rise of Proprietary Software and Free Software
1.1.2. "Free" Versus "Open Source"
1.2. The Situation Today
2. Getting Started
2.1.
.1. But First, Look Around
2.1. Starting From What You Have
2.1.1. Choose a Good Name
2.1.2. Have a Clear Mission Statement
2.1.3. State That the Project is Free
2.1.4. Features and Requirements List
2.1.5. Development Status
2.1.6. Downloads
2.1.7. Version Control and Bug Tracker Access
2.1.8. Communications Channels
2.1.9. Developer Guidelines
2.1.10. Documentation
2.1.11. Example Output and Screenshots
2.1.12. Canned Hosting
2.2. Choosing a License and Applying It
2.2.1. The "Do Anything" Licenses
2.2.2. The GPL
2.2.3. How to Apply a License to Your Software
2.3. Setting the Tone
2.3.1. Avoid Private Discussions
2.3.2. Nip Rudeness in the Bud
2.3.3. Practice Conspicuous Code Review
2.3.4. When Opening a Formerly Closed Project, be Sensitive to the Magnitude of the Change
2.4. Announcing
3. Technical Infrastructure
3.1.
3.1. What a Project Needs
3.2. Mailing Lists
3.2.1. Spam Prevention
3.2.2. Identification and Header Management
3.2.3. The Great Reply-to Debate
3.2.4. Archiving
3.2.5. Software
3.3. Version Control
3.3.1. Version Control Vocabulary
3.3.2. Choosing a Version Control System
3.3.3. Using the Version Control System
3.4. Bug Tracker
3.4.1. Interaction with Mailing Lists
3.4.2. Pre-Filtering the Bug Tracker
3.5. IRC / Real-Time Chat Systems
3.5.1. Bots
3.5.2. Archiving IRC
3.6. RSS Feeds
3.7. Wikis
3.8. Web Site
3.8.1. Canned Hosting
4. Social and Political Infrastructure
4.1.
4.1. Forkability
4.2.
4.1. Benevolent Dictators
4.1.1.
4.1.1. Who Can Be a Good Benevolent Dictator?
4.2. Consensus-based Democracy
4.2.1. Version Control Means You Can Relax
4.2.2. When Consensus Cannot Be Reached, Vote
4.2.3. When To Vote
4.2.4. Who Votes?
4.2.5. Polls Versus Votes
4.2.6. Vetoes
4.3. Writing It All Down
5. Money
5.1.
5.1. Types of Involvement
5.2. Hire for the Long Term
5.3. Appear as Many, Not as One
5.4. Be Open About Your Motivations
5.5. Money Can't Buy You Love
5.6. Contracting
5.6.1. Review and Acceptance of Changes
5.7. Funding Non-Programming Activities
5.7.1. Quality Assurance (i.e., Professional Testing)
5.7.2. Legal Advice and Protection
5.7.3. Documentation and Usability
5.7.4. Providing Hosting/Bandwidth
5.8. Marketing
5.8.1. Remember That You Are Being Watched
5.8.2. Don't Bash Competing Open Source Products
6. Communications
6.1.
6.1. You Are What You Write
6.1.1. Structure and Formatting
6.1.2. Content
6.1.3. Tone
6.1.4. Recognizing Rudeness
6.1.5. Face
6.2. Avoiding Common Pitfalls
6.2.1. Don't Post Without a Purpose
6.2.2. Productive vs Unproductive Threads
6.2.3. The Softer the Topic, the Longer the Debate
6.2.4. Avoid Holy Wars
6.2.5. The "Noisy Minority" Effect
6.3. Difficult People
6.3.1. Handling Difficult People
6.3.2. Case study
6.4. Handling Growth
6.4.1. Conspicuous Use of Archives
6.4.2. Codifying Tradition
6.5. No Conversations in the Bug Tracker
6.6. Publicity
6.6.1. Announcing Security Vulnerabilities
7. Packaging, Releasing, and Daily Development
7.1.
7.1. Release Numbering
7.1.1. Release Number Components
7.1.2. The Simple Strategy
7.1.3. The Even/Odd Strategy
7.2. Release Branches
7.2.1. Mechanics of Release Branches
7.3. Stabilizing a Release
7.3.1. Dictatorship by Release Owner
7.3.2. Change Voting
7.4. Packaging
7.4.1. Format
7.4.2. Name and Layout
7.4.3. Compilation and Installation
7.4.4. Binary Packages
7.5. Testing and Releasing
7.5.1. Candidate Releases
7.5.2. Announcing Releases
7.6. Maintaining Multiple Release Lines
7.6.1. Security Releases
7.7. Releases and Daily Development
7.7.1. Planning Releases
8. Managing Volunteers
8.1.
8.1. Getting the Most Out of Volunteers
8.1.1. Delegation
8.1.2. Praise and Criticism
8.1.3. Prevent Territoriality
8.1.4. The Automation Ratio
8.1.5. Treat Every User as a Potential Volunteer
8.2. Share Management Tasks as Well as Technical Tasks
8.2.1. Patch Manager
8.2.2. Translation Manager
8.2.3. Documentation Manager
8.2.4. Issue Manager
8.2.5. FAQ Manager
8.3. Transitions
8.4. Committers
8.4.1. Choosing Committers
8.4.2. Revoking Commit Access
8.4.3. Partial Commit Access
8.4.4. Dormant Committers
8.4.5. Avoid Mystery
8.5. Credit
8.6. Forks
8.6.1. Handling a Fork
8.6.2. Initiating a Fork
9. Licenses, Copyrights, and Patents
9.1.
9.1. Terminology
9.2. Aspects of Licenses
9.3. The GPL and License Compatibility
9.4. Choosing a License
9.4.1. The MIT / X Window System License
9.4.2. The GNU General Public License
9.4.3. What About The BSD License?
9.5. Copyright Assignment and Ownership
9.5.1. Doing Nothing
9.5.2. Contributor License Agreements
9.5.3. Transfer of Copyright
9.6. Dual Licensing Schemes
9.7. Patents
9.8. Further Resources
A. Free Version Control Systems
A.1.
.1. Subversionhttp://subversion.tigris.org/
.2. GIThttp://git.or.cz/
.3. Mercurialhttp://www.selenic.com/mercurial/
.4. Bazaarhttp://bazaar-vcs.org/
.5. SVKhttp://svk.elixus.org/
.6. Veracityhttp://veracity-scm.com/
.7. Fossilhttp://www.fossil-scm.org/
.8. CVShttp://www.nongnu.org/cvs/
.9. Darcshttp://darcs.net
.10. Archhttp://www.gnu.org/software/gnu-arch/
.11. monotonehttp://www.venge.net/monotone/
.12. Codevillehttp://codeville.org/
.13. Vestahttp://www.vestasys.org/
.14. Aegishttp://aegis.sourceforge.net/
.15. CVSNThttp://cvsnt.org/
.16. META-CVShttp://common-lisp.net/project/meta-cvs/
.17. OpenCMhttp://www.opencm.org/
.18. PRCShttp://prcs.sourceforge.net/
.19. ArXhttp://www.nongnu.org/arx/
.20. SourceJammerhttp://www.sourcejammer.org/
.21. FastCSThttp://www.zedshaw.com/projects/fastcst/index.html
.22. Superversionhttp://www.superversion.org/
B. Free Bug Trackers
B.1.
.1. Redminehttp://www.redmine.org/
.2. Bugzillahttp://www.bugzilla.org/
.3. GNATShttp://www.gnu.org/software/gnats/
.4. RequestTracker (RT)http://www.bestpractical.com/rt/
.5. Trachttp://trac.edgewall.com/
.6. Rounduphttp://roundup.sourceforge.net/
.7. Mantishttp://www.mantisbt.org/
.8. Flysprayhttp://www.flyspray.org/
.9. Scarabhttp://scarab.tigris.org/
.10. Debian Bug Tracking System (DBTS)http://www.chiark.greenend.org.uk/~ian/debbugs/
.11. Trouble-Ticket Trackers
.12. Bluetail Ticket Tracker (BTT)http://btt.sourceforge.net/
C. Why Should I Care What Color the Bikeshed Is?
C.1.
D. Example Instructions for Reporting Bugs
D.1.
E. Copyright
E.1.
How to Run a Successful Free Software Project
Karl Fogel wrote this book. View alternate versions or buy a printed copy via producingoss.com

copyright  ©  December 11 2018 sean dreilinger url: https://durak.org/sean/pubs/software/producingoss/index.html