Producing Open Source Software: How to Run a Successful Free Software Project
Karl Fogel
Computers & Technology
Producing Open Source Software: How to Run a Successful Free Software Project
Free
Description
Contents
Reviews

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.

 

Language
English
ISBN
Unknown
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
The book hasn't received reviews yet.