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

WIP: Add a maintenance process #116

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
with:
persist-credentials: false
- name: Build content from yaml
run: cd cmd && go run main.go compile --output ../docs/index.md
run: cd cmd && go run main.go compile --output ../docs/versions/devel.md
- name: Build with Jekyll
uses: actions/jekyll-build-pages@44a6e6beabd48582f863aeeb6cb2151cc1716697 # v1.0.13
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/web-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
- name: Setup Pages
uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0
- name: Build content from yaml
run: cd cmd && go run main.go compile --output ../docs/index.md
run: cd cmd && go run main.go compile --output ../docs/versions/devel.md
- name: Build with Jekyll
uses: actions/jekyll-build-pages@44a6e6beabd48582f863aeeb6cb2151cc1716697 # v1.0.13
with:
Expand Down
17 changes: 17 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Open Source Security Baseline

The Open Source Project Security Baseline (OSPS Baseline) is designed to act as a minimum definition of requirements for a project relative to it's maturity level.
It is maintained by the [OpenSSF Security Baseline SIG](https://github.com/ossf/security-baseline/blob/main/governance/MAINTAINERS.md) according to the [project governance documentation](https://github.com/ossf/security-baseline/blob/main/governance/GOVERNANCE.md).

## Versions

Previous versions are presented for historical reference.
Downstream consumers of the OSPS Baseline should specify their compliance against a specific version.
Only the version labeled as "current" should be used for new compliance efforts.

* [In-development version](docs/development)
* Current version: [v1.0]() released YYYY-MM-DD
* Previous versions:
* [v0.1] released YYYY-MM-DD

Versions are managed according to the [Baseline maintenance process](maintenance).
20 changes: 20 additions & 0 deletions docs/maintenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# OSPS Baseline Maintenance Process

* Normal text fixes to the criteria will be accepted via pull request and reviewed by the baseline project maintainers.
Allowed changes are corrections to spelling/typos, grammar corrections, or enhancements to the supplementary text supporting the criteria including - Objective, Implementation, Control Mappings, and Scorecard/Insights values.
At least two project maintainers must review and approve these changes.
* Substantive changes to Criteria, including changes to text that alters the originally stated meaning, new Criteria proposals, or removal of Criteria will be documented in GitHub PR(s) and reviewed regularly by the Baseline project maintainers.
These changes may reflect changes to global cybersecurity regulations and frameworks or changes in norms around application/project security practices.
Any such substantive changes must be approved by a majority of the project's maintainers.
* As appropriate, but at least annually, the Baseline project maintainers will publish a new version of the Baseline.
Previous versions of the Baseline will remain avialable, but are not maintained.
* Any changes to the Baseline will be reflected within the Compliance Matrix, with new requirements flagged where the Baseline Criteria are appropriate.
* Downstream stakeholders will be notified via the project's mailing list on the changes and updates.

## Identifiers
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be more specific?

Suggested change
## Identifiers
## Retiring Identifiers for Deprecated Criteria

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this applies to all identifiers, not just deprecated ones. Without a crystal ball, we don't know which identifiers will be deprecated in the future.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Evan is correct. This is about how identifiers are governed generally (although it is largely driven by discussions around retirement).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's about identifier governance in general, because it also covers when and how identifiers can be adjusted between versions (the identifier should "mean" the same thing in the future, so that a tool or document that says Addresses OSPS-XY-46 without explicitly specifying a baseline version is not ambiguous in the future).

I don't know if it's worth explaining that philosophy in this document or not. I tend to like to see the "why" behind rules, but some people find it distracting.


* Identifiers for retired criteria will not be used.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's make explicit the sunsetting process:

Suggested change
* Identifiers for retired criteria will not be used.
* Identifiers for retired criteria MUST be marked in the OSPS baseline markup as deprecated and never reused in future revisions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense. I'll update with some minor revisions to your wording.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Identifiers for retired criteria will not be used.
* Identifiers for retired criteria MUST NOT be reused. A list of these retired identifiers will be maintained in (file that contains at least OSPS-AC-06 and OSPS-BR-07)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the idea of keeping them in the yaml with a retired: <BOOLEAN> entry, which is what I think puerco's comment hinted at.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you want to keep a single file across versions (I think you're gonna regret it, but maybe I'll learn something), you might want retired: $VERSION rather than a boolean.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, you'll just check in the file as of a certain point, so then you use text-diff to find the changes over time. I think that will probably be workable with tools like blame.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point on retired: $VERSION. git blame would give the same info, but this would be friendlier.

* Substantial changes to the meaning of a criterion will be treated as a new criterion, resulting in a new identifier.
Minor changes, including a change in level, between Baseline versions will not result in a new identifier.
funnelfiasco marked this conversation as resolved.
Show resolved Hide resolved
* The numeric portion of identifiers are assigned sequentially per category.
They do not carry additional meaning.
Comment on lines +19 to +20
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine having these here for now to keep things moving, but the identifier structure, codes and overall sematics built into the string should be explained in a doc by itself.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The point here is, I think, to address my comment in Slack

So, looking at the series starting with "OSPS-AC-01" through "OSPS-AC-07", AC-01 through AC-04 are all maturity level 1, AC-05 is level 2, and AC-07 is level 3. If we find a new OSPS-AC that is maturity level 1, what number does it get?

This is probably simply due to historical accident, but it's easy for someone new to come in and see a pattern which is not intentional and cause a mess.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. That's in the README right now. My intent was to pull it into the index page eventually as we settle on the general shape of this. I'd also be fine putting it in this doc or separate. I think my preference in descending order is:

  1. Put the explanation in index.md
  2. Put the explanation in maintenance.md
  3. Put the explanation in a separate file
  4. Leave it in the README for people to find if they go looking for it.

Loading