feat: create Governance landing page (#2277)
This commit is contained in:
Родитель
707aa78cc5
Коммит
60c46421f4
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
title: Electron Governance
|
||||
author:
|
||||
- ckerr
|
||||
- sofianguy
|
||||
date: '2019-03-18'
|
||||
---
|
||||
|
||||
As Electron grows in popularity for desktop applications, the team working on it has also grown: we have more fulltime maintainers who work for different companies, live in different timezones, and have different interests. We're introducing a governance structure so we can keep growing smoothly.
|
||||
|
||||
---
|
||||
|
||||
## Why are things changing?
|
||||
|
||||
People in the Electron project coordinate in timezones around the world with volunteers, with full-time maintainers, and with several companies who all rely on Electron. Until now, we've been successful with informal coordination; but as the team has grown, we've found that the approach doesn't scale. We also want to make it easier for new contributors to find a place to call home in the project.
|
||||
|
||||
## Working Groups
|
||||
|
||||
Electron governance includes working groups that are responsible for different parts of the project. We're starting out with seven groups:
|
||||
* Community & Safety: Handles [Code of Conduct](https://github.com/electron/governance/blob/master/CODE_OF_CONDUCT.md) issues.
|
||||
* Docs & Tooling: Oversees externally-focused tooling (e.g. [Fiddle](https://electronjs.org/fiddle), [Forge](https://electronforge.io/)) and the Electron [documentation](https://electronjs.org/docs).
|
||||
* Outreach: Helps grow the Electron community.
|
||||
* Releases: Ensures releases are stable and on schedule.
|
||||
* Security: Performs security testing and responds to security issues.
|
||||
* Upgrades: Integrates upstream upgrades, such as new versions of V8, Chromium, and Node.
|
||||
* Website: Maintains and improves [the Electron website](https://electronjs.org/).
|
||||
|
||||
These groups will coordinate with each other, but each has their own meeting schedules and agendas to be productive on their own. More details on these groups are available at the [governance repository](https://github.com/electron/governance/blob/master/README.md).
|
||||
|
||||
## Does this change the Electron project's direction?
|
||||
|
||||
This shouldn't have any direct effect on Electron's direction. If our strategy is successful, working groups will make it easier for new contributors to find topics that interest them, and make maintainers' lives simpler by moving discussion unrelated to their day-to-day work to other groups. If that happens, it may indirectly affect things by having more unblocked people working together.
|
||||
|
||||
## Where can I learn more?
|
||||
|
||||
* The governance [repo](https://github.com/electron/governance/) and [charter](https://github.com/electron/governance/tree/master/charter) have information about the new governance structure.
|
||||
* Each working group has its own page: [Community](https://github.com/electron/governance/tree/master/wg-community-safety), [Docs & Tools](https://github.com/electron/governance/tree/master/wg-docs-tools), [Outreach](https://github.com/electron/governance/tree/master/wg-outreach), [Releases](https://github.com/electron/governance/tree/master/wg-releases), [Security](https://github.com/electron/governance/tree/master/wg-security), [Upgrades](https://github.com/electron/governance/tree/master/wg-upgrades), and [Website](https://github.com/electron/governance/tree/master/wg-website).
|
||||
* You can contact the maintainers by [opening an issue](https://github.com/electron/governance/issues) or mailing us at [info@electronjs.org](mailto:info@electronjs.org).
|
|
@ -13,6 +13,7 @@ nav:
|
|||
releases: Releases
|
||||
search: Search
|
||||
userland: Userland
|
||||
governance: Governance
|
||||
|
||||
keyboard_modal:
|
||||
title: Keyboard Shortcuts
|
||||
|
@ -297,6 +298,9 @@ pages:
|
|||
'/fiddle':
|
||||
title: Electron Fiddle
|
||||
description: The easiest way to get started with Electron
|
||||
'/governance':
|
||||
title: Electron Governance
|
||||
description: The Electron governance system is comprised of Working Groups that oversee different aspects of the Electron ecosystem, and an Administrative working group that functions to resolve conflicts between them.
|
||||
'/donors':
|
||||
title: Donors
|
||||
|
||||
|
@ -337,5 +341,58 @@ landing:
|
|||
without <a href="https://electronforge.io/">electron-forge</a>.
|
||||
Then, use your favorite editor and take on the world!
|
||||
|
||||
governance:
|
||||
title: Electron Governance
|
||||
description: The Electron governance system is comprised of Working Groups that oversee different aspects of the Electron ecosystem, and an Administrative working group that functions to resolve conflicts between them.
|
||||
wgs: Working Groups
|
||||
docstools:
|
||||
title: Docs & Tools
|
||||
description: Oversees externally-focused tooling (e.g. Fiddle, Forge), Electron documentation across the website and <code>electron/*</code> repositories, and the maintainer’s group outreach to 3rd party modules.
|
||||
outreach:
|
||||
title: Outreach
|
||||
description: Grows the Electron community
|
||||
releases:
|
||||
title: Releases
|
||||
description: Oversees all release branches, and tooling to support releases.
|
||||
upgrades:
|
||||
title: Upgrades
|
||||
description: Oversees upgrades of upstream dependencies; specifically Chromium and Node.
|
||||
website:
|
||||
title: Website
|
||||
description: Oversees the technical implementation, design, and style of the Electron website and associated tooling.
|
||||
cmsf:
|
||||
title: Community & Safety
|
||||
description: Oversees removal/bans from community.
|
||||
security:
|
||||
title: Security
|
||||
description: Proactively ensures the Security of Electron as a project, responds to incoming incidents, and oversees rollout of fixes.
|
||||
admins:
|
||||
title: Administrative
|
||||
description: The Administrative Working Group oversees the entire governance and project.
|
||||
global:
|
||||
overview: Overview
|
||||
associated_repos: Associated Repositories
|
||||
notes: Meeting Notes
|
||||
definitions:
|
||||
title: Definitions
|
||||
list:
|
||||
- A <i>maintainer</i> is anyone who plays an active role in governance.
|
||||
- A <i>collaborator</i> is active in the community, but not in governance.
|
||||
- A <i>participant</i> is anyone who is a maintainer or collaborator.
|
||||
- A <i>working group</i> is a group of maintainers that is formed to take responsibility for certain aspects of the Electron project. Normally these groups will meet regularly but in some cases will only meet as required to fulfill their responsibilities.
|
||||
- A <a href="https://github.com/electron/governance/tree/master/charter/README.md#Leadership">chair</a> leads a working group.
|
||||
responsibilities:
|
||||
title: Responsibilities
|
||||
listdescription: "All Working Groups have these core responsibilities:"
|
||||
list:
|
||||
- They shall decide for themselves, and publicly post, their rules, e.g. how decisions are made, when meetings are held, and who may attend.
|
||||
- They shall <a href="https://github.com/electron/governance/tree/master/charter/README.md#Leadership-Terms-and-Selection">select</a> a chair to <a href='https://github.com/electron/governance/tree/master/charter/README.md#Leadership-Responsibilities'>represent</a> the group.
|
||||
- They shall keep meeting notes, including agenda items, discussion points, and outcomes for everyone to review.
|
||||
- They shall be collaborative and work <a href="https://github.com/electron/governance/tree/master/charter/README.md#Core-Values">in good faith</a> with other Working Groups.
|
||||
see_charter: See <a href="https://github.com/electron/governance/tree/master/charter/README.md">charter</a> for more information.
|
||||
code_of_conduct: The Electron organization and all repos therein adhere to the following <a href="https://github.com/electron/governance/blob/master/CODE_OF_CONDUCT.md">Code of Conduct.</a>
|
||||
license: Electron is licensed with the <a href="https://github.com/electron/electron/blob/master/LICENSE">MIT License</a>.
|
||||
repository: Check out the <a href="https://github.com/electron/governance">Governance Repository</a> to find more information about the governance structure.
|
||||
|
||||
_404:
|
||||
page_not_found: Page not found.
|
||||
|
|
|
@ -869,6 +869,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"@primer/css": {
|
||||
"version": "12.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@primer/css/-/css-12.1.1.tgz",
|
||||
"integrity": "sha512-iXE3GhVZ6g29DHgrCIyHLMzkgYeXWq/RnlBO78FgbuFBiAvZCdWTqBbdZ4OATplXTXtu3/cMXejEAwHCjvpMLw=="
|
||||
},
|
||||
"@sindresorhus/is": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
"dependencies": {
|
||||
"@babel/core": "^7.3.4",
|
||||
"@babel/preset-env": "^7.3.4",
|
||||
"@primer/css": "^12.1.1",
|
||||
"awesome-electron": "2.6.0",
|
||||
"babelify": "^10.0.0",
|
||||
"brfs": "^2.0.2",
|
||||
|
|
|
@ -236,6 +236,26 @@
|
|||
}
|
||||
}
|
||||
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.force-150 {
|
||||
@media (min-width: 544px) {
|
||||
min-height: 150px;
|
||||
max-height: 150px;
|
||||
height: 150px;
|
||||
overflow: scroll;
|
||||
}
|
||||
}
|
||||
|
||||
.invisible {
|
||||
opacity: 0;
|
||||
@media (max-width: 543px) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.something-missing {
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,13 @@
|
|||
@import "hljs/github.css"; // Syntax highlighting
|
||||
@import "hljs/overrides"; // customization
|
||||
|
||||
// @primer/css imports
|
||||
@import "@primer/css/marketing/index.scss";
|
||||
@import "@primer/css/utilities/padding.scss";
|
||||
|
||||
// Primer local imports
|
||||
@import "./primer/container.scss";
|
||||
|
||||
// Basecoat overrides
|
||||
@import "./helpers/buttons";
|
||||
@import "./helpers/tables";
|
||||
|
@ -81,4 +88,5 @@
|
|||
@import "search";
|
||||
@import "versions";
|
||||
@import "kb-shortcut-dialog";
|
||||
@import "ui/governance";
|
||||
@import "ui/landing/fiddle";
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
// https://github.com/primer/css/blob/v12.1.1/src/layout/container.scss
|
||||
// Fixed-width, centered column for site content.
|
||||
// This will be deprecated and replaced with container-lg in future
|
||||
.n-container {
|
||||
width: $container-width;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
@include clearfix;
|
||||
}
|
||||
|
||||
// Handy container styles that match our breakpoints
|
||||
|
||||
// 544px
|
||||
.n-container-sm {
|
||||
max-width: $width-sm;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
// 768px
|
||||
.n-container-md {
|
||||
max-width: $container-md;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
// 1004px - this matches the current fixed width: 980px + padding: px-3
|
||||
.n-container-lg {
|
||||
max-width: $container-lg;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
// 1280px
|
||||
.n-container-xl {
|
||||
max-width: $container-xl;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
.governance {
|
||||
.d-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.d-md-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.flex-column {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.flex-md-row {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = (req, res) => {
|
||||
res.render('governance/index', req.context)
|
||||
}
|
|
@ -38,13 +38,13 @@ function buildSearch (type, isPrimarySearch = false, searches) {
|
|||
// sync search input with query param in address bar
|
||||
opts.routing = {
|
||||
stateMapping: {
|
||||
stateToRoute(UIstate){
|
||||
stateToRoute (UIstate) {
|
||||
// Use 'q' parameter in route instead of 'query'
|
||||
return {q: UIstate.query}
|
||||
},
|
||||
routeToState(routeState){
|
||||
return {query: routeState.q}
|
||||
return { q: UIstate.query }
|
||||
},
|
||||
routeToState (routeState) {
|
||||
return { query: routeState.q }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -93,6 +93,7 @@ app.get('/docs/:category/*', routes.docs.show)
|
|||
app.get('/docs/latest*', (req, res) => res.redirect(req.path.replace(/^\/docs\/latest/ig, '/docs')))
|
||||
app.get('/docs/v0*', (req, res) => res.redirect(req.path.replace(/^\/docs\/v0\.\d+\.\d+/ig, '/docs')))
|
||||
app.get('/docs/tutorial/faq', (req, res) => res.redirect('/docs/faq'))
|
||||
app.get('/governance', routes.governance.index)
|
||||
app.get('/issues', (req, res) => res.redirect(301, 'https://github.com/electron/electronjs.org/issues'))
|
||||
app.get('/issues/new', (req, res) => res.redirect(301, 'https://github.com/electron/electronjs.org/issues/new'))
|
||||
app.get('/languages', routes.languages.index)
|
||||
|
|
|
@ -17,8 +17,8 @@ const views = walk.entries(path.join(__dirname, '../views'))
|
|||
const fullPath = path.join(entry.basePath, entry.relativePath)
|
||||
const view = {
|
||||
relativePath: entry.relativePath,
|
||||
localizedKeys: (fs.readFileSync(fullPath, 'utf8').match(/{{(@root\/)?[./]*localized\.[a-z_.]*}}/g) || [])
|
||||
.map(ref => ref.replace(/(\.\.|@root)\//g, '').replace('{{localized.', '').replace('}}', ''))
|
||||
localizedKeys: (fs.readFileSync(fullPath, 'utf8').match(/{{(#each )?(@root\/)?[./]*localized\.[a-z_.]*}}/g) || [])
|
||||
.map(ref => ref.replace(/(\.\.|@root)\//g, '').replace('#each ', '').replace('{{localized.', '').replace('}}', ''))
|
||||
}
|
||||
return view
|
||||
})
|
||||
|
@ -34,6 +34,9 @@ describe('localized views', () => {
|
|||
views.forEach(view => {
|
||||
view.localizedKeys.length.should.be.above(0)
|
||||
view.localizedKeys.forEach(key => {
|
||||
// #each is OK
|
||||
if (Array.isArray(getProp(locale, key))) return
|
||||
|
||||
expect(getProp(locale, key), `${view.relativePath}: ${key} has no string in locale.yml`).to.be.a('string')
|
||||
})
|
||||
})
|
||||
|
@ -44,6 +47,14 @@ describe('localized views', () => {
|
|||
const keys = Object.keys(flat(locale))
|
||||
.filter(key => !key.startsWith('pages.'))
|
||||
.filter(key => !key.startsWith('_404.'))
|
||||
.map(key => {
|
||||
const split = key.split('.')
|
||||
// If it is an array index, just check we use the array
|
||||
if (/^[0-9]+$/.test(split[split.length - 1])) {
|
||||
return split.slice(0, split.length - 1).join('.')
|
||||
}
|
||||
return key
|
||||
})
|
||||
keys.should.be.an('array')
|
||||
keys.length.should.be.above(50)
|
||||
|
||||
|
|
|
@ -0,0 +1,181 @@
|
|||
<div class="governance">
|
||||
<div class="jumbotron text-center">
|
||||
<div class="n-container-lg p-responsive position-relative">
|
||||
<h1 class="h00-mktg lh-condensed mb-3 text-white">{{localized.governance.title}}</h1>
|
||||
<div class="mx-auto mb-5">
|
||||
<p class="lead-mktg">{{localized.governance.description}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="py-7 py-md-8 py-lg-9">
|
||||
<div class="n-container-lg p-responsive">
|
||||
<h2 class="h00-mktg my-2 lh-condensed text-center">
|
||||
<p class="text-gray-dark">{{localized.governance.wgs}}</p>
|
||||
</h2>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6 col-md-4 px-3 something-missing">
|
||||
<span class="octicon hero-octicon octicon-tools" aria-hidden="true"></span>
|
||||
<h3 class="h3-mktg text-normal mb-1 center">{{localized.governance.docstools.title}}</h3>
|
||||
<p class="mb-3 text-gray force-150">
|
||||
{{{localized.governance.docstools.description}}}
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-docs-tools/README.md">{{localized.governance.global.overview}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-docs-tools/repos.md">{{localized.governance.global.associated_repos}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/tree/master/wg-docs-tools/meeting-notes">{{localized.governance.global.notes}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-4 px-3 something-missing">
|
||||
<span class="octicon hero-octicon octicon-broadcast" aria-hidden="true"></span>
|
||||
<h3 class="h3-mktg text-normal mb-1 center">{{localized.governance.outreach.title}}</h3>
|
||||
<p class="mb-3 text-gray force-150">
|
||||
{{{localized.governance.outreach.description}}}
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-outreach/README.md">{{localized.governance.global.overview}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/tree/master/wg-outreach/meeting-notes">{{localized.governance.global.notes}}</a></li>
|
||||
<li class="invisible"></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-4 px-3 something-missing">
|
||||
<span class="octicon hero-octicon octicon-rocket" aria-hidden="true"></span>
|
||||
<h3 class="h3-mktg text-normal mb-1 center">{{localized.governance.releases.title}}</h3>
|
||||
<p class="mb-3 text-gray force-150">
|
||||
{{{localized.governance.releases.description}}}
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-releases/README.md">{{localized.governance.global.overview}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-releases/repos.md">{{localized.governance.global.associated_repos}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/tree/master/wg-releases/meeting-notes">{{localized.governance.global.notes}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-sm-6 col-md-4 px-3 something-missing">
|
||||
<span class="octicon hero-octicon octicon-versions" aria-hidden="true"></span>
|
||||
<h3 class="h3-mktg text-normal mb-1 center">{{localized.governance.upgrades.title}}</h3>
|
||||
<p class="mb-3 text-gray force-150">
|
||||
{{localized.governance.upgrades.description}}
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-upgrades/README.md">{{localized.governance.global.overview}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-upgrades/repos.md">{{localized.governance.global.associated_repos}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/tree/master/wg-upgrades/meeting-notes">{{localized.governance.global.notes}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-4 px-3 something-missing">
|
||||
<span class="octicon hero-octicon octicon-globe" aria-hidden="true"></span>
|
||||
<h3 class="h3-mktg text-normal mb-1 center">{{localized.governance.website.title}}</h3>
|
||||
<p class="mb-3 text-gray force-150">
|
||||
{{{localized.governance.website.description}}}
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-website/README.md">{{localized.governance.global.overview}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-website/repos.md">{{localized.governance.global.associated_repos}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/tree/master/wg-website/meeting-notes">{{localized.governance.global.notes}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-4 px-3 something-missing">
|
||||
<span class="octicon hero-octicon octicon-law" aria-hidden="true"></span>
|
||||
<h3 class="h3-mktg text-normal mb-1 center">{{localized.governance.cmsf.title}}</h3>
|
||||
<p class="mb-3 text-gray force-150">
|
||||
{{{localized.governance.cmsf.description}}}
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-community-safety/README.md">{{localized.governance.global.overview}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/tree/master/wg-community-safety/meeting-notes">{{localized.governance.global.notes}}</a></li>
|
||||
<li class="invisible"></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-sm-6 col-md-4 px-3 something-missing">
|
||||
<span class="octicon hero-octicon octicon-shield" aria-hidden="true"></span>
|
||||
<h3 class="h3-mktg text-normal mb-1 center">{{localized.governance.security.title}}</h3>
|
||||
<p class="mb-3 text-gray force-150">
|
||||
{{localized.governance.security.description}}
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-security/README.md">{{localized.governance.global.overview}}</a></li>
|
||||
<li><a href="https://github.com/electron/governance/tree/master/wg-security/meeting-notes">{{localized.governance.global.notes}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-4 px-3 something-missing">
|
||||
<span class="octicon hero-octicon octicon-telescope" aria-hidden="true"></span>
|
||||
<h3 class="h3-mktg text-normal mb-1 center">{{localized.governance.admins.title}}</h3>
|
||||
<p class="mb-3 text-gray force-150">
|
||||
{{localized.governance.admins.description}}
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/electron/governance/blob/master/wg-administrative/README.md">{{localized.governance.global.overview}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="py-7 py-md-8 py-lg-9">
|
||||
<div class="n-container-lg p-responsive">
|
||||
<h2 class="h00-mktg my-2 lh-condensed text-center">
|
||||
<p class="text-gray-dark">{{localized.governance.definitions.title}}</p>
|
||||
</h2>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
{{#each localized.governance.definitions.list}}
|
||||
<li>{{{this}}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="py-7 py-md-8 py-lg-9">
|
||||
<div class="n-container-lg p-responsive">
|
||||
<h2 class="h00-mktg my-2 lh-condensed text-center">
|
||||
<p class="text-gray-dark">{{{localized.governance.responsibilities.title}}}</p>
|
||||
</h2>
|
||||
|
||||
<div>
|
||||
<p>{{{localized.governance.responsibilities.listdescription}}}</p>
|
||||
<ul>
|
||||
{{#each localized.governance.responsibilities.list}}
|
||||
<li>{{{this}}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
<p>{{{localized.governance.responsibilities.see_charter}}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="py-7 py-md-8 py-lg-9">
|
||||
<div class="n-container-lg p-responsive">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-6 p-3 px-md-6">
|
||||
<h2 class="h3-mktg text-normal mt-0 mb-1">
|
||||
{{localized.nav.code_of_conduct}}
|
||||
</h2>
|
||||
<p class="mb-3 text-gray">
|
||||
{{{localized.governance.code_of_conduct}}}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-6 p-3 px-md-6">
|
||||
<h2 class="h3-mktg text-normal mt-0 mb-1">
|
||||
{{localized.nav.license}}
|
||||
</h2>
|
||||
<p class="mb-3 text-gray">
|
||||
{{{localized.governance.license}}}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-6 p-3 px-md-6">
|
||||
<h2 class="h3-mktg text-normal mt-0 mb-1">
|
||||
{{localized.apps.repository}}
|
||||
</h2>
|
||||
<p class="mb-3 text-gray">
|
||||
{{{localized.governance.repository}}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -23,6 +23,7 @@
|
|||
<a class="site-header-nav-item" href="/blog">{{localized.nav.blog}}</a>
|
||||
<a class="site-header-nav-item" href="/community">{{localized.nav.community}}</a>
|
||||
<!-- <a class="site-header-nav-item" href="/userland">{{localized.nav.userland}}</a> -->
|
||||
<a class="site-header-nav-item" href="/governance">{{localized.nav.governance}}</a>
|
||||
<a class="site-header-nav-item" data-href-match="/releases" href="/releases/stable">{{localized.nav.releases}}</a>
|
||||
<input id="search-input" class="nav-search" placeholder="{{localized.nav.search}}" aria-label="search-box" />
|
||||
<!-- <img id="search-hint" alt="image of backslash shorcut" src="https://assets-cdn.github.com/images/search-shortcut-hint.svg" /> -->
|
||||
|
|
Загрузка…
Ссылка в новой задаче