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 |
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 |
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
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,
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.
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 --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); +}
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