-
Notifications
You must be signed in to change notification settings - Fork 591
🌱 New check: Do maintainers respond to public bug and security issues? #4867
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
Open
AdamKorcz
wants to merge
6
commits into
ossf:main
Choose a base branch
from
AdamKorcz:bugs-are-being-addressed
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Signed-off-by: Adam Korczynski <[email protected]>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #4867 +/- ##
==========================================
+ Coverage 66.80% 69.46% +2.66%
==========================================
Files 230 256 +26
Lines 16602 16400 -202
==========================================
+ Hits 11091 11393 +302
+ Misses 4808 4116 -692
- Partials 703 891 +188 🚀 New features to boost your workflow:
|
Signed-off-by: Adam Korczynski <[email protected]>
Signed-off-by: Adam Korczynski <[email protected]>
Signed-off-by: Adam Korczynski <[email protected]>
Signed-off-by: Adam Korczynski <[email protected]>
Signed-off-by: Adam Korczynski <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What kind of change does this PR introduce?
New check
This PR adds a new check for maintainer inactivity on public issues with "bug" and "security" related labels. In essence, the core of this new check is to assess how many of a project's issues labelled "bug" or "security" receive no maintainer response within the first 180 days after the label has been added.
This is a form of inactivity check of a project and provides a signal about a project's practices with public "bug" and "security" issues. The check aims to make it easy for projects to perform well in this check and as it is now can be useful in assessing whether a project is very poor in responding to public issues. As such, the goal is to identify obvious bad behaviours instead of differentiating between fine-grained limits. Said otherwise, the check sets a high bar for scoring low. If a project scores low, it can be a signal of poor maintenance and with a probe and a check, Scorecard users can both take programmatic action or manually assess a project. In my opinion it is a useful signal in and of itself as well as an indicator of potential underlying issues.
At a more technical level, the check supports GitHub and Gitlab-hosted projects. The check uses the existing
issuesHandlers and fetches the issues of a repository, sorts the ones that are relevant for the check - the ones that have had a "bug" and "security" label at some point - and then checks the history of each issue. Finally, the check will do a relative scoring between all the issues that were labelled with a "bug" or "security" label at any point and the ones that have not had any maintainer activity within 180 days of the issue being labelled "bug" or "security". If 0-20% of issues have not had any maintainer activity whatsoever, the project scores 10. If 21-40% of such issues have had a maintainer response, the project scores 5. If 41% or more of such issues have not had any maintainer activity, the project scores 0. Under the hood, the check also fetches information about which users have elevated privileges in the repository.Some example scenarios are:
The project will score 10 because the maintainers have responded to 80% of the issues.
Another scenario:
The project will score 5 because maintainers have responded to 70% of these within 180 days.
In its current state, the check does account for some edge cases such as:
That being said, there will likely be further edge cases that can be explored through usage.
In terms of the boundaries (20% and 40%), the scores (0/5/10), the output in the terminal when running this as well as the impact scoring of the check, I am more than open to modifying this.
Special notes for your reviewer
I would recommend doing this before reviewing the code:
docs/checks/internal/checks.yaml.go run main.go --repo=https://github.com/owner/repo--checks=Maintainer-Response-BugSecurityDoes this PR introduce a user-facing change?
yes