Breaking Sections of Producing OSS into Classes

Version 2.2 by Ken Udas on 2019/05/05 11:37

Producing Open Source Software Text Structure

Preface

Why Write This Book?
Who Should Read This Book?
Sources
Acknowledgements

For the first edition (2005)
For the second edition (2017)
Disclaimer
1. Introduction

History

The Rise of Proprietary Software and Free Software

Conscious Resistance
Accidental Resistance
"Free" Versus "Open Source"
The Situation Today
2. Getting Started

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
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
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
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
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
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
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
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

"Development Forks" versus "Hard Forks"
Figuring Out Whether You're the Fork
Handling a Fork
Initiating a Fork
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

Sections Affiliated With: The Business of Open Source

Sections Affiliated With: Open Source Community Development

Sections Affiliated With: Open Source Development Fundamentals

--------

Tags:
    

Submit feedback regarding this wiki to webmaster@opensource.org

This wiki is licensed under a Creative Commons 2.0 license
XWiki 14.10.13 - Documentation