Melvin's digital garden

Producing open source software

[http://producingoss.com/en/index.html]

Getting Started

  • Starting From What You Have
  • Choose a Good Name
  • Have a Clear Mission Statement
  • State That the Project is Free
  • Features and Requirements List
  • Development Status
  • Downloads
  • Version Control and Bug Tracker Access
  • Communications Channels
  • Developer Guidelines
  • Documentation (user and developer)
  • Example Output and Screenshots
  • Canned Hosting
  • Choosing a License and Applying It
  • Setting the Tone
  • Avoid Private Discussions
  • Nip Rudeness in the Bud
  • Practice Conspicuous Code Review
  • When Opening a Formerly Closed Project, be Sensitive to the Magnitude of the Change

Technical Infrastructure

  • What a Project Needs
  • Mailing Lists
  • Spam Prevention
  • Filtering posts
  • Address hiding in archives
  • Identification and Header Management
  • The Great Reply-to Debate
  • Archiving
  • Version Control
  • Commit emails
  • Use branches to avoid bottlenecks
  • Singularity of information
  • Authorization
  • Bug Tracker
  • Interaction with Mailing Lists
  • Pre-Filtering the Bug Tracker
  • IRC / Real-Time Chat Systems
  • RSS Feeds
  • Wikis
  • Web Site
  • Canned Hosting

Social and Political Infrastructure

  • Benevolent Dictators
  • Consensus-based Democracy
  • When Consensus Cannot Be Reached, Vote
  • Polls Versus Votes
  • Vetoes
  • Writing It All Down

Money

  • Types of Involvement
  • Hire for the Long Term
  • Appear as Many, Not as One
  • Be Open About Your Motivations
  • Money Can’t Buy You Love
  • Contracting
  • Review and Acceptance of Changes
  • Funding Non-Programming Activities
  • Quality Assurance (i.e., Professional Testing)
  • Legal Advice and Protection
  • Documentation and Usability
  • Providing Hosting/Bandwidth
  • Marketing
  • Remember That You Are Being Watched
  • Don’t Bash Competing Open Source Products

Communications

  • You Are What You Write
  • Recognizing Rudeness
  • Don’t Post Without a Purpose
  • Productive vs Unproductive Threads
  • The Softer the Topic, the Longer the Debate
  • Avoid Holy Wars
  • The “Noisy Minority” Effect
  • Difficult People
  • Handling Growth
  • Conspicuous Use of Archives
  • Treat all resources like archives
  • Codifying Tradition
  • No Conversations in the Bug Tracker
  • Publicity
  • Announcing Security Vulnerabilities

Packaging, Releasing, and Daily Development

  • Release Numbering
  • Release Branches
  • Stabilizing a Release
  • Dictatorship by Release Owner
  • Release manager
  • Packaging
  • Format
  • Name and Layout
  • Testing and Releasing
  • Candidate Releases
  • Announcing Releases
  • Maintaining Multiple Release Lines
  • Releases and Daily Development
  • Planning Releases

Managing Volunteers

  • Getting the Most Out of Volunteers
  • 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 Volunteer
  • Share Management Tasks as Well as Technical Tasks
  • Patch Manager
  • Translation Manager
  • Documentation Manager
  • Issue Manager
  • FAQ Manager
  • Transitions
  • Committers
  • Avoid Mystery
  • Credit
  • Forks

Licenses, Copyrights, and Patents

  • The GPL and License Compatibility
  • The MIT / X Window System License
  • The GNU General Public License
  • Is the GPL free or not free?
  • What About The BSD License?
  • Copyright Assignment and Ownership
  • Doing Nothing
  • Contributor License Agreements
  • Transfer of Copyright
  • Dual Licensing Schemes
  • Patents

Links to this note