Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(REPOSITORIES.md): revising repositories "scope" and "status" #273

Merged
merged 11 commits into from
Jun 2, 2023
Merged
15 changes: 0 additions & 15 deletions .github/ISSUE_TEMPLATE/incubating_request.md

This file was deleted.

15 changes: 0 additions & 15 deletions .github/ISSUE_TEMPLATE/officialsupport_request.md

This file was deleted.

15 changes: 15 additions & 0 deletions .github/ISSUE_TEMPLATE/repo_deprecation_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: Deprecation request
about: 'Request to transition a repository to "deprecated" status'
title: ''
labels: kind/deprecated
assignees: ''
---

**Repository**: <!-- Please insert the URL of the repository here -->

**Motivation**

<!--
Please describe why you believe this project should be deprecated.
-->
15 changes: 15 additions & 0 deletions .github/ISSUE_TEMPLATE/repo_incubating_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: Incubation request
about: 'Request adoption/promotion of a repository with/to the "incubating" status'
title: ''
labels: kind/incubating
assignees: ''
---

**Repository**: <!-- Please insert the URL of the repository here -->

**Motivation**

<!--
Please describe why you believe this project should be adopted with the "incubating" status.
-->
15 changes: 15 additions & 0 deletions .github/ISSUE_TEMPLATE/repo_promoting_to_stable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: Promotion to stable
about: 'Request promotion of a repository to the "stable" status'
title: ''
labels: kind/stable
assignees: ''
---

**Repository**: <!-- Please insert the URL of the repository here -->

**Motivation**

<!--
Please describe why you believe this project should be adopted with the "incubating" status.
-->
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/repo_sandbox_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: Sandbox request
about: 'Request adoption of a repository with the "sandbox" status'
title: ''
labels: kind/sandbox
assignees: ''
---

<!--
NOTICE: This is a request to adopt a repository with the "sandbox" status.

Ideas, projects, or codes intended for the sandbox should generally be adopted under https://github.com/falcosecurity/contrib. A dedicated repository may only be requested for justified technical reasons.
If you don't need a dedicated repository, please open you request directly in https://github.com/falcosecurity/contrib.
-->

**Repository**: <!-- Please insert the URL of the repository here -->

**Motivation**

<!--
Please describe why you believe this project should be adopted with the "sandbox" status and why uou need a dedicated repository for this project.
-->
2 changes: 1 addition & 1 deletion GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ The process of adding, removing, and managing repositories under the [falcosecur

### Core repositories

In particular, repositories essential for building, installing, running, documenting, or using Falco are considered **core repositories** and are given the *Official* status.
In particular, repositories essential for building, installing, running, documenting, or using Falco are considered **core repositories** and are given the *core* scope.

### Repository ownership

Expand Down
2 changes: 1 addition & 1 deletion MAINTAINERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ As per our [governance](./GOVERNANCE.md), the lists of current maintainers and c

These lists summarize the content of all [OWNERS](./GOVERNANCE.md#repository-ownership) files across all The Falco Project repositories.

Last update: **<!-- LATEST-UPDATE -->2023-05-26T09:02:29Z<!-- /LATEST-UPDATE -->**
Last update: **<!-- LATEST-UPDATE -->2023-06-01T13:13:53Z<!-- /LATEST-UPDATE -->**

## Core Maintainers

Expand Down
146 changes: 79 additions & 67 deletions README.md

Large diffs are not rendered by default.

115 changes: 99 additions & 16 deletions REPOSITORIES.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,99 @@ In OWNERS files, users are referenced by their GitHub usernames or aliases. In a

Refer to [GOVERNANCE.md](GOVERNANCE.md#license).

## Scope

*Scopes* are defined by [Core Maintainers](GOVERNANCE.md#core-maintainers) following the standard [decision-making process](GOVERNANCE.md#decision-making). Every repository within the [falcosecurity](https://github.com/falcosecurity) GitHub organization must have an assigned scope, which characterizes its **role and responsibilities**. The scope of a repository is determined by maintainers and might be subject to change over time. However, only [Core Maintainers](https://github.com/falcosecurity/evolution/blob/main/GOVERNANCE.md#core-maintainers) can decide whether a specific repository should be given the [*core*](#core-scope) scope. See the [Lifecycle](#lifecycle) section for more details.

Please note that the assigned scope pertains to the repository and might not necessarily reflect all the hosted components or the artifacts it provides. For example, a mono repo that contains different components may still be scoped as *core* if its function or some hosted components align with the *core* definition. Notable examples include the [charts](https://github.com/falcosecurity/charts) and the [plugins](https://github.com/falcosecurity/plugins) repositories.

The *scope* of each repository is tracked by the [repository.yaml](https://github.com/falcosecurity/evolution/blob/main/repositories.yaml) file, and you can find an overview of that in the [README.md](README.md) of this repository.

The descriptions for the currently defined scopes are provided in the below sub-sections.

### Core Scope

[![Falco Core Repository](./repos/badges/falco-core-blue.svg)](#core-scope)

Core repositories form the heart of Falco and are critically important. Our [governance](https://github.com/falcosecurity/evolution/blob/main/GOVERNANCE.md#core-repositories) precisely defines them as:

> repositories essential for building, installing, running, documenting, or using Falco

They provide foundational code, primary libraries, crucial APIs, deployment tools, documentation, and more. They are the most important repositories in the project and are the most likely to be used (directly or indirectly) by adopters.

### Ecosystem Scope

[![Falco Ecosystem Repository](./repos/badges/falco-ecosystem-blue.svg)](#ecosystem-scope)

Repositories under the ecosystem scope are extensions of the core project. They provide optional components that may be useful to Falco and its adopters. While they may not be necessary for the basic functioning of Falco, ecosystem repositories often offer value-added features, integrations, utilities, and services that help adopters make the most out of Falco.

### Infra Scope

[![Falco Infra Repository](./repos/badges/falco-infra-blue.svg)](#infra-scope)

Repositories under the infra scope are dedicated to supporting the infrastructure of The Falco Project. They are not intended to be consumed by adopters but serve as the backbone for the functioning, management, and maintenance of the project and [falcosecurity](https://github.com/falcosecurity) GitHub organization. The most notable repository in this scope is [test-infra](https://github.com/falcosecurity/test-infra).

### Special Scope

*No badge is required for special repositories*

Any other repository not matching a specific scope is included in this category. This includes repositories with a unique function or a particular purpose for The Falco Project as a whole or the [falcosecurity](https://github.com/falcosecurity) GitHub organization, including (but not limited to) the [evolution](https://github.com/falcosecurity/evolution) repository, the [community](https://github.com/falcosecurity/community) repository, the [.github](https://github.com/falcosecurity/.github) repository, forks, mirrors, and other particular ones like the [template repositories](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-template-repository). These repositories are curated by [Core Maintainers](GOVERNANCE.md#core-maintainers).

It's worth noting that *special* repositories usually do not have a designated status. This is because they are not intended to be used by adopters and may not be subject to the same lifecycle as other repositories.

## Status

Repositories get assigned a status that describes their scope and responsibilties inside The Falco Project.
*Statuses* are defined by [Core Maintainers](GOVERNANCE.md#core-maintainers) following the standard [decision-making process](GOVERNANCE.md#decision-making). Every repository within [falcosecurity](https://github.com/falcosecurity) GitHub organization must have an assigned status, which characterizes its **maturity level**. The status of a repository is determined by maintainers and might be subject to change over time. See the [Lifecycle](#lifecycle) section for more details.

Please keep in mind that the status designation refers strictly to the repository itself and might not necessarily reflect the hosted components or the artifacts it provides. This is especially true for mono repos. In such cases, the status of a component or an artifact should be denoted in the corresponding subfolder or documentation.

The *status* of each repository is tracked by the [repository.yaml](https://github.com/falcosecurity/evolution/blob/main/repositories.yaml) file, and you can find an overview of that in the [README.md](README.md) of this repository.

The definitions for each status are outlined in the below sub-sections.

### Stable

[![Stable](https://img.shields.io/badge/status-stable-brightgreen?style=for-the-badge)](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md#stable)

Repositories with the status *stable* have reached a high degree of maturity and reliability and are actively curated by maintainers. The components provided by those repositories are intended to be used in production by adopters and are officially supported by The Falco Project. Significant changes or updates are typically less frequent.

Criteria to achieve the *stable* status include:

- Actively supported by maintainers and the community.
- Provided components are regularly updated and released.
- Documentation is provided and kept up-to-date.
- Automated testing via unit, functional, and integration test suites on multiple platforms (when applicable).
- Pre-built artifacts are published by an automated system for multiple platforms (when applicable).
- Documented release process (when applicable).

### Incubating

[![Incubating](https://img.shields.io/badge/status-incubating-orange?style=for-the-badge)](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md#incubating)

Repositories with the status *incubating* are in an intermediate stage of maturity. These repositories may still be subject to significant changes as feedback is gathered and improvements are made. The components provided by those repositories might be used in production by adopters, but it's not recommended. Generally, those projects are not safe for mission-critical purposes. The level of support for those projects may vary case by case.

Criteria to achieve the *incubating* status include:

- Supported on a best-effort basis by at least two maintainers.
- Basic documentation is provided.
- Releases may not occur regularly.
- Minimal CI/CD pipelines are implemented (when applicable).

### Sandbox

[![Sandbox](https://img.shields.io/badge/status-sandbox-red?style=for-the-badge)](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md#sandbox)

Repositories with the status *sandbox* are in the earliest stage of development. The componentes provided by these repositories are not recommended for production use but are intended for users interested in experimenting with cutting-edge features, contributing to early-stage development, or providing feedback. Usually, no support is provided for these projects.

Generally, the criteria for adopting a project or a component with the status of *sandbox* are flexible and may be tightened as needed at the discretion of the community. Ideas, projects, or codes intended for the *sandbox* should generally be adopted under [falcosecurity/contrib](https://github.com/falcosecurity/contrib). A dedicated repository may only be requested for justified technical reasons.

### Deprecated

[![Deprecated](https://img.shields.io/badge/status-deprecated-inactive?style=for-the-badge)](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md#deprecated)

- **Official**: [Core repositories](GOVERNANCE.md#core-repositories) of The Falco Project.
- **Incubating**: Repositories that contain non-core components or any subprojects that don't yet have an adequate level of maturity.
- **Sandbox**: Intended only for the [falcosecurity/contrib](https://github.com/falcosecurity/contrib) repository.
- **Special**: Repositories with a special function or a particular purpose for The Falco Project as a whole or the [falcosecurity](https://github.com/falcosecurity) GitHub organization, including but not limited to [this repository](https://github.com/falcosecurity/evolution), the [community](https://github.com/falcosecurity/community), the [.github](https://github.com/falcosecurity/.github) repository, and other particular ones like the [template repositories](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-template-repository).
Repositories with the status *deprecated* are no longer maintained or updated and are only kept for historical purposes. They are not recommended for any use, and contributions are not accepted.

The status of each repository is tracked in the [README.md](README.md) file of the [falcosecurity/evolution](https://github.com/falcosecurity/evolution) repository.
Deprecated respositories are usually [archived](#archiviation) and read-only.

## Lifecycle

Expand All @@ -77,23 +160,23 @@ New projects can be contributed to the falcosecurity organization by opening a G

If the decision is to add the proposed project, then one of the falcosecurity GitHub organization admins will assist the issue opener in transferring the repository to the falcosecurity organization and configuring it in [falcosecurity/test-infra](https://github.com/falcosecurity/test-infra). Upon addition, the repository must be reviewed to make sure it respects the [criteria](#criteria), [owners](#owners), and [license](#license) points of this document. In particular, when a repository is added, the proposed owners are reviewed as described by the [MAINTAINERS_GUIDELINES.md](MAINTAINERS_GUIDELINES.md) and eventually accepted.

Once the project is added to the falcosecurity GitHub organization, it will be owned and licensed by The Falco Project and will be subject to its [governance](GOVERNANCE.md).
When a repository is first contributed to the [falcosecurity](https://github.com/falcosecurity) GitHub organization, it is assigned a [scope](#scope) and a [status](#status).

When projects are first contributed to the [falcosecurity](https://github.com/falcosecurity) GitHub organization they are assigned the "Incubating" status, or the "Special" status if appropriate.
Once the repository is added to the falcosecurity GitHub organization, it and its content will be owned and licensed by The Falco Project and will be subject to its [governance](GOVERNANCE.md).

### Change of Status
### Change of Status or Scope

Actively maintaining a repository might cause the evolution of its maturity, scope, and involvement, in The Falco Project. In those cases, the [Maintainers](GOVERNANCE.md#maintainers) of a given repository can propose changing its status by opening a GitHub issue in the [falcosecurity/evolution](https://github.com/falcosecurity/evolution) repository.
Actively maintaining a repository might cause the evolution of its maturity, scope, and involvement, in The Falco Project. In those cases, the [Maintainers](GOVERNANCE.md#maintainers) of a given repository can propose changing its status by opening a GitHub issue in the [falcosecurity/evolution](https://github.com/falcosecurity/evolution) repository. The [Core Maintainers](GOVERNANCE.md#core-maintainers) will take into account the community feedback and decide on the proposal.

This is the path by which projects can be promoted from "Incubating" to "Official" status, or demoted from "Official" to "Incubating".
For instance, this is the path by which projects can be promoted from *incubating* to *stable* status or demoted from *incubating* to *sandbox*.

### Archiviation
#### Archiviation

Repositories showing little to no activity during the time span of a year can be proposed for archiviation by opening a GitHub issue in the [falcosecurity/evolution](https://github.com/falcosecurity/evolution) repository. [Archived repositories](https://docs.github.com/en/repositories/archiving-a-github-repository/archiving-repositories) will remain inside the falcosecurity GitHub organization but will be read-only and will not be maintained. As such, OWNERS files contained in archived repositories are not valid.
Repositories showing little to no activity during the time span of a year can be proposed for [deprecation](#deprecated) by opening a GitHub [issue](https://github.com/falcosecurity/evolution/issues/new?labels=kind%2Fdeprecation&template=repo_deprecation_request.md). Once the proposal has been accepted, they can be archived. [Archived repositories](https://docs.github.com/en/repositories/archiving-a-github-repository/archiving-repositories) will remain inside the falcosecurity GitHub organization but will be read-only and will not be maintained. As such, OWNERS files contained in archived repositories are not valid.

In some cases, a repository is archived to reserve its name for future use.

### Unarchiviation
#### Unarchiviation

Archived repositories can be proposed for unarchiviation by opening a GitHub issue in the [falcosecurity/evolution](https://github.com/falcosecurity/evolution) repository. If the decision is to unarchive the repository, then it must be reviewed to make sure it respects the [criteria](#criteria), [owners](#owners), and [license](#license) points of this document. In general, the same rules as for new repositories apply. The new proposed owners are reviewed as described by the [MAINTAINERS_GUIDELINES.md](MAINTAINERS_GUIDELINES.md) and eventually accepted.

Expand All @@ -104,8 +187,8 @@ Repositories that show little relevance, are not maintained, or no longer have a
### Core Maintainers duties and privileges

Since [Core Maintainers](GOVERNANCE.md#core-maintainers) as a team are responsible for the maintenance of the falcosecurity GitHub organization, they consequently have the following reserved powers:
- decide on assigning or removing the "Official" status of a repository;
- become maintainer of "Special" repositories;
- decide on assigning or removing the *core* status of a repository;
- become maintainer of *special* repositories;
- become maintainer (or take control over) non-functioning or abandoned repositories (i.e., repositories with less than two active maintainers or disputed ones);
- be the last escalation point for repositories disputes.

Expand Down
Loading