Producing Open Source Software: How to Run a Successful Free Software Project

Producing Open Source Software: How to Run a Successful Free Software Project

By Karl Fogel
Book Description

The corporate market is now embracing free, "open source" software like never before, as evidenced by the recent success of the technologies underlying LAMP (Linux, Apache, MySQL, and PHP). Each is the result of a publicly collaborative process among numerous developers who volunteer their time and energy to create better software.

The truth is, however, that the overwhelming majority of free software projects fail. To help you beat the odds, O'Reilly has put together Producing Open Source Software, a guide that recommends tried and true steps to help free software developers work together toward a common goal. Not just for developers who are considering starting their own free software project, this book will also help those who want to participate in the process at any level.

The book tackles this very complex topic by distilling it down into easily understandable parts. Starting with the basics of project management, it details specific tools used in free software projects, including version control, IRC, bug tracking, and Wikis. Author Karl Fogel, known for his work on CVS and Subversion, offers practical advice on how to set up and use a range of tools in combination with open mailing lists and archives. He also provides several chapters on the essentials of recruiting and motivating developers, as well as how to gain much-needed publicity for your project.

While managing a team of enthusiastic developers -- most of whom you've never even met -- can be challenging, it can also be fun. Producing Open Source Software takes this into account, too, as it speaks of the sheer pleasure to be had from working with a motivated team of free software developers.

Version 2.0 is now available.


Table of Contents
  • Producing Open Source Software
  • Table of Contents
  • Preface
    • Why Write This Book?
    • Who Should Read This Book?
    • Sources
    • Acknowledgements
      • For the first edition (2005)
      • For the second edition (2017)
    • Disclaimer
  • Chapter 1. Introduction
    • History
      • The Rise of Proprietary Software and Free Software
        • Conscious Resistance
        • Accidental Resistance
      • "Free" Versus "Open Source"
    • The Situation Today
  • Chapter 2. Getting Started
    • But First, Look Around
    • Starting From What You Have
      • Choose a Good Name
        • Own the Name in the Important Namespaces
      • Have a Clear Mission Statement
      • State That the Project is Free
      • Features and Requirements List
      • Development Status
        • Development Status Should Always Reflect Reality
      • Downloads
      • Version Control and Bug Tracker Access
      • Communications Channels
      • Developer Guidelines
      • Documentation
        • Availability of Documentation
        • Developer Documentation
      • Demos, Screenshots, Videos, and Example Output
      • Hosting
    • Choosing a License and Applying It
      • The "Do Anything" Licenses
      • The GPL
      • How to Apply a License to Your Software
    • Setting the Tone
      • Avoid Private Discussions
      • Nip Rudeness in the Bud
      • Codes of Conduct
      • Practice Conspicuous Code Review
        • Case study
      • Be Open From Day One
        • Waiting Just Creates an Exposure Event
    • Opening a Formerly Closed Project
    • Announcing
  • Chapter 3. Technical Infrastructure
    • What a Project Needs
    • Web Site
      • Canned Hosting
        • Choosing a Canned Hosting Site
        • Hosting on Fully Open Source Infrastructure
        • Anonymity and Involvement
    • Mailing Lists / Message Forums
      • Choosing the Right Forum Management Software
        • Spam Prevention
          • Filtering posts
          • Address-Hiding in Archives
        • Identification and Header Management
        • The Great Reply-to Debate
        • Archiving
        • Mailing List / Message Forum Software
    • Version Control
      • Version Control Vocabulary
      • Choosing a Version Control System
      • Using the Version Control System
        • Version Everything
        • Browsability
        • Use Branches to Avoid Bottlenecks
        • Singularity of Information
        • Authorization
      • Receiving and Reviewing Contributions
        • Pull Requests
        • Commit Notifications / Commit Emails
    • Bug Tracker
      • Interaction with Email
      • Pre-Filtering the Bug Tracker
    • IRC / Real-Time Chat Systems
      • IRC Bots
        • Commit Notifications in IRC
      • Archiving IRC
    • Wikis
      • Wikis and Spam
      • Choosing a Wiki
    • Q&A Forums
    • Translation Infrastructure
    • Social Networking Services
  • Chapter 4. Social and Political Infrastructure
    • Forkability
    • Benevolent Dictators
      • Who Can Be a Good Benevolent Dictator?
    • Consensus-based Democracy
      • Version Control Means You Can Relax
      • When Consensus Cannot Be Reached, Vote
      • When To Vote
      • Who Votes?
        • Not All Maintainers Are Coders
        • Adding New Maintainers
      • Polls Versus Votes
      • Vetoes
    • Writing It All Down
    • Joining or Creating a Non-Profit Organization
  • Chapter 5. Participating as a Business, Non-Profit, or Government Agency
    • The Economics of Open Source
    • Types of Corporate Involvement
    • Governments and Open Source
      • Being Open Source From Day One is Especially Important for Government Projects
    • Hire for the Long Term
      • Case study
    • Appear as Many, Not as One
    • Be Open About Your Motivations
    • Money Can't Buy You Love
    • Contracting
      • Review and Acceptance of Changes
        • Case Study: the CVS Password-Authentication Protocol
      • Update Your RFI, RFP and Contract Language
      • Open Source IV&V
      • Don't Surprise Your Lawyers
    • Funding Non-Programming Activities
      • Quality Assurance (i.e., Professional Testing)
      • Legal Advice and Protection
      • Documentation and Usability
        • Funding User Experience (UX) Work
      • Providing Hosting/Bandwidth
      • Providing Build Farms and Development Servers
      • Running Security Audits
      • Sponsoring Conferences, Hackathons, and other Developer Meetings
    • Marketing
      • Open Source and Freedom from Vendor Lock-In
      • Remember That You Are Being Watched
        • Case Study: You Can't Fake It, So Don't Try
      • Don't Bash Competing Vendors' Efforts
      • "Commercial" vs "Proprietary"
    • Open Source and the Organization
      • Dispel Myths Within Your Organization
      • Foster Pools of Expertise in Multiple Places
        • Establish Contact Early With Relevant Communities
      • Don't Let Publicity Events Drive Project Schedule
      • The Key Role of Middle Management
      • InnerSourcing
    • Hiring Open Source Developers
      • Hiring for Influence
    • Evaluating Open Source Projects
    • Crowdfunding and Bounties
  • Chapter 6. Communications
    • Written Culture
    • You Are What You Write
      • Structure and Formatting
      • Content
      • Tone
      • Recognizing Rudeness
      • Face
    • Avoiding Common Pitfalls
      • Don't Post Without a Purpose
      • Productive vs Unproductive Threads
      • The Smaller the Topic, the Longer the Debate
      • Avoid Holy Wars
      • The "Noisy Minority" Effect
      • Don't Bash Competing Open Source Products
    • Difficult People
      • Handling Difficult People
      • Case study
    • Handling Growth
      • Conspicuous Use of Archives
        • Treat All Resources Like Archives
      • Codifying Tradition
    • Choose the Right Forum
      • Cross-Link Between Forums
    • Publicity
      • Announcing Releases and Other Major Events
      • Announcing Security Vulnerabilities
        • Receive the Report
        • Develop the Fix Quietly
        • CVE Numbers
        • Common Vulnerability Scoring System (CVSS) Scores
        • Pre-Notification
        • Distribute the Fix Publicly
  • Chapter 7. Packaging, Releasing, and Daily Development
    • Release Numbering
      • Release Number Components
      • Semantic Versioning
      • The Even/Odd Strategy
    • Release Branches
      • Mechanics of Release Branches
    • Stabilizing a Release
      • Dictatorship by Release Owner
      • Voting on Changes
        • Managing Collaborative Release Stabilization
        • Release Manager
    • Packaging
      • Format
      • Name and Layout
        • To Capitalize or Not to Capitalize
        • Pre-Releases
      • Compilation and Installation
      • Binary Packages
    • Testing and Releasing
      • Candidate Releases
      • Announcing Releases
    • Maintaining Multiple Release Lines
      • Security Releases
    • Releases and Daily Development
      • Planning Releases
  • Chapter 8. Managing Participants
    • Community and Motivation
      • Delegation
        • Distinguish Clearly Between Inquiry and Assignment
        • Follow Up After You Delegate
        • Notice What People Are Interested In
      • Praise and Criticism
      • Prevent Territoriality
      • The Automation Ratio
        • Automated testing
      • Treat Every User as a Potential Participant
      • Meeting In Person (Conferences, Hackfests, Code-a-Thons, Code Sprints, Retreats)
    • Share Management Tasks as Well as Technical Tasks
      • "Manager" Does Not Mean "Owner"
        • Patch Manager (or Pull Request Manager)
        • Translation Manager
        • Documentation Manager
        • Issue Manager
    • Transitions
    • Committers
      • Committers vs Maintainers
      • Choosing Committers
      • Revoking Commit Access
      • Partial Commit Access
      • Dormant Committers
      • Avoid Mystery
    • Credit
    • Forks
      • Handling a Fork
      • Initiating a Fork
  • Chapter 9. Legal Matters: Licenses, Copyrights, Trademarks and Patents
    • Terminology
    • Aspects of Licenses
    • The GPL and License Compatibility
    • Choosing a License
      • The GNU General Public License
        • The "or any later version" Option: Future-Proofing the GPL
        • The GNU Affero GPL: A Version of the GNU GPL for Server-Side Code
        • The Copyright Holder Is Special, Even In Copyleft Licenses
        • Is the GPL Free or Not Free?
    • Contributor Agreements
      • Doing Nothing
      • Contributor License Agreements
        • Developer Certificates of Origin (DCO): A Simpler Style of CLA
    • Proprietary Relicensing
      • Problems with Proprietary Relicensing
    • Trademarks
      • Case study: Mozilla Firefox, the Debian Project, and Iceweasel
      • Case study: The GNOME Logo and the Fish Pedicure Shop
    • Patents
    • Further Resources
  • Appendix A. Copyright
    No review for this book yet, be the first to review.
      No comment for this book yet, be the first to comment
      You May Also Like
      Also Available On
      App store smallGoogle play small
      Curated Lists
      • Pattern Recognition and Machine Learning (Information Science and Statistics)
        by Christopher M. Bishop
        Data mining
        by I. H. Witten
        The Elements of Statistical Learning: Data Mining, Inference, and Prediction
        by Various
        See more...
      • CK-12 Chemistry
        by Various
        Concept Development Studies in Chemistry
        by John Hutchinson
        An Introduction to Chemistry - Atoms First
        by Mark Bishop
        See more...
      • Microsoft Word - How to Use Advanced Algebra II.doc
        by Jonathan Emmons
        Advanced Algebra II: Activities and Homework
        by Kenny Felder
        See more...
      • The Sun Who Lost His Way
        Tania is a Detective
        by Kanika G
        See more...
      • Java 3D Programming
        by Daniel Selman
        The Java EE 6 Tutorial
        by Oracle Corporation
        See more...