diff mbox series

[FFmpeg-devel,v2,1/2] tools: add general_assembly.pl

Message ID 20220216014930.21629-1-jdek@itanimul.li
State Accepted
Commit 926059dbf36c00807720a9160a43b4fa13f0d6ae
Headers show
Series [FFmpeg-devel,v2,1/2] tools: add general_assembly.pl | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

J. Dekker Feb. 16, 2022, 1:49 a.m. UTC
This script generates the current general assembly voters according to
the criteria of '20 commits in the last 36 months'.

Signed-off-by: J. Dekker <jdek@itanimul.li>
---
 doc/dev_community/community.md |  3 +++
 tools/general_assembly.pl      | 40 ++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)
 create mode 100644 tools/general_assembly.pl

Comments

Thilo Borgmann Feb. 24, 2022, 1:18 p.m. UTC | #1
Am 16.02.22 um 02:49 schrieb J. Dekker:
> This script generates the current general assembly voters according to
> the criteria of '20 commits in the last 36 months'.
> 
> Signed-off-by: J. Dekker <jdek@itanimul.li>
> ---
>   doc/dev_community/community.md |  3 +++
>   tools/general_assembly.pl      | 40 ++++++++++++++++++++++++++++++++++
>   2 files changed, 43 insertions(+)
>   create mode 100644 tools/general_assembly.pl

Both LGTM.

-Thilo
Nicolas George Feb. 24, 2022, 1:46 p.m. UTC | #2
Thilo Borgman (12022-02-24):
> Both LGTM.

Does it?

The way I remember it, this condition was for the initial assembly, as a
temporary measure. I might have missed some steps, but I do not remember
we adopted this as a constant rule.

I see several flaws with it:

- Documentation patches were not counted, now they are.

- Cosmetic patches are counted.

- It does not take the size of the changes.

Using an imperfect solution for bootstrap is one thing, using it
permanently is another.

Regards,
J. Dekker March 1, 2022, 11:17 a.m. UTC | #3
On 24 Feb 2022, at 14:46, Nicolas George wrote:

> Thilo Borgman (12022-02-24):
>> Both LGTM.
>
> Does it?

An earlier reply would have been helpful here, i.e. before an ACK rather than after.

> The way I remember it, this condition was for the initial assembly, as a
> temporary measure. I might have missed some steps, but I do not remember
> we adopted this as a constant rule.
>
> I see several flaws with it:
>
> - Documentation patches were not counted, now they are.
>
> - Cosmetic patches are counted.
>
> - It does not take the size of the changes.
>
> Using an imperfect solution for bootstrap is one thing, using it
> permanently is another.
>

It is only supposed to match the documentation. Of course, nothing says it can't be changed later when the 'bootstrap' process is completed (and let's consider that the last time this was actually discussed was in Tokyo, not sure what good delaying it further helps).

You are welcome to send a patch to our documentation to clarify the rules if you think they are not correct. However, I personally think that any contribution to the project is useful and documentation & cosmetic improvements should not be penalized needlessly.
Anton Khirnov Feb. 8, 2023, 3:50 p.m. UTC | #4
Since Nicolas did not follow up, shall we go ahead and push this?
Something so simple really should not be stuck in place for a year.
diff mbox series

Patch

diff --git a/doc/dev_community/community.md b/doc/dev_community/community.md
index 21e08e20e3..516ca5c05e 100644
--- a/doc/dev_community/community.md
+++ b/doc/dev_community/community.md
@@ -25,6 +25,9 @@  proposal by a member of the General Assembly.
 They are part of the GA for two years, after which they need a confirmation by
 the GA.
 
+A script to generate the current members of the general assembly (minus members
+voted in) can be found in `tools/general_assembly.pl`.
+
 ## Voting
 
 Voting is done using a ranked voting system, currently running on https://vote.ffmpeg.org/ .
diff --git a/tools/general_assembly.pl b/tools/general_assembly.pl
new file mode 100644
index 0000000000..898a6262ef
--- /dev/null
+++ b/tools/general_assembly.pl
@@ -0,0 +1,40 @@ 
+#!/usr/bin/env perl
+
+use warnings;
+use strict;
+
+use POSIX qw(strftime);
+use Encode qw(decode);
+use Data::Dumper;
+
+sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
+
+my @shortlog = split /\n/, decode('UTF-8', `git log --pretty=format:"%aN <%aE>" --since="last 36 months" | sort | uniq -c | sort -r`, Encode::FB_CROAK);
+my %assembly = ();
+
+foreach my $line (@shortlog) {
+    my ($count, $name, $email) = $line =~ m/^ *(\d+) *(.*?) <(.*?)>/;
+    if ($count < 20) {
+        next;
+    }
+
+    $name = trim $name;
+    if ($count < 50) {
+        my $true = 0;
+        my @commits = split /(^|\n)commit [a-z0-9]{40}(\n|$)/, decode('UTF-8', `git log --name-only --use-mailmap --author="$email" --since="last 36 months"`, Encode::FB_CROAK);
+        foreach my $commit (@commits) {
+                $true++; # if ($commit =~ /\n[\w\/]+\.(c|h|S|asm|texi)/);
+        }
+
+        if ($true < 20) {
+            next;
+        }
+    }
+
+    $assembly{$name} = $email;
+}
+
+printf("# %s %s", strftime("%Y-%m-%d", localtime), decode('UTF-8', `git rev-parse HEAD`, Encode::FB_CROAK));
+foreach my $email (sort values %assembly) {
+    printf("%s\n", $email);
+}