17 changes: 17 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[settings]
ID = "cncf-contribute"

[build]
base = "/"
publish = "website/public/"
command = "go run mage.go Deploy"

[build.environment]
HUGO_VERSION = "0.79.0"
HUGO_ENV = "production"

[context.branch-deploy]
command = "go run mage.go DeployPreview"

[context.deploy-preview]
command = "go run mage.go DeployPreview"
3 changes: 3 additions & 0 deletions website/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
public/
go.local.mod
go.sum
12 changes: 12 additions & 0 deletions website/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM klakegg/hugo:0.79.0-ext-alpine

# Cache go modules
WORKDIR /tmp/website
COPY website/go.* /tmp/website/
RUN go mod download

WORKDIR /src/website
COPY . /src/

# Copy the resolved go modules since hugo doesn't resolve before using
RUN cp /tmp/website/go.* /src/website/
6 changes: 6 additions & 0 deletions website/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Website

This is the website for [contribute.cncf.io]. Read our [Contributing Guide] for
details on how to edit the site and it's content.

[Contributing Guide]: https://contribute.cncf.io/about/contributing/
84 changes: 84 additions & 0 deletions website/assets/scss/_styles_project.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/*
Extend the theme's styles here
*/

.external-content {
@extend .td-max-width-on-larger-screens;

margin-top: 5em;
margin-left: auto;
margin-right: auto;

h1 {
text-align: center;
}

> pre, > .highlight, > .lead, > h1, > h2, > ul, > ol, > p, > blockquote, > dl dd, .footnotes, > .alert {
max-width: initial;
}
}

#hero {
margin-top: 8em;

p {
font-size: 2em;
font-weight: bold;
}
a {
color: white;

&:hover {
color: $yellow;
}
}
}

// Let us put two same color sections next to each other without extra space
.td-default main .section-group section ~ section {
padding-top: 0;
}

.td-default main .section-group section:first-of-type {
padding-top: 5rem;
}

// Default flexgrids to center their content evenly
.td-main {
.row {
justify-content: space-evenly;
}
}

// Fix link contrast
.td-box--primary, .td-box--secondary, .td-box--dark {
a, p > a {
color: $light;

&:hover{
color: $yellow;
}
}
}

section .content {
flex-grow: 1
}

footer {
min-height: unset;
overflow: visible;

.order-sm-2.text-center {
text-align: left !important;
}

&.py-5 {
padding-top: 1em !important;
padding-bottom: 0em !important;
}

.py-2 {
padding: 0 !important;
}
}
11 changes: 11 additions & 0 deletions website/assets/scss/_variables_project.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
Add styles or override variables from the theme here.
*/

$orange: #BA5A31;
$yellow: #f8e21d;
$light: #D3F3EE;
$secondary: $orange;
$link-hover-color: $orange
234 changes: 234 additions & 0 deletions website/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
baseURL = "/"
title = "CNCF Contributors"

enableRobotsTXT = true

# Hugo allows theme composition (and inheritance). The precedence is from left to right.
theme = ["docsy"]

# Will give values to .Lastmod etc.
enableGitInfo = true

ignoreFiles = ["LICENSE"]

# Language settings
contentDir = "content"
defaultContentLanguage = "en"
defaultContentLanguageInSubdir = false
# Useful when translating.
enableMissingTranslationPlaceholders = true

disableKinds = ["taxonomy", "taxonomyTerm"]

# Highlighting config
pygmentsCodeFences = true
pygmentsUseClasses = false
# Use the new Chroma Go highlighter in Hugo.
pygmentsUseClassic = false
#pygmentsOptions = "linenos=table"
# See https://help.farbox.com/pygments.html
pygmentsStyle = "tango"

[module]
# Replacements are directly configured in go.mod

[[module.mounts]]
source = "content"
target = "content"

[[module.mounts]]
source = "../CHARTER.md"
target = "content/about/charter.md"

[[module.mounts]]
source = "static"
target = "static"

[[module.mounts]]
source = "layouts"
target = "layouts"

[[module.mounts]]
source = "themes/docsy/layouts/docs"
target = "layouts/about"

[[module.mounts]]
source = "themes/docsy/layouts/docs"
target = "layouts/contributors"

[[module.mounts]]
source = "themes/docsy/layouts/docs"
target = "layouts/maintainers"

[[module.mounts]]
source = "data"
target = "data"

[[module.mounts]]
source = "assets"
target = "assets"

[[module.mounts]]
source = "i18n"
target = "i18n"

[[module.mounts]]
source = "archetypes"
target = "archetypes"

[[module.imports]]
path = "github.com/cncf/contribute"

[[module.imports.mounts]]
source = "content/contributors"
target = "content/contributors/"

# Configure how URLs look like per section.
[permalinks]
blog = "/:section/:year/:month/:day/:slug/"

# Image processing configuration.
[imaging]
resampleFilter = "CatmullRom"
quality = 75
anchor = "smart"

[services]
[services.googleAnalytics]
# Comment out the next line to disable GA tracking. Also disables the feature described in [params.ui.feedback].
#id = "UA-00000000-0"

# Language configuration

[languages]
[languages.en]
title = "CNCF Contributors"
description = "Contribute to CNCF projects"
languageName = "English"
# Weight used for sorting.
weight = 1

[markup]
[markup.goldmark]
[markup.goldmark.renderer]
hardWraps = false
unsafe = true
[markup.highlight]
# See a complete list of available styles at https://xyproto.github.io/splash/docs/all.html
style = "tango"
# Uncomment if you want your chosen highlight style used for code blocks without a specified language
# guessSyntax = "true"

# Everything below this are Site Params

[params]
copyright = "The CNCF Authors"

# First one is picked as the Twitter card image if not set on page.
# images = ["images/project-illustration.png"]

# Menu title if your navbar has a versions selector to access old versions of your site.
# This menu appears only if you have at least one [params.versions] set.
version_menu = "Releases"

# Flag used in the "version-banner" partial to decide whether to display a
# banner on every page indicating that this is an archived version of the docs.
# Set this flag to "true" if you want to display the banner.
archived_version = false

# The version number for the version of the docs represented in this doc set.
# Used in the "version-banner" partial to display a version number for the
# current doc set.
version = "0.0"

# A link to latest version of the docs. Used in the "version-banner" partial to
# point people to the main doc site.
url_latest_version = "https://example.com"

# Google Custom Search Engine ID. Remove or comment out to disable search.
gcs_engine_id = "011737558837375720776:fsdu1nryfng"

# Enable Algolia DocSearch
algolia_docsearch = false

# Enable Lunr.js offline search
offlineSearch = false

# Enable syntax highlighting and copy buttons on code blocks with Prism
prism_syntax_highlighting = false

# Repository configuration (URLs for in-page links to opening issues and suggesting changes)
[params.github]
repo = "https://github.com/cncf/sig-contributor-strategy"
branch = "website"
subdir = "website"

[params.github.contributors]
repo = "https://github.com/carolynvs/cncf-contribute"
branch = "website"


# User interface configuration
[params.ui]
# Enable to show the side bar menu in its compact state.
sidebar_menu_compact = false
# Set to true to disable breadcrumb navigation.
breadcrumb_disable = true
# Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled)
sidebar_search_disable = false
# Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top nav bar
navbar_logo = false
# Set to true to disable the About link in the site footer
footer_about_disable = true

# Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events.
# This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set.
# If you want this feature, but occasionally need to remove the "Feedback" section from a single page,
# add "hide_feedback: true" to the page's front matter.
[params.ui.feedback]
enable = true
# The responses that the user sees after clicking "yes" (the page was helpful) or "no" (the page was not helpful).
yes = 'Glad to hear it! Please <a href="https://github.com/cncf/sig-contributor-strategy/issues/new">tell us how we can improve</a>.'
no = 'Sorry to hear that. Please <a href="https://github.com/cncf/sig-contributor-strategy/issues/new">tell us how we can improve</a>.'

# Adds a reading time to the top of each doc.
# If you want this feature, but occasionally need to remove the Reading time from a single page,
# add "hide_readingtime: true" to the page's front matter
[params.ui.readingtime]
enable = false

[params.links]
# End user relevant links. These will show up on left side of footer and in the community page if you have one.
#[[params.links.user]]
# name = "mailing list"
# url = "https://lists.cncf.io/g/cncf-sig-contributor-strategy"
# icon = "fa fa-envelope"
# desc = "Discussion and help from your fellow users"
#[[params.links.user]]
# name ="Twitter"
# url = "https://example.org/twitter"
# icon = "fab fa-twitter"
# desc = "Follow us on Twitter to get the latest news!"
#[[params.links.user]]
# name = "Stack Overflow"
# url = "https://example.org/stack"
# icon = "fab fa-stack-overflow"
# desc = "Practical questions and curated answers"

# Developer relevant links. These will show up on right side of footer and in the community page if you have one.
[[params.links.developer]]
name = "GitHub"
url = "https://github.com/cncf/sig-contributor-strategy"
icon = "fab fa-github"
desc = "Development takes place here!"
[[params.links.developer]]
name = "Slack"
url = "https://cloud-native.slack.com/archives/CT6CWS1JN"
icon = "fab fa-slack"
desc = "Chat with other project developers"
[[params.links.developer]]
name = "Developer mailing list"
url = "https://lists.cncf.io/g/cncf-sig-contributor-strategy"
icon = "fa fa-envelope"
desc = "Discuss development issues around the project"

15 changes: 15 additions & 0 deletions website/content/_index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
title: "CNCF Contributors"
linkTitle: "CNCF Contributors"
---

{{< blocks/cover image_anchor="top" height="full" color="orange" >}}
<div class="mx-auto" id="hero">
<p>
<a href="/maintainers/">I want to be or am a maintainer <i class="fa fa-chevron-circle-right"></i></a>
</p>
<p>
<a href="/contributors/">I want to be or am a contributor <i class="fa fa-chevron-circle-right"></i></a>
</p>
</div>
{{< /blocks/cover >}}
137 changes: 137 additions & 0 deletions website/content/about/_index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
---
title: About SIG Contributor Strategy
linkTitle: About
type: single
layout: single
weight: 10
menu:
main:
weight: 10
---


{{< blocks/cover title="About SIG Contributor Strategy" image_anchor="bottom" height="min" >}}


{{< /blocks/cover >}}

{{% blocks/lead color="primary" %}}

SIG Contributor Strategy is responsible for contributor experience,
sustainability, governance, and openness guidance to help CNCF community groups
and projects with their own contributor strategies for a healthy project.

We are a CNCF Special Interest Group that advises the Technical Oversight
Committee and CNCF projects on strategies related to building, scaling, and
retaining contributor communities, including governance, communications,
operations, and tools. We want to help grow flourishing, sustainable communities
with smooth journeys throughout their CNCF project lifecycle.

[Read our Charter](/about/charter/)

{{% /blocks/lead %}}

<div class="section-group">
{{% blocks/lead color="dark" %}}
The mission of CNCF SIG Contributor Strategy is to collaborate on strategies
related to building, scaling, and retaining contributor communities, including
(people) governance, communications, operations, and tools. We want to help grow
flourishing, sustainable communities with smooth journeys throughout their CNCF
project lifecycle.
{{% /blocks/lead %}}

{{< blocks/section color="dark" >}}

{{% blocks/feature icon="fas fa-hands" title="Intentional Space" %}}
Host a maintainers circle omprised of those interested in growing their projects
and joining fellow maintainers in related cross project discussions.
{{% /blocks/feature %}}

{{% blocks/feature icon="fas fa-assistive-listening-systems" title="Listen and Advise" %}}
Create informational and training resources including guides, tutorials and
templates of best practices, trade-offs, strategies, building and participating
in scalable contributor communities.
{{% /blocks/feature %}}
{{< /blocks/section >}}

{{< blocks/section color="dark" >}}
{{% blocks/feature icon="fas fa-tasks" title="Evaluate and Foster" %}}
Assist the CNCF Technical Oversight Committee with assessments and due diligence
of prospective new projects by developing community graduation criteria check
points for rolling feedback and guidance.
{{% /blocks/feature %}}

{{% blocks/feature icon="fas fa-comments" title="Educate and Engage" %}}
Provide guidance to end users on how to engage with contributors and vice
versa.
{{% /blocks/feature %}}
</div>

{{< /blocks/section >}}

{{< blocks/section color="secondary" >}}
{{% blocks/feature icon="fa-gavel" title="Governance" url="governance/" %}}
Looking to improve your project's governance model? We've got you covered!

{{% /blocks/feature %}}


{{% blocks/feature icon="fas fa-heartbeat" title="Contributor Growth" url="contributor-growth/" %}}
Need more contributors? Maybe a few good maintainers? We can help you
sustainably grow your contributor base, and provide tips for doing so without
burning out.

{{% /blocks/feature %}}


{{% blocks/feature icon="fas fa-handshake" title="Maintainers Circle" url="maintainers-circle/" %}}
Connect with other maintainers, share best practices, commiserate and grow.

{{% /blocks/feature %}}


{{< /blocks/section >}}

{{< blocks/section color="light" >}}
{{% blocks/feature icon="fas fa-video" title="Meetings" %}}
We meet every 2nd and 3rd Thursday at 10:30am PT (USA Pacific, see your timezone [here](https://time.is/compare/1030AM_in_PT)):

<div class="text-left">

- Calendar invites are sent to the [mailing list]. Once you join, you won't
automatically have the invite on your calendar. You can get it from a [past
message here](https://lists.cncf.io/g/cncf-sig-contributor-strategy/message/1)
- [Meeting minutes and agenda](https://bit.ly/cncf-contribstrat-agenda)
- Meeting Link: [zoom.us/my/cncfsigcontributorstrategy](https://zoom.us/my/cncfsigcontributorstrategy)

</div>

[mailing list]: https://lists.cncf.io/g/cncf-sig-contributor-strategy
{{% /blocks/feature %}}

{{% blocks/feature icon="fas fa-envelope" title="Mailing List"
url="https://lists.cncf.io/g/cncf-sig-contributor-strategy" url_text="Sign Up" %}}
Keep up-to-date on new templates, advisory guides, and what we are planning next.
{{% /blocks/feature %}}

{{< /blocks/section >}}

{{< blocks/section color="primary" >}}

## Leadership

- Paris Pittman ([@parispittman](https://github.com/parispittman)), Google
- Josh Berkus ([@jberkus](https://github.com/jberkus)), Red Hat
- Stephen Augustus ([@justaugustus](https://github.com/justaugustus)), VMware

{{< /blocks/section >}}

{{< blocks/section color="secondary" >}}

- [Governance](governance/)
- [Contributor Growth](contributor-growth/)
- [Maintainer's Circle](maintainers-circle/)

## Working Groups

{{< /blocks/section >}}
140 changes: 140 additions & 0 deletions website/content/about/contributing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
---
title: "Contributing Guide"
description: >
How to contribute to our website
---

We use [Hugo](https://gohugo.io/) to format and generate our website, the
[Docsy](https://github.com/google/docsy) theme for styling and site structure,
and [Netlify](https://www.netlify.com/) to manage the deployment of the site.
Hugo is an open-source static site generator that provides us with templates,
content organisation in a standard directory structure, and a website generation
engine. You write the pages in Markdown (or HTML if you want), and Hugo wraps
them up into a website.

All submissions, including submissions by project members, require review. We
use GitHub pull requests for this purpose. Consult
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
information on using pull requests.

## Prerequisites

* [Go] 1.15+
* [Mage](https://magefile.org) (optional). You can install it by running
`go run mage.go EnsureMage` from this repository and follow any instructions
in the command output.

We use Mage (instead of make) to automate local development tasks. If you
do not have mage installed, you can run tasks using Go directly: `go run mage TARGET`.
With Mage installed, you can run `mage TARGET`.

Run `mage -l` to see the available targets:

```console
$ mage -l
This is a magefile, and is a "makefile for go". See https://magefile.org/

Targets:
build Compile the website to website/public.
ensureMage Ensure Mage is installed and on the PATH.
hugo Use hugo in a docker container.
preview* Run a local server to preview the website and watch for changes.
```

[Go]: https://golang.org/doc/install

## Content Organization

The main website and the "Maintainers" section is in the [SIG
Contributor Strategy repository].

1. Clone the [SIG Contributor Strategy repository].
1. Follow the steps to [Preview your changes locally](#preview-your-changes-locally).
1. Optionally clone the [cncf/contribute repository] in a directory
next to the SIG Contributor Strategy repository to edit content
in the "Contributors" section.

For example, if you have cloned the Contributor Strategy repo to
`~/src/sig-contributor-strategy`, clone the CNCF Contribute repo to
`~/src/contribute`.

If you need to clone the CNCF Contribute repository elsewhere, set an environment
variable named `CONTRIBUTE_REPO` to the path where it is cloned. For example,
`export CONTRIBUTE_REPO=../cncf-contribute`.

## Quick start with Netlify

Here's a quick guide to updating the docs. It assumes you're familiar with the
GitHub workflow, and you're happy to use the automated preview of your doc
updates:

1. Fork the [SIG Contributor Strategy repository] on GitHub.
1. Make your changes and send a pull request (PR).
1. If you're not yet ready for a review, add "WIP" to the PR name or create a
Draft Pull Request to indicate it's a work in progress.

If you are creating content that isn't ready to be published to the site, set
`draft: true` in the page's frontmatter. This allows you to start a page and
collaborate on it with others after your pull request is merged, without having
it go live on the real website. Drafts are not visible on the Netlify
preview.

1. Wait for the automated PR workflow to do some checks. When it's ready,
you should see a comment like this: **deploy/netlify — Deploy preview ready!**
1. Click **Details** to the right of "Deploy preview ready" to see a preview
of your updates.
1. Continue updating your doc and pushing your changes until you're happy with
the content.
1. When you're ready for a review, add a comment to the PR, and remove any
"WIP" markers.

## Update a single page

If you've just spotted something you'd like to change while using the docs,
Docsy has a shortcut for you:

1. Click **Edit this page** in the top right hand corner of the page.

1. If you don't already have an up to date fork of the project repo, you are
prompted to get one - click **Fork this repository and propose changes** or
**Update your Fork** to get an up to date version of the project to edit. The
appropriate page in your fork is displayed in edit mode.

1. Follow the rest of the [Quick start with Netlify](#quick-start-with-netlify)
process above to make, preview, and propose your changes.

## Preview your changes locally

If you want to run a Docker container to preview your changes as you work:

1. [Install Docker](https://docs.docker.com/get-docker/) and [Go].
1. Fork the [SIG Contributor Strategy repository] into your own project, then
create a local copy using `git clone`.
1. Run `mage preview` to preview the site. When the site is ready, it will open
your web browser to http://localhost:1313/. Now that you're serving your site
locally, Hugo will watch for changes to the content and automatically refresh
your site.
1. Continue with the usual GitHub workflow to edit files, commit them, push the
changes up to your fork, and create a pull request.

If you need to see the Hugo output, run `mage logs`.

## Creating an issue

If you've found a problem in the docs, but you're not sure how to fix it
yourself, please create an issue in the [SIG Contributor Strategy repository].
You can also create an issue about a specific page by clicking the **Create
Issue** button in the top right hand corner of the page.

## Useful resources

* [Docsy user guide](https://www.docsy.dev/docs/): All about Docsy, including
how it manages navigation, look and feel, and multi-language support.

* [Hugo documentation](https://gohugo.io/documentation/): Comprehensive reference for Hugo.

* [Github Hello World!](https://guides.github.com/activities/hello-world/): A
basic introduction to GitHub concepts and workflow.

[SIG Contributor Strategy repository]: https://github.com/cncf/sig-contributor-strategy
[cncf/contribute repository]: https://github.com/cncf/contribute
Binary file added website/content/about/featured-background.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions website/content/about/working-groups/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
title: Working Groups
---
31 changes: 31 additions & 0 deletions website/content/about/working-groups/contributor-growth.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: Contributor Growth Working Group
linkTitle: Contributor Growth
type: single
url: /about/contributor-growth/
---


{{% blocks/lead color="primary" %}}
# Contributor Growth Working Group

We are interested in assisting CNCF projects with sustainably growing their
contributor base.

{{% /blocks/lead %}}

{{% blocks/section color="white" %}}

<div class="content">

Meetings take place every 1st and 3rd Tuesday at 2pm PT. (USA Pacific, see your timezone [here](https://time.is/compare/200PM_in_PT)):

* [Zoom](https://zoom.us/my/cncfsigcontributorstrategy?pwd=TnI0WU9Eb2I1RlRWdkl1R0k1WkZXUT09) passcode: `77777`
* [Meeting Minutes and Agenda](https://docs.google.com/document/d/1Kx7tZv5wTXQ7uRKxn5d9d2wLsI3Q3Q51A0i06nLvtdI/edit)

Discussion happens on the [mailing list] or on #sig-contributor-strategy on [Slack].

[mailing list]: https://lists.cncf.io/g/cncf-sig-contributor-strategy
[Slack]: https://slack.cncf.io/

{{% /blocks/section %}}
31 changes: 31 additions & 0 deletions website/content/about/working-groups/governance.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: Governance Working Group
linkTitle: Governance
type: single
url: /about/governance/
---


{{% blocks/lead color="primary" %}}
# Governance Working Group

We aim to assist all CNCF projects with implementing good open source governance
practices.

{{% /blocks/lead %}}

{{% blocks/section color="white" %}}

<div class="content">

Meetings take place every 1st and 3rd Tuesday at 2pm PT. (USA Pacific, see your timezone [here](https://time.is/compare/1030AM_in_PT)):

* [Zoom](https://zoom.us/my/cncfsigcontributorstrategy?pwd=TnI0WU9Eb2I1RlRWdkl1R0k1WkZXUT09) passcode: `77777`
* [Meeting Minutes and Agenda](https://docs.google.com/document/d/1P9tQgCM6OwDHd1F8UnWuauL4KDVTMTp49_n64_w8nrs/edit)

Discussion happens on the [mailing list] or on #sig-contributor-strategy on [Slack].

[mailing list]: https://lists.cncf.io/g/cncf-sig-contributor-strategy
[Slack]: https://slack.cncf.io/

{{% /blocks/section %}}
141 changes: 141 additions & 0 deletions website/content/about/working-groups/maintainers-circle.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
---
title: "Maintainers Circle Working Group"
linkTitle: "Maintainers Circle"
type: single
url: /about/maintainers-circle
---

{{% blocks/lead color="primary" %}}
# Maintainers Circle

Connect with other maintainers, share best practices, commiserate and grow.

{{% /blocks/lead %}}

{{% blocks/section color="dark" %}}

Once a month, we welcome you to a maintainers circle: a peer group that will
meet with scheduled topics, ample discussion, and networking time for fellow
reviewers, approvers, maintainers, and other core leaders of CNCF projects. This
is a time for you to stay connected, learn from and with each other, and discuss
topics that are close to you. We'll have a 100 person capacity for each event
and depending on demand, may re-run the session. The capacity is set to make
sure everyone that wants an interactive experience vs a lecture can have one.

The only contract of the members of each circle is to abide by the CNCF Code of
Conduct, be kind, open as you'd like, and committed to hearing others out.
Everyone will have a chance to participate in whatever activity is set forth in
that meeting.

{{% /blocks/section %}}

{{% blocks/section color="secondary" %}}

# Goals

- Collaborate on strategic issues; tackling size:L OSS challenges together
- Listen (to build better programs, relationships, and sustainability efforts)
- Share best practices
- Participate in peer coaching and seek guidance
- Highlight successes

{{% /blocks/section %}}

{{% blocks/section color="white" %}}
# Who is a maintainer?

<div class="text-left">
There are a lot of meanings within the community. A maintainer is anyone
recognized as a maintainer or in a core role of a CNCF project by that project's
standards and governance. You can maintain code, docs, policy and more, but you
are making decisions.

Relevant CNCF project examples:
- [containerd](https://github.com/containerd/project/blob/master/GOVERNANCE.md#maintainership)
lists maintainers and code reviewers as key role
- [Prometheus](https://github.com/prometheus/prometheus/blob/master/MAINTAINERS.md)
lists maintainers in a MAINTAINERS.md file
- [Kubernetes](https://github.com/kubernetes/community/blob/master/community-membership.md)
doesn't use the word maintainer but uses an OWNERs file method for ownership by
listing reviewers and approvers

We recognize the term does not apply across the board perfectly. Maintainers
is an umbrella succinct term that covers many of your roles and inclusivity.

Important note: CNCF has a pool of listed maintainers for each project that vote
on behalf of their project in TOC elections. Some projects have more maintainer
roles than this and the Circle welcomes all decision makers.
</div>

{{% /blocks/section %}}

{{< blocks/section color="primary" >}}

{{% blocks/feature title="Meetings" icon="fas fa-video" %}}

<div class="text-left">

Every 3 weeks on:
Thursdays, 10:30am PT / 06:30pm GMT [Your timezone here](https://time.is/compare/1030AM_17_Dec_2020_in_PT)

*currently displays as sig-contributor-strategy meeting on [CNCF calendar](https://www.cncf.io/calendar/) but will be repurposed for this.
</div>
{{% /blocks/feature %}}

{{% blocks/feature title="Slack" icon="fab fa-slack" %}}
[#maintainers-circle](https://cloud-native.slack.com/archives/C014YQ8CDCG) on [CNCF Slack](https://slack.cncf.io)
{{% /blocks/feature %}}

{{< /blocks/section >}}

{{% blocks/section color="secondary" %}}

# Schedule

<div class="text-left">

December 17, 2020
Thursday, 10:30am PT / 06:30pm GMT [Your timezone here](https://time.is/compare/1030AM_17_Dec_2020_in_PT)

**Registration** is an emoji reaction to the invite on the announcement thread in
#maintainer-circle

**First half + breakouts:**
In 2017, Dorothy Howard spoke at SciPy on the research and effects of burnout on
FOSS maintainers. She follows up with us on what’s happened since conducting
new and ongoing qualitative research and interviews with maintainers on
burnout, mental health, and software sustainability sponsored by the Ford/Sloan
Foundations and the NSF. After a 20minute talk, Dorothy will seed the audience
questions about burnout as you break out into small breakout rooms with your
fellow maintainers in a 15minute session.

**Second half + breakouts:**
We'll have a fireside chat with Aaron Crickenberger, Emeritus Kubernetes
Steering Committee Member, co-chair of SIG-Testing, and subproject owner in
multiple SIGs, about his experiences with burnout. It's been a 5 year journey
with Kubernetes; we'll hear some of the realistic and honest ways Aaron tackles
time management and self care while steering huge ships. In this 15 minute
session, you can ask questions live to Aaron as a group, and then breakout
into final small groups of the session.

</div>
{{% /blocks/section %}}

{{% blocks/section color="white" %}}
## General Circle Structure

<div class="text-left">

* :35 - meeting kicks off with a welcome, announcements, and how breakouts work
* :40-:00 - first speaker (academic, expert, other OSS maintainer)
* :00-:20 - first breakout session (max: 10 rooms, 20 people in each) with a round of short intros [name/project name] before discussion
* :25-:45 - second speaker (most likely a CNCF maintainer)
* :45-:05 - second breakout session
* :10-:15 - wrap up

To suggest future topics, file an issue in our repo. If you have something to
share with the group, reach out to us on slack directly
[#sig-contributor-strategy](https://cloud-native.slack.com/archives/CT6CWS1JN).

</div>
{{% /blocks/section %}}
Binary file added website/content/featured-background.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions website/content/maintainers/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

---
title: "Project Guidance"
linkTitle: "Maintainers"
section: about
weight: 30
menu:
main:
weight: 30
---
8 changes: 8 additions & 0 deletions website/content/maintainers/community/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: "Community"
linkTitle: "Community"
weight: 2
description: >
Tips for managing your project's community
---

Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
# Contributor Growth: Project Health Measurement
---
title: "Project Health Measurement"
linkTitle: "Project Health"
date: 2020-09-08
description: >
How to measure your project's health.
---

While popularity measurements, like stars / forks, might be interesting, they
don't provide much real insight into project health. We encourage projects to
Expand Down
7 changes: 7 additions & 0 deletions website/content/maintainers/github/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: "GitHub"
linkTitle: "GitHub"
weight: 1
description: >
Tips for managing your GitHub repositories
---
217 changes: 217 additions & 0 deletions website/content/maintainers/github/issue-labels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
---
title: "Issue Labels for New Contributors"
linkTitle: "Issue Labels"
date: 2020-09-29
description: >
Curate your issues and apply labels that attract new contributors.
---

A great way to encourage new contributors is to curate issues that are suitable
for people new to the project and make them easy to find. There are two common
labels that people search for when looking to contribute to a new project:
**good first issue** and **help wanted**.

This document provides guidance for identifying issues for new contributors,
adding context to the issue so someone new has enough information to implement
it without asking a bunch of questions, and how to reduce the overhead of
maintaining a set of issues for new contributors.

* [Labels](#labels)
* [Help Wanted](#help-wanted)
* [Good First Issue](#good-first-issue)
* [Grooming Issues](#grooming-issues)
* [Candidate Issues](#candidate-issues)
* [Reviewing Pull Requests from New Contributors](#reviewing-pull-requests-from-new-contributors)

# Labels

We encourage you to stick with the well-defined labels "good first issue" and
"help wanted". People unfamiliar with your project look for these labels, and
efforts to increase participation from new contributors, such as [First Timers
Only] or [Open Sauced], rely on standard labels to identity issues.

## Help Wanted

These issues should be suitable for someone who has either contributed to the project
before, or an experienced developer who is comfortable navigating a new codebase. Items
marked with the "help wanted" label should:

- **Low Barrier to Entry**

It should be tractable for new contributors. Documentation on how that type of
change should be made should already exist.

- **Clear Task**

The task is agreed upon and does not require further discussions in the
community. Call out if that area of code is untested and requires new
fixtures. When possible point to existing code that serves as an example
of how to implement the change.

API / CLI behavior is decided and included in the original issue, for example:
_"The new command syntax is `svcat unbind NAME [--orphan] [--timeout 5m]`"_,
with expected input validations, output and error handling defined.

- **Medium to Low Priority**

Select issues that aren't in key pathways, or must be done quickly. You don't
wan to put effort into grooming these issues, then end up having to do it
yourself because it must be done soon.

- **Up-To-Date**

Regularly review these issues and make sure that they haven't already been
implemented, aren't necesesary anymore, that the suggested solution or design
is still appropriate, etc.

## Good First Issue

Items marked with the "good first issue" label are intended for **first-time
contributors**. After a contributor has completed 1-2 "good first issue" items,
they should be ready to move on to "help wanted" items, saving remaining "good
first issue" items for other new contributors.

Reviewers should keep an eye out for pull requests for these issues and shepherd
them through the pull request process. Let them know what the next step is, and
_proactively_ call out when there is a problem and how to fix it. This makes new
contributors feel welcome, valued, and assures them that they will have an extra
level of help with their first contribution.

❗️ **New contributors should not be left to find a reviewer, ping for reviews or
bump, understand why the CLA/DCO check failed, identify that their build failed
due to a flake, etc.**

A good test for "good first issue" is that a new contributor should be able to
claim and address the issue, submitting an acceptable pull request without
requiring that they ask for help. Part of an issue's suitability comes from the
nature of the issue itself, but the rest is determined by how much context you
provide in the issue so that the new contributor can be successful.

Items marked with the "good first issue" label meet all the criteria of "help
wanted" and also:

- **No Barrier to Entry**

The task is something that a new contributor can tackle without advanced
setup, or domain knowledge.

- **Provides Context**

If background knowledge is required, this should be explicitly mentioned and a
list of suggested readings included.

- **Solution Explained**

The recommended solution is clearly described in the issue.

- **Gives Examples**

Link to examples of similar implementations so new contributors have a
reference guide for their changes.

- **Identifies Relevant Code**

The relevant code and tests to be changed are linked in the issue.

- **Ready to Test**

There are existing tests that can be modified, or existing test cases suitable
for copying. If the area of code doesn’t have tests, before labeling the
issue, add a test fixture. This prep often makes a great help wanted task!


# Grooming Issues

Below are explanations of what to look for when grooming your issue queue.
Usually issues have just enough information to make sense for another maintainer
or someone familiar with the project to understand the desired change. What's
usually lacking is:

* Clearly explain to someone not involved with the project the desired change.
If it is a new CLI command, an example of the command, its output and how it
should validate input and handle errors would be very helpful.

* Where is the code that should be changed?

* Is there existing code or tests that can be used as an example?

* Links to documenation in the development.md or contributing.md file explaining
how to make the change. For example, if the change requires modifying the
website, it would really help to link to how to preview it locally.

* Relevant links to other issues, documenation for related features or concepts.

Not every issue requires that level of grooming. Honestly, by the time I write
that out for a simple issue I could have implemented it myself. However the
point isn't to have the maintainers implement all the issues that can be quickly
articulated; it is to assist a new contributor in becoming familiar with your
project and provide them with a positive experience so they are willing to
contribute again.

## Candidate Issues

Do not apply the label to an issue without first editing it to add context.
Since it takes time to prepare an issue, we suggest creating one more label that
indicates that the item is a good candidate for new contributors. The label can
be named whatever makes sense to other maintainers, for example "regroom" or
"new contrib candidate".

Create an issue in the moment and apply that label to indicate that with extra
information, it can be turned into a "good first issue" or "help wanted". Then
at regular intervals filter your issues by that label and update them. This is
also really helpful when someone asks for a good first issue and you don't have
any at the moment, you can quickly identify a candidate and make one for them.

# Reviewing Pull Requests from New Contributors

We encourage our more experienced members to help new contributors. This helps
grow and maintain a kind, inclusive community and eventually should increase
your contributor base.

The following suggestions go a long way toward preventing "drive-by" pull
requests, and ensure that our investment in new contributors is rewarded by them
coming back and becoming regulars.

Provide extra assistance during reviews on `good first issue` pull requests:
- Answer questions and identify useful docs.

- Offer advice such as how to reproduce the issue on a local dev environment,
or how to take advantage of helper functions and libraries that they may
not be aware of.

- Help new contributors learn enough about the project, setting up their
environment, running tests, and navigating this area of the code so that they
can tackle a related `help wanted` issue next time.

If you make someone feel like a part of our community, that it's safe to ask
questions, that people will let them know the rules/norms, that their
contributions are helpful and appreciated... they will stick around! 🌈

- Encourage new contributors to seek help on the appropriate slack channels,
introduce them, and include them in your conversations.

- Invite them to your project's meetings, introduce them when they attend and
give them a chance to participate.

- Give credit to new contributors so that others get to know them, _"Hey, would
someone help give a second LGTM on @newperson's first PR on chocolate
bunnies?"_. Mention their work in Slack or during a meeting, thank them on
twitter, etc.

- Use all the emoji in your approve or lgtm comment. 💖 🚀

- Acknowledge and thank them for submitting their first pull request and then
let them know that you are here to help.

- Suggest a related `help wanted` so that can build up experience in an area.

- People are more likely to continue contributing when they know what to expect,
what is an acceptable way to ask for people for a review, nudge things along
when a pull request is stalled. Demonstrate how your project works by helping
move their first pull request along.

- If you have time, let the contributor know that they can DM you with questions
that they aren't yet comfortable asking the wider group.

[First Timers Only]: https://www.firsttimersonly.com/
[Open Sauced]: https://opensauced.pizza/
38 changes: 38 additions & 0 deletions website/content/maintainers/github/templates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: "Templates"
linkTitle: "Templates"
date: 2020-11-07
description: >
Jump start your CNCF project by using our recommended templates
---

We have a [project template] repository that has templates for everything your project needs
to get started and eventually join the CNCF. You can either create a new repository using the repository template or copy just the templates that you require.

## Getting Started

1. Click **Use this template** and create a copy of this repository.

![Green button that says "Use this template"](https://user-images.githubusercontent.com/1368985/95903529-e9c32f00-0d5b-11eb-8723-4369f7c9e044.png)
1. Remove **.github/settings.yml**. This is not a template and contains
configuration specific our repository. You should not keep this file.
1. Customize every [required file](#required-files) and address each TODO item.

### Customize Templates

Each file is a template with instructions to customize the contents for your project.
Most files use comments with TODO to call out where you need to make changes. We recommend
viewing the files in raw or text form so that you can see the comments.

For example in markdown files, we use `<!-- TODO: ... -->` to provide additional
guidance or indicate where action is required but you won't see those comments
when you view the markdown file in GitHub unless you view the raw text.

## Required Files

* [LICENSE](https://github.com/cncf/project-template/blob/main/LICENSE)
* [CONTRIBUTING.md](https://github.com/cncf/project-template/blob/main/CONTRIBUTING.md)
* [README.md](https://github.com/cncf/project-template/blob/main/README.md)

[contrib-strat]: https://github.com/cncf/sig-contributor-strategy/blob/master/README.md
[project template]: https://github.com/cncf/project-template
16 changes: 16 additions & 0 deletions website/content/maintainers/governance/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: "Governance"
linkTitle: "Governance"
weight: 4
description: >
Define an open governance model
---

This directory contains a collection of documents assembled by the Governance
subproject as advice and detailed information about project governance for CNCF
project leaders and managers. Primarily, these documents are intended to answer
"How do I implement the governance requirements specified for a Graduated
project."

There will also be an assortment of other "good governance advice" documents for
projects just willing to improve things in general.
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
# Governance: Leadership Selection
---
title: "Governance: Leadership Selection"
linkTitle: "Leadership Selection"
date: 2020-09-01
weight: 30
---

CNCF does not require its hosted projects to follow any specific governance
model by default. Instead, CNCF specifies that graduated projects need to
"[e]xplicitly define a project governance and committer process." This varied
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
# What Is Governance?
---
title: "Overview"
date: 2020-09-15
weight: 10
---

## What is Goverernance?

Because open source projects are organizations, all projects have governance. Some of governance structures are more *explicit* than others. Some are more *formal* than others. But every project has them.

Expand Down
81 changes: 81 additions & 0 deletions website/content/maintainers/governance/paperwork-checklist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
title: "Checklist for Project Paperwork"
linkTitle: "Paperwork Checklist"
date: 2020-10-21
weight: 20
---

This is a condensed, outline-format checklist of the paperwork requirements to reach the various
[CNCF Graduation Levels](https://github.com/cncf/toc/blob/master/process/graduation_criteria.adoc).
It does not substitute for the full documentation or full requirements, but is a useful quick
reference if your project is planning to join the CNCF or graduate levels.

## Entering Sandbox

* Requirements:
* [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md)
* [Template](https://github.com/cncf/project-template/blob/master/CODE_OF_CONDUCT.md)
* Decide if COC enforcement will be handled by the project or by the CNCF
* CNCF is a good option for young/small projects. They will provide contact.
* If handling it yourself: decide who are the contacts and how to deal with a maintainer being reported, or a contact being reported. Need more than one contact.
* CNCF can provide training in COC report handing, on request by a project
* If the COC enforcement body is your maintainers, then you need to have a policy to escalate to CNCF if the report is against a maintainer.
* Adhere to [CNCF IP Policy](https://github.com/cncf/foundation/blob/master/charter.md#11-ip-policy)
* CONTRIBUTING.md containing basic “how to contribute” ([Harbor example](https://github.com/goharbor/harbor/blob/master/CONTRIBUTING.md))
* [Template](https://github.com/cncf/project-template/blob/master/CONTRIBUTING.md)
* Light project roadmap, at least an easily findable list of TODO items or issues
* LICENSE
* [Template](https://github.com/cncf/project-template/blob/master/LICENSE)
* You need to edit "Copyright [yyyy] [name of copyright owner]".
* Replace [yyyy] with the current year.
* Replace [name of copyright owner] with "The PROJECT Authors", e.g. "The Kubernetes Authors" or "The Helm Authors".
* CNCF strongly [recommends](https://www.cncf.io/blog/2017/02/01/cncf-recommends-aslv2/) Apache 2.0
* Good to Have:
* Governance.md with details about leadership ([CoreDNS example](https://github.com/coredns/coredns/blob/master/GOVERNANCE.md))
* OWNERS.md file ([Helm example](https://github.com/helm/helm/blob/master/OWNERS))
* Explain what is it, how it's used, what needs to be in it and if you can reference another source of truth


## Entering Incubation

* Additional Requirements:
* Governance.md showing the leaders and [how they are selected](https://github.com/cncf/sig-contributor-strategy/blob/master/governance/docs/leadership_selection.md)
* Include full election docs if there are elections
* Governance process must be employer-neutral
* File showing who the end users are
* Implies existence of end-user discussion forum
* Does not have to be 100% public at this stage, the way it does with Graduated
* If it is public, use an ADOPTERS.md file
* Clear versioning scheme ([Harbor example](https://github.com/goharbor/harbor/blob/master/RELEASES.md))
* Implies, but does not require, a release process
* Good To Have:
* Contributor ladder process in CONTRIBUTION_LADDER.md ([Porter example](https://github.com/getporter/porter/blob/main/CONTRIBUTION_LADDER.md))
* Project logo/trademark (CNCF helps with this)


## Applying for Graduation



* Additional Requirements:
* “Committers” from at least 2 organizations.
* This is a complicated requirement.
* Requires recruitment of new contributors/reviewers from outside original project founders
* CII [Best Practices Badge](https://bestpractices.coreinfrastructure.org/)
* This requires meeting many criteria for how the project runs repositories. Requirements are extensive and may take some time to meet.
* 3rd Party Security Audit published ([Envoy example](https://github.com/envoyproxy/envoy#security-audit))
* CNCF arranges the audits
* Explicitly defined project governance and committer process in a governance.md file with references to OWNERS.md files
* Includes contributor ladder
* Implies automation for contributor rights
* Example: [Helm maintainers](https://github.com/helm/community/blob/master/governance/governance.md), [OWNERs](https://github.com/helm/helm/blob/master/OWNERS)
* ADOPTERS.md contains a public list of project adopters ([Jaeger example](https://github.com/jaegertracing/jaeger/blob/master/ADOPTERS.md))
* This is now public, so you need users who can be referenced

## Nice To Have at Any Level

* Security report handling process ([CoreDNS example](https://github.com/coredns/coredns/blob/master/.github/SECURITY.md))
* Realistically, this will end up being required for CII/Security Audit
* Documented release process ([Envoy example](https://github.com/envoyproxy/envoy/blob/master/RELEASES.md))
* Conformance process/definition/requirement ([Kubernetes example](https://github.com/cncf/k8s-conformance))
* As in “what is $project and what is it not”
File renamed without changes.
6 changes: 6 additions & 0 deletions website/content/search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: Search Results
layout: search
toc_hide: true
---

5 changes: 5 additions & 0 deletions website/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module github.com/cncf/sig-contributor-strategy/website

go 1.15

require github.com/cncf/contribute main // indirect
5 changes: 5 additions & 0 deletions website/i18n/en.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# UI strings. Buttons and similar.

# Footer text
[footer_all_rights_reserved]
other = " | Documentation Distributed under CC-BY-4.0"
10 changes: 10 additions & 0 deletions website/layouts/_default/_markup/render-link.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{{ $link := .Destination }}
{{ $isRemote := strings.HasPrefix $link "http" }}
{{- if not $isRemote -}}
{{ $url := urls.Parse .Destination }}
{{- if $url.Path -}}
{{ $fragment := "" }}
{{- with $url.Fragment }}{{ $fragment = printf "#%s" . }}{{ end -}}
{{- with .Page.GetPage $url.Path }}{{ $link = printf "%s%s" .RelPermalink $fragment }}{{ end }}{{ end -}}
{{- end -}}
<a href="{{ $link | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if $isRemote }} target="_blank"{{ end }}>{{ .Text | safeHTML }}</a>
7 changes: 7 additions & 0 deletions website/layouts/_default/list.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{{ define "main" }}
<div class="external-content">
{{ with .Content }}
</div>
{{ . }}
{{ end }}
{{ end }}
7 changes: 7 additions & 0 deletions website/layouts/_default/single.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{{ define "main" }}
<div class="external-content">
{{ with .Content }}
</div>
{{ . }}
{{ end }}
{{ end }}
17 changes: 17 additions & 0 deletions website/layouts/partials/hooks/footer-end.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<p>
<small class="text-white">
&copy; {{now.Year}} The Linux Foundation. All rights reserved. The Linux
Foundation has registered trademarks and uses trademarks. <br/>
For a list of trademarks of The Linux Foundation, please see our <a
href="https://www.linuxfoundation.org/trademark-usage/">Trademark Usage</a>
page.
</small>
</p>

<p>
<small class="text-white">
<a href="https://www.flickr.com/photos/28752865@N08/19452578319">"Saltburn by the Sea Yarnbombers 09-06-2015"</a>
<span> by <a href="https://www.flickr.com/photos/28752865@N08">Karen Roe</a></span> is licensed under
<a href="https://creativecommons.org/licenses/by/2.0/?ref=ccsearch&atype=html">CC BY 2.0</a>.
</small>
</p>
36 changes: 36 additions & 0 deletions website/layouts/partials/page-meta-links.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{{ if .Path }}
{{- $path := ($.Path) -}}
{{ $pathFormatted := replace $path "\\" "/" }}
{{- $prefix := index (split $path "/") 0 -}}
{{- $github := index ($.Site.Param "github") $prefix -}}
{{ if not $github }}{{- $github = ($.Site.Param "github") -}}{{ end }}
{{ if $github }}
{{ $gh_repo := index $github "repo" }}
{{ $gh_subdir := index $github "subdir" }}
{{ $gh_project_repo := index $github "project_repo" }}
{{ $gh_branch := (default "master" (index $github "branch")) }}
{{ if $gh_repo }}
<div class="td-page-meta ml-2 pb-1 pt-2 mb-0">
{{ $gh_repo_path := printf "%s/content/%s" $gh_branch $pathFormatted }}
{{ if $gh_subdir }}
{{ $gh_repo_path = printf "%s/%s/content/%s" $gh_branch $gh_subdir $pathFormatted }}
{{ end }}
{{ $editURL := printf "%s/edit/%s" $gh_repo $gh_repo_path }}
{{ $createURL := printf "%s/edit/%s" $gh_repo $gh_repo_path }}
{{ $issuesURL := printf "%s/issues/new?title=%s" $gh_repo (htmlEscape $.Title )}}
{{ $newPageStub := resources.Get "stubs/new-page-template.md" }}
{{ $newPageQS := querify "value" $newPageStub.Content "filename" "change-me.md" | safeURL }}
{{ $newPageURL := printf "%s/new/%s?%s" $gh_repo $gh_repo_path $newPageQS }}

<a href="/about/contributing">Contributing Guide</a>
<a href="{{ $editURL }}" target="_blank"><i class="fa fa-edit fa-fw"></i> {{ T "post_edit_this" }}</a>
<a href="{{ $newPageURL }}" target="_blank"><i class="fa fa-edit fa-fw"></i> {{ T "post_create_child_page" }}</a>
<a href="{{ $issuesURL }}" target="_blank"><i class="fab fa-github fa-fw"></i> {{ T "post_create_issue" }}</a>
{{ if $gh_project_repo }}
{{ $project_issueURL := printf "%s/issues/new" $gh_project_repo }}
<a href="{{ $project_issueURL }}" target="_blank"><i class="fas fa-tasks fa-fw"></i> {{ T "post_create_project_issue" }}</a>
{{ end }}
</div>
{{ end }}
{{ end }}
{{ end }}
18 changes: 18 additions & 0 deletions website/layouts/single/baseof.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js">
<head>
{{ partial "head.html" . }}
</head>
<body class="td-{{ .Kind }}">
<header>
{{ partial "navbar.html" . }}
</header>
<div class="container-fluid td-default td-outer">
<main role="main" class="td-main">
{{ block "main" . }}{{ end }}
</main>
{{ partial "footer.html" . }}
</div>
{{ partialCached "scripts.html" . }}
</body>
</html>
5 changes: 5 additions & 0 deletions website/layouts/single/single.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{{ define "main" }}
{{ with .Content }}
{{ . }}
{{ end }}
{{ end }}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"Target":"scss/main.min.700d4234e8175b0bd59f0e33cf3fd6efeab846098f2c52a725e89d7b41e3148a.css","MediaType":"text/css","Data":{"Integrity":"sha256-cA1CNOgXWwvVnw4zzz/W7+q4RgmPLFKnJeide0HjFIo="}}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"Target":"scss/main.css","MediaType":"text/css","Data":{}}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions website/themes/docsy
Submodule docsy added at f69a99