lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <9be8dd39-d906-4dff-8315-a69481e0accb@lucifer.local>
Date: Tue, 4 Feb 2025 10:19:17 +0000
From: Lorenzo Stoakes <lorenzo.stoakes@...cle.com>
To: Vlastimil Babka <vbabka@...e.cz>
Cc: Joe Perches <joe@...ches.com>, Andrew Morton <akpm@...ux-foundation.org>,
        workflows@...r.kernel.org, Theodore Ts'o <tytso@....edu>,
        Bryan O'Donoghue <bryan.odonoghue@...aro.org>,
        Thorsten Leemhuis <linux@...mhuis.info>, Kees Cook <kees@...nel.org>,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 1/2] get_maintainer: add --substatus for reporting
 subsystem status

On Mon, Feb 03, 2025 at 12:13:16PM +0100, Vlastimil Babka wrote:
> The subsystem status is currently reported with --role(stats) by
> adjusting the maintainer role for any status different from Maintained.
> This has two downsides:
>
> - if a subsystem has only reviewers or mailing lists and no maintainers,
>   the status is not reported (i.e. typically, Orphan subsystems have no
>   maintainers)
>
> - the Supported status means that someone is paid for maintaining, but
>   it is reported as "supporter" for all the maintainers, which can be
>   incorrect. People have been also confused about what "supporter"
>   means.
>
> This patch introduces a new --substatus option and functionality aimed
> to report the subsystem status separately, without adjusting the
> reported maintainer role. After the e-mails are output, the status of
> subsystems will follow, for example:
>
> ...
> linux-kernel@...r.kernel.org (open list:LIBRARY CODE)
> LIBRARY CODE status: Supported
>
> In order to allow replacing the role rewriting seamlessly, the new
> option works as follows:
>
> - it is automatically enabled when --email and --role are enabled
>   (the defaults include --email and --rolestats which implies --role)
>
> - usages with --norolestats e.g. for git's --cc-cmd will thus need no
>   adjustments
>
> - the most common Maintained status is not reported at all, to reduce
>   unnecessary noise
>
> - THE REST catch-all section (contains lkml) status is not reported
>
> - the existing --subsystem and --status options are unaffected so their
>   users will need no adjustments
>
> Signed-off-by: Vlastimil Babka <vbabka@...e.cz>

This LGTM afaict, and makes sense, so:

Acked-by: Lorenzo Stoakes <lorenzo.stoakes@...cle.com>

> ---
>  scripts/get_maintainer.pl | 28 +++++++++++++++++++++++++---
>  1 file changed, 25 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
> index 5ac02e19873722d0f5bf3ac8de8374338c7bddc3..da7fc70f17cd8d46b45da8db0b2029bb11b25af1 100755
> --- a/scripts/get_maintainer.pl
> +++ b/scripts/get_maintainer.pl
> @@ -50,6 +50,7 @@ my $output_multiline = 1;
>  my $output_separator = ", ";
>  my $output_roles = 0;
>  my $output_rolestats = 1;
> +my $output_substatus = undef;
>  my $output_section_maxlen = 50;
>  my $scm = 0;
>  my $tree = 1;
> @@ -269,6 +270,7 @@ if (!GetOptions(
>  		'separator=s' => \$output_separator,
>  		'subsystem!' => \$subsystem,
>  		'status!' => \$status,
> +		'substatus!' => \$output_substatus,
>  		'scm!' => \$scm,
>  		'tree!' => \$tree,
>  		'web!' => \$web,
> @@ -314,6 +316,10 @@ $output_multiline = 0 if ($output_separator ne ", ");
>  $output_rolestats = 1 if ($interactive);
>  $output_roles = 1 if ($output_rolestats);
>
> +if (!defined $output_substatus) {
> +    $output_substatus = $email && $output_roles;
> +}
> +
>  if ($sections || $letters ne "") {
>      $sections = 1;
>      $email = 0;
> @@ -637,6 +643,7 @@ my @web = ();
>  my @bug = ();
>  my @subsystem = ();
>  my @status = ();
> +my @substatus = ();
>  my %deduplicate_name_hash = ();
>  my %deduplicate_address_hash = ();
>
> @@ -651,6 +658,11 @@ if ($scm) {
>      output(@scm);
>  }
>
> +if ($output_substatus) {
> +    @substatus = uniq(@substatus);
> +    output(@substatus);
> +}
> +
>  if ($status) {
>      @status = uniq(@status);
>      output(@status);
> @@ -859,6 +871,7 @@ sub get_maintainers {
>      @bug = ();
>      @subsystem = ();
>      @status = ();
> +    @substatus = ();
>      %deduplicate_name_hash = ();
>      %deduplicate_address_hash = ();
>      if ($email_git_all_signature_types) {
> @@ -1073,6 +1086,7 @@ version: $V
>      --remove-duplicates => minimize duplicate email names/addresses
>      --roles => show roles (status:subsystem, git-signer, list, etc...)
>      --rolestats => show roles and statistics (commits/total_commits, %)
> +    --substatus => show subsystem status if not Maintained (default: match --roles)"
>      --file-emails => add email addresses found in -f file (default: 0 (off))
>      --fixes => for patches, add signatures of commits with 'Fixes: <commit>' (default: 1 (on))
>    --scm => print SCM tree(s) if any
> @@ -1335,7 +1349,9 @@ sub add_categories {
>      my $start = find_starting_index($index);
>      my $end = find_ending_index($index);
>
> -    push(@subsystem, $typevalue[$start]);
> +    my $subsystem = $typevalue[$start];
> +    push(@subsystem, $subsystem);
> +    my $status = "Unknown";
>
>      for ($i = $start + 1; $i < $end; $i++) {
>  	my $tv = $typevalue[$i];
> @@ -1386,8 +1402,8 @@ sub add_categories {
>  		}
>  	    } elsif ($ptype eq "R") {
>  		if ($email_reviewer) {
> -		    my $subsystem = get_subsystem_name($i);
> -		    push_email_addresses($pvalue, "reviewer:$subsystem" . $suffix);
> +		    my $subs = get_subsystem_name($i);
> +		    push_email_addresses($pvalue, "reviewer:$subs" . $suffix);
>  		}
>  	    } elsif ($ptype eq "T") {
>  		push(@scm, $pvalue . $suffix);
> @@ -1397,9 +1413,14 @@ sub add_categories {
>  		push(@bug, $pvalue . $suffix);
>  	    } elsif ($ptype eq "S") {
>  		push(@status, $pvalue . $suffix);
> +		$status = $pvalue;
>  	    }
>  	}
>      }
> +
> +    if ($subsystem ne "THE REST" and $status ne "Maintained") {
> +	push(@substatus, $subsystem . " status: " . $status . $suffix)
> +    }
>  }
>
>  sub email_inuse {
> @@ -1903,6 +1924,7 @@ EOT
>  		$done = 1;
>  		$output_rolestats = 0;
>  		$output_roles = 0;
> +		$output_substatus = 0;
>  		last;
>  	    } elsif ($nr =~ /^\d+$/ && $nr > 0 && $nr <= $count) {
>  		$selected{$nr - 1} = !$selected{$nr - 1};
>
> --
> 2.48.1
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ