Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,7 @@ kramdown:
input: GFM
sass:
sass_dir: _includes/_sass

# Plugins
plugins:
- jekyll-redirect-from
66 changes: 66 additions & 0 deletions growing/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
page: growing
title: Growing and Sustaining a Project
nav: Growing
group: navigation
weight: 4
layout: default
subnav:
- title: Governance Models
tag: governance
- title: Community Recognition
tag: community-recognition
- title: Roadmaps & Planning
tag: roadmaps
- title: Sponsorships / Funding
tag: sponsorships
- title: Succession Planning
tag: succession
- title: Sunsetting/Archiving Projects
tag: sunsetting
updated: 25 November 2019
---

<div class="docs-section">
<header>
<h2>Growing and Sustaining a Project</h2>
<p>Strategies for mature projects and long-term community sustainability.</p>
</header>

<div class="col">
<h3>Who this is for</h3>
<ul>
<li>Project leads looking to grow their community</li>
<li>Maintainers seeking to scale governance</li>
<li>Projects seeking long-term sustainability</li>
</ul>
</div>

<div class="col">
<h3>What you'll find here</h3>
<ul>
<li>Community engagement and recognition</li>
<li>Roadmaps and project planning</li>
<li>Governance structures</li>
<li>Funding and sponsorship options</li>
<li>Sunsetting projects responsibly</li>
</ul>
</div>

<div class="col">
<h3>Next steps</h3>
<p>Key areas for project growth and sustainability:</p>
<ol>
<li><a href="{{ site.baseurl }}/growing/#governance">Establish clear governance</a></li>
<li><a href="{{ site.baseurl }}/starting/releasing/#credit-management">Recognize contributors</a></li>
<li><a href="{{ site.baseurl }}/maintaining/github-process/#milestones">Plan with roadmaps</a></li>
<li><a href="{{ site.baseurl }}/growing/#sponsorships">Explore funding options</a></li>
<li><a href="{{ site.baseurl }}/growing/#succession">Plan for the future</a></li>
</ol>
</div>

<div class="col">
<h3>Note</h3>
<p>Some sections in this category are still being developed. The existing content provides a foundation, and we're working on expanding guidance for governance, funding, succession planning, and project sunsetting.</p>
</div>
</div>
283 changes: 202 additions & 81 deletions index.md
Original file line number Diff line number Diff line change
@@ -1,103 +1,224 @@
---
page: introduction
title: Introduction
title: Open Source Best Practices
description: Guidance for every stage of your open source project.
nav: Home
group: navigation
weight: 1
layout: default
subnav:
- title: Introduction
tag: intro
- title: Why OSS?
tag: why-oss
- title: OSS for Agencies
tag: agencies
- title: Open Source vs. Open Process
tag: process
- title: Contributing to this guide
tag: contributing
redirect_from:
- /docs/
- /docs/index.html
updated: 25 November 2019
---

<div class="toc">
<div class="docs-section">
<header>
<h2>Table of Contents</h2>
<h1>Open Source Best Practices</h1>
<p>Welcome! This guide helps you build and maintain healthy open source projects.<br>
Choose the path that best fits where you are today:</p>
</header>

<div class="col">
<h3><a href="{{ site.baseurl }}#top">Home</a></h3>
<ul>
<li><a href="{{ site.baseurl }}#intro">Introduction</a></li>
<li><a href="{{ site.baseurl }}#why-oss">Why OSS?</a></li>
<li><a href="{{ site.baseurl }}#agencies">OSS for Agencies</a></li>
<li><a href="{{ site.baseurl }}#process">Open Source vs. Open Process</a></li>
<li><a href="{{ site.baseurl }}#contributing">Contributing to this guide</a></li>
</ul>
</div>
<div class="path-cards">
<div class="path-card primary">
<h2>🚀 Starting Your First Project</h2>
<p>New to open source? Get your project off to a great start with these essentials:</p>
<ul>
<li><a href="{{ site.baseurl }}/starting/community/#readme">Set up your README and license</a></li>
<li><a href="{{ site.baseurl }}/starting/community/#contributing">Add a Code of Conduct and contribution guidelines</a></li>
<li><a href="{{ site.baseurl }}/starting/releasing/#release-process">Plan for your first release</a></li>
</ul>
<div class="path-cta">
<a href="{{ site.baseurl }}/starting/" class="btn-primary">Explore the full <strong>Starting or Releasing a Project</strong> section »</a>
</div>
</div>

<div class="col">
<h3><a href="{{ site.baseurl }}/releasing/#top">Releasing Code</a></h3>
<ul>
<li><a href="{{ site.baseurl }}/releasing/#naming">Naming</a></li>
<li><a href="{{ site.baseurl }}/releasing/#licensing">Licensing</a></li>
<li><a href="{{ site.baseurl }}/releasing/#client-permissions">Client Permissions</a></li>
<li><a href="{{ site.baseurl }}/releasing/#choosing-tools">Choosing Tools</a></li>
<li><a href="{{ site.baseurl }}/releasing/#accessibility">Accessibility</a></li>
<li><a href="{{ site.baseurl }}/releasing/#security">Security</a></li>
<li><a href="{{ site.baseurl }}/releasing/#release-process">Release Process</a></li>
<li><a href="{{ site.baseurl }}/releasing/#changelog">Changelog</a></li>
<li><a href="{{ site.baseurl }}/releasing/#credit-management">Credit Management</a></li>
</ul>
</div>
<div class="path-card secondary">
<h2>🔧 Maintaining an Existing Project</h2>
<p>Already have a project? Keep it healthy and growing with these practices:</p>
<ul>
<li><a href="{{ site.baseurl }}/starting/releasing/#changelog">Write useful changelogs</a></li>
<li><a href="{{ site.baseurl }}/maintaining/github-process/#issue-pr-labels">Triage issues and pull requests</a></li>
<li><a href="{{ site.baseurl }}/starting/releasing/#security">Handle security responsibly</a></li>
</ul>
<div class="path-cta">
<a href="{{ site.baseurl }}/maintaining/" class="btn-secondary">Explore the full <strong>Maintaining, Supporting, and Enhancing a Project</strong> section »</a>
</div>
</div>

<div class="col">
<h3><a href="{{ site.baseurl }}/maintaining/#top">Maintenance Process</a></h3>
<ul>
<li><a href="{{ site.baseurl }}/maintaining/#maintainers-contributors">Maintainers and Contributors</a></li>
<li><a href="{{ site.baseurl }}/maintaining/#issue-pr-mgmt">Issue and PR Management</a></li>
<li><a href="{{ site.baseurl }}/maintaining/#dotorg-support">WordPress.org Support</a></li>
<li><a href="{{ site.baseurl }}/maintaining/#slack-channel-github-activity">Tracking GitHub activity</a></li>
<li><a href="{{ site.baseurl }}/maintaining/#dslack-channel-dotorg-activity">Tracking WordPress.org activity</a></li>
<li><a href="{{ site.baseurl }}/maintaining/#version-control">Version Control</a></li>
<li><a href="{{ site.baseurl }}/maintaining/#wp-php-mins">WordPress and PHP Minimums</a></li>
</ul>
</div>

<div class="col">
<h3><a href="{{ site.baseurl }}/community/#top">Community</a></h3>
<ul>
<li><a href="{{ site.baseurl }}/community/#readme">Readme</a></li>
<li><a href="{{ site.baseurl }}/community/#code-of-conduct">Code of Conduct</a></li>
<li><a href="{{ site.baseurl }}/community/#contributing">Contributing Guidelines</a></li>
</ul>
</div>
<div class="path-card tertiary">
<h2>📈 Growing and Sustaining</h2>
<p>Looking beyond day-to-day maintenance? Scale your project and community:</p>
<ul>
<li><a href="{{ site.baseurl }}/growing/#governance">Shape governance</a></li>
<li><a href="{{ site.baseurl }}/starting/releasing/#credit-management">Build community and recognition</a></li>
</ul>
<div class="path-cta">
<a href="{{ site.baseurl }}/growing/" class="btn-tertiary">Explore the full <strong>Growing and Sustaining a Project</strong> section »</a>
</div>
</div>

<div class="col">
<h3><a href="{{ site.baseurl }}/github-process/#top">GitHub Process</a></h3>
<ul>
<li><a href="{{ site.baseurl }}/github-process/#issue-pr-labels">Issue and PR labels</a></li>
<li><a href="{{ site.baseurl }}/github-process/#milestones">Milestones</a></li>
<li><a href="{{ site.baseurl }}/github-process/#branching-merging-deploying">Branching, Merging, and Deploying</a></li>
<li><a href="{{ site.baseurl }}/github-process/#documentation">Documentation</a></li>
<li><a href="{{ site.baseurl }}/github-process/#support-levels">Support Levels</a></li>
<li><a href="{{ site.baseurl }}/github-process/#opengraph-image">OpenGraph Image</a></li>
<li><a href="{{ site.baseurl }}/github-process/#dependency-management">Dependency Management</a></li>
<li><a href="{{ site.baseurl }}/github-process/#coding-standards">Coding Standards</a></li>
<li><a href="{{ site.baseurl }}/github-process/#continuous-integration">Continuous Integration</a></li>
</ul>
<div class="path-card reference">
<h2>📚 References and Resources</h2>
<p>Quick access to tools, standards, and examples:</p>
<ul>
<li><a href="{{ site.baseurl }}/references/#tools">Tools we recommend</a></li>
<li><a href="{{ site.baseurl }}/references/#standards">Industry standards</a></li>
<li><a href="{{ site.baseurl }}/references/#examples">Example repositories</a></li>
</ul>
<div class="path-cta">
<a href="{{ site.baseurl }}/references/" class="btn-reference">See the full <strong>References and Resources</strong> section »</a>
</div>
</div>
</div>

<div class="col">
<h3><a href="{{ site.baseurl }}/testing/#top">Testing</a></h3>
<ul>
<li><a href="{{ site.baseurl }}/testing/#critical-flows">Critical Flows and Test Cases</a></li>
<li><a href="{{ site.baseurl }}/testing/#code-coverage">Code Coverage</a></li>
<li><a href="{{ site.baseurl }}/testing/#e2e-testing">E2E testing</a></li>
</ul>
<div class="intro-section">
<h2>About This Guide</h2>
<p>This guide is written with groups releasing smaller-scale open source software in mind. The majority of our open source projects are narrowly-focused extensions to existing ecosystems, such as WordPress plugins or front-end components, and this set of best practices reflects that.</p>

<div class="intro-links">
<p><strong>New to open source?</strong> <a href="{{ site.baseurl }}#intro">Learn why open source matters</a></p>
<p><strong>Want to contribute to this guide?</strong> <a href="{{ site.baseurl }}#contributing">See our contributing guidelines</a></p>
</div>
</div>
</div>

<div class="docs-section">
{% capture introduction %}{% include markdown/Introduction.md %}{% endcapture %}
{{ introduction | markdownify }}
{% capture introduction %}{% include markdown/Introduction.md %}{% endcapture %}
{{ introduction | markdownify }}
</div>

<style>
.path-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin: 2rem 0;
}

.path-card {
background: #f8f9fa;
border: 1px solid #e9ecef;
border-radius: 8px;
padding: 1.5rem;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.path-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}

.path-card.primary {
border-left: 4px solid #007cba;
}

.path-card.secondary {
border-left: 4px solid #28a745;
}

.path-card.tertiary {
border-left: 4px solid #ffc107;
}

.path-card.reference {
border-left: 4px solid #6f42c1;
}

.path-card h2 {
margin-top: 0;
margin-bottom: 1rem;
font-size: 1.25rem;
}

.path-card p {
color: #6c757d;
margin-bottom: 1rem;
}

.path-card ul {
margin-bottom: 1.5rem;
}

.path-card li {
margin-bottom: 0.5rem;
}

.path-cta {
text-align: center;
}

.btn-primary, .btn-secondary, .btn-tertiary, .btn-reference {
display: inline-block;
padding: 0.75rem 1.5rem;
border-radius: 4px;
text-decoration: none;
font-weight: 600;
transition: all 0.2s ease;
}

.btn-primary {
background: #007cba;
color: white;
}

.btn-primary:hover {
background: #005a87;
color: white;
}

.btn-secondary {
background: #28a745;
color: white;
}

.btn-secondary:hover {
background: #1e7e34;
color: white;
}

.btn-tertiary {
background: #ffc107;
color: #212529;
}

.btn-tertiary:hover {
background: #e0a800;
color: #212529;
}

.btn-reference {
background: #6f42c1;
color: white;
}

.btn-reference:hover {
background: #5a32a3;
color: white;
}

.intro-section {
margin-top: 3rem;
padding-top: 2rem;
border-top: 1px solid #e9ecef;
}

.intro-links {
margin-top: 1rem;
}

.intro-links p {
margin-bottom: 0.5rem;
}

@media (max-width: 768px) {
.path-cards {
grid-template-columns: 1fr;
gap: 1rem;
}

.path-card {
padding: 1rem;
}
}
</style>
Loading