forked from mirrors/nixpkgs
Merge pull request #165978 from helsinki-systems/feat/subsystem-maintainers.txt
Add a list of subsystem maintainers for release
This commit is contained in:
commit
72c150341b
98
maintainers/scripts/feature-freeze-teams.pl
Executable file
98
maintainers/scripts/feature-freeze-teams.pl
Executable file
|
@ -0,0 +1,98 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i perl -p perl -p perlPackages.JSON perlPackages.LWPUserAgent perlPackages.LWPProtocolHttps perlPackages.TermReadKey
|
||||
|
||||
# This script generates a list of teams to ping for the Feature Freeze announcement on Discourse.
|
||||
# It's intended to be used by Release Managers before creating such posts.
|
||||
#
|
||||
# The script interactively reads a GitHub username and a corresponding GitHub Personal Access token.
|
||||
# This is required to access the GitHub Teams API so the token needs at least the read:org privilege.
|
||||
|
||||
## no critic (InputOutput::RequireCheckedSyscalls, InputOutput::ProhibitBacktickOperators)
|
||||
use strict;
|
||||
use warnings;
|
||||
use Carp;
|
||||
use Cwd 'abs_path';
|
||||
use File::Basename;
|
||||
use JSON qw(decode_json);
|
||||
use LWP::UserAgent;
|
||||
use Term::ReadKey qw(ReadLine ReadMode);
|
||||
|
||||
sub github_team_members {
|
||||
my ($team_name, $username, $token) = @_;
|
||||
my @ret;
|
||||
|
||||
my $req = HTTP::Request->new('GET', "https://api.github.com/orgs/NixOS/teams/$team_name/members", [ 'Accept' => 'application/vnd.github.v3+json' ]);
|
||||
$req->authorization_basic($username, $token);
|
||||
my $response = LWP::UserAgent->new->request($req);
|
||||
|
||||
if ($response->is_success) {
|
||||
my $content = decode_json($response->decoded_content);
|
||||
foreach (@{$content}) {
|
||||
push @ret, $_->{'login'};
|
||||
}
|
||||
} else {
|
||||
print {*STDERR} "!! Requesting members of GitHub Team '$team_name' failed: $response->status_line";
|
||||
}
|
||||
|
||||
return \@ret;
|
||||
}
|
||||
|
||||
# Read GitHub credentials
|
||||
print {*STDERR} 'GitHub username: ';
|
||||
my $github_user = ReadLine(0);
|
||||
ReadMode('noecho');
|
||||
print {*STDERR} 'GitHub personal access token (no echo): ';
|
||||
my $github_token = ReadLine(0);
|
||||
ReadMode('restore');
|
||||
print {*STDERR} "\n";
|
||||
chomp $github_user;
|
||||
chomp $github_token;
|
||||
|
||||
# Read nix output
|
||||
my $nix_version = `nix --version`;
|
||||
my $out;
|
||||
my $lib_path = abs_path(dirname(__FILE__)) . '../../../lib';
|
||||
if ($nix_version =~ m/2[.]3[.]/msx) {
|
||||
$out = `nix eval --json '(import $lib_path).teams'` || croak 'nix eval failed';
|
||||
} else {
|
||||
$out = `nix --extra-experimental-features nix-command eval --json --impure --expr '(import $lib_path).teams'` || croak('nix eval failed');
|
||||
}
|
||||
my $data = decode_json($out);
|
||||
|
||||
# Process teams
|
||||
print {*STDERR} "\n";
|
||||
while (my ($team_nix_key, $team_config) = each %{$data}) {
|
||||
# Ignore teams that don't want to be or can't be pinged
|
||||
if (not defined $team_config->{enableFeatureFreezePing} or not $team_config->{enableFeatureFreezePing}) {
|
||||
next;
|
||||
}
|
||||
if (not defined $team_config->{shortName}) {
|
||||
print {*STDERR} "!! The team with the nix key '$team_nix_key' has no shortName set - ignoring";
|
||||
next;
|
||||
}
|
||||
# Team name
|
||||
print {*STDERR} "$team_config->{shortName}:";
|
||||
# GitHub Teams
|
||||
my @github_members;
|
||||
if (defined $team_config->{githubTeams}) {
|
||||
foreach (@{$team_config->{githubTeams}}) {
|
||||
print {*STDERR} " \@NixOS/${_}";
|
||||
push @github_members, @{github_team_members($_, $github_user, $github_token)};
|
||||
}
|
||||
}
|
||||
my %github_members = map { $_ => 1 } @github_members;
|
||||
# Members
|
||||
if (defined $team_config->{members}) {
|
||||
foreach (@{$team_config->{members}}) {
|
||||
my %user = %{$_};
|
||||
my $github_handle = $user{'github'};
|
||||
# Ensure we don't ping team members twice (as team member and directly)
|
||||
if (defined $github_members{$github_handle}) {
|
||||
next;
|
||||
}
|
||||
print {*STDERR} " \@$github_handle";
|
||||
}
|
||||
}
|
||||
|
||||
print {*STDERR} "\n";
|
||||
}
|
|
@ -3,12 +3,19 @@
|
|||
# Required
|
||||
members = [ maintainer1 maintainer2 ];
|
||||
scope = "Maintain foo packages.";
|
||||
shortName = "foo";
|
||||
# Optional
|
||||
enableFeatureFreezePing = true;
|
||||
githubTeams = [ "my-subsystem" ];
|
||||
};
|
||||
|
||||
where
|
||||
|
||||
- `members` is the list of maintainers belonging to the group,
|
||||
- `scope` describes the scope of the group.
|
||||
- `shortName` short human-readable name
|
||||
- `enableFeatureFreezePing` will ping this team during the Feature Freeze announcements on releases
|
||||
- `githubTeams` will ping specified GitHub teams as well
|
||||
|
||||
More fields may be added in the future.
|
||||
|
||||
|
@ -27,6 +34,7 @@ with lib.maintainers; {
|
|||
m1cr0man
|
||||
];
|
||||
scope = "Maintain ACME-related packages and modules.";
|
||||
shortName = "ACME";
|
||||
};
|
||||
|
||||
bazel = {
|
||||
|
@ -41,6 +49,8 @@ with lib.maintainers; {
|
|||
ylecornec
|
||||
];
|
||||
scope = "Bazel build tool & related tools https://bazel.build/";
|
||||
shortName = "Bazel";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
beam = {
|
||||
|
@ -53,7 +63,32 @@ with lib.maintainers; {
|
|||
minijackson
|
||||
yurrriq
|
||||
];
|
||||
githubTeams = [
|
||||
"beam"
|
||||
];
|
||||
scope = "Maintain BEAM-related packages and modules.";
|
||||
shortName = "BEAM";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
blockchains = {
|
||||
members = [
|
||||
mmahut
|
||||
RaghavSood
|
||||
];
|
||||
scope = "Maintain Blockchain packages and modules.";
|
||||
shortName = "Blockchains";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
c = {
|
||||
members = [
|
||||
matthewbauer
|
||||
mic92
|
||||
];
|
||||
scope = "Maintain C libraries and tooling.";
|
||||
shortName = "C";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
cinnamon = {
|
||||
|
@ -61,6 +96,8 @@ with lib.maintainers; {
|
|||
mkg20001
|
||||
];
|
||||
scope = "Maintain Cinnamon desktop environment and applications made by the LinuxMint team.";
|
||||
shortName = "Cinnamon";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
chia = {
|
||||
|
@ -68,6 +105,41 @@ with lib.maintainers; {
|
|||
lourkeur
|
||||
];
|
||||
scope = "Maintain the Chia blockchain and its dependencies";
|
||||
shortName = "Chia Blockchain";
|
||||
};
|
||||
|
||||
cleanup = {
|
||||
members = [
|
||||
ajs124
|
||||
];
|
||||
scope = "Cleaning of the nixpkgs source tree.";
|
||||
shortName = "Cleanup";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
coq = {
|
||||
members = [
|
||||
cohencyril
|
||||
Zimmi48
|
||||
# gares has no entry in the maintainers list
|
||||
siraben
|
||||
vbgl
|
||||
];
|
||||
scope = "Maintain the Coq theorem prover and related packages.";
|
||||
shortName = "Coq";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
darwin = {
|
||||
members = [
|
||||
toonn
|
||||
];
|
||||
githubTeams = [
|
||||
"darwin-maintainers"
|
||||
];
|
||||
scope = "Maintain Darwin compatibility of packages and Darwin-only packages.";
|
||||
shortName = "Darwin";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
cosmopolitan = {
|
||||
|
@ -84,6 +156,7 @@ with lib.maintainers; {
|
|||
limeytexan
|
||||
];
|
||||
scope = "Group registration for D. E. Shaw employees who collectively maintain packages.";
|
||||
shortName = "Shaw employees";
|
||||
};
|
||||
|
||||
determinatesystems = {
|
||||
|
@ -93,11 +166,63 @@ with lib.maintainers; {
|
|||
grahamc
|
||||
];
|
||||
scope = "Group registration for packages maintained by Determinate Systems.";
|
||||
shortName = "Determinate Systems employees";
|
||||
};
|
||||
|
||||
dhall = {
|
||||
members = [
|
||||
Gabriel439
|
||||
ehmry
|
||||
];
|
||||
scope = "Maintain Dhall and related packages.";
|
||||
shortName = "Dhall";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
docker = {
|
||||
members = [
|
||||
roberth
|
||||
utdemir
|
||||
];
|
||||
scope = "Maintain Docker and related tools.";
|
||||
shortName = "DockerTools";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
docs = {
|
||||
members = [
|
||||
ryantm
|
||||
];
|
||||
scope = "Maintain nixpkgs/NixOS documentation and tools for building it.";
|
||||
shortName = "Docs";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
emacs = {
|
||||
members = [
|
||||
adisbladis
|
||||
];
|
||||
scope = "Maintain the Emacs editor and packages.";
|
||||
shortName = "Emacs";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
# Dummy group for the "everyone else" section
|
||||
feature-freeze-everyone-else = {
|
||||
members = [ ];
|
||||
githubTeams = [
|
||||
"nixpkgs-committers"
|
||||
"release-engineers"
|
||||
];
|
||||
scope = "Dummy team for the #everyone else' section during feture freezes, not to be used as package maintainers!";
|
||||
shortName = "Everyone else";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
freedesktop = {
|
||||
members = [ jtojnar ];
|
||||
scope = "Maintain Freedesktop.org packages for graphical desktop.";
|
||||
shortName = "freedesktop.org packaging";
|
||||
};
|
||||
|
||||
gcc = {
|
||||
|
@ -107,6 +232,7 @@ with lib.maintainers; {
|
|||
ericson2314
|
||||
];
|
||||
scope = "Maintain GCC (GNU Compiler Collection) compilers";
|
||||
shortName = "GCC";
|
||||
};
|
||||
|
||||
golang = {
|
||||
|
@ -121,6 +247,8 @@ with lib.maintainers; {
|
|||
zowoq
|
||||
];
|
||||
scope = "Maintain Golang compilers.";
|
||||
shortName = "Go";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
gnome = {
|
||||
|
@ -131,7 +259,12 @@ with lib.maintainers; {
|
|||
dasj19
|
||||
maxeaubrey
|
||||
];
|
||||
githubTeams = [
|
||||
"gnome"
|
||||
];
|
||||
scope = "Maintain GNOME desktop environment and platform.";
|
||||
shortName = "GNOME";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
haskell = {
|
||||
|
@ -141,7 +274,12 @@ with lib.maintainers; {
|
|||
maralorn
|
||||
sternenseemann
|
||||
];
|
||||
githubTeams = [
|
||||
"haskell"
|
||||
];
|
||||
scope = "Maintain Haskell packages and infrastructure.";
|
||||
shortName = "Haskell";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
home-assistant = {
|
||||
|
@ -152,6 +290,7 @@ with lib.maintainers; {
|
|||
mic92
|
||||
];
|
||||
scope = "Maintain the Home Assistant ecosystem";
|
||||
shortName = "Home Assistant";
|
||||
};
|
||||
|
||||
iog = {
|
||||
|
@ -163,6 +302,7 @@ with lib.maintainers; {
|
|||
nrdxp
|
||||
];
|
||||
scope = "Input-Output Global employees, which maintain critical software";
|
||||
shortName = "Input-Output Global employees";
|
||||
};
|
||||
|
||||
jitsi = {
|
||||
|
@ -173,6 +313,7 @@ with lib.maintainers; {
|
|||
yuka
|
||||
];
|
||||
scope = "Maintain Jitsi.";
|
||||
shortName = "Jitsi";
|
||||
};
|
||||
|
||||
kubernetes = {
|
||||
|
@ -184,6 +325,7 @@ with lib.maintainers; {
|
|||
zowoq
|
||||
];
|
||||
scope = "Maintain the Kubernetes package and module";
|
||||
shortName = "Kubernetes";
|
||||
};
|
||||
|
||||
kodi = {
|
||||
|
@ -196,6 +338,7 @@ with lib.maintainers; {
|
|||
sephalon
|
||||
];
|
||||
scope = "Maintain Kodi and related packages.";
|
||||
shortName = "Kodi";
|
||||
};
|
||||
|
||||
linux-kernel = {
|
||||
|
@ -206,6 +349,17 @@ with lib.maintainers; {
|
|||
qyliss
|
||||
];
|
||||
scope = "Maintain the Linux kernel.";
|
||||
shortName = "Linux Kernel";
|
||||
};
|
||||
|
||||
marketing = {
|
||||
members = [
|
||||
garbas
|
||||
tomberek
|
||||
];
|
||||
scope = "Marketing of Nix/NixOS/nixpkgs.";
|
||||
shortName = "Marketing";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
mate = {
|
||||
|
@ -214,6 +368,7 @@ with lib.maintainers; {
|
|||
romildo
|
||||
];
|
||||
scope = "Maintain Mate desktop environment and related packages.";
|
||||
shortName = "MATE";
|
||||
};
|
||||
|
||||
matrix = {
|
||||
|
@ -227,6 +382,40 @@ with lib.maintainers; {
|
|||
sumnerevans
|
||||
];
|
||||
scope = "Maintain the ecosystem around Matrix, a decentralized messenger.";
|
||||
shortName = "Matrix";
|
||||
};
|
||||
|
||||
mobile = {
|
||||
members = [
|
||||
samueldr
|
||||
];
|
||||
scope = "Maintain Mobile NixOS.";
|
||||
shortName = "Mobile";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
nix = {
|
||||
members = [
|
||||
Profpatsch
|
||||
eelco
|
||||
grahamc
|
||||
pierron
|
||||
];
|
||||
scope = "Maintain the Nix package manager.";
|
||||
shortName = "Nix/nix-cli ecosystem";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
nixos-modules = {
|
||||
members = [
|
||||
ericson2314
|
||||
infinisil
|
||||
qyliss
|
||||
roberth
|
||||
];
|
||||
scope = "Maintain nixpkgs module system internals.";
|
||||
shortName = "NixOS Modules / internals";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
openstack = {
|
||||
|
@ -235,6 +424,7 @@ with lib.maintainers; {
|
|||
SuperSandro2000
|
||||
];
|
||||
scope = "Maintain the ecosystem around OpenStack";
|
||||
shortName = "OpenStack";
|
||||
};
|
||||
|
||||
pantheon = {
|
||||
|
@ -242,7 +432,21 @@ with lib.maintainers; {
|
|||
davidak
|
||||
bobby285271
|
||||
];
|
||||
githubTeams = [
|
||||
"pantheon"
|
||||
];
|
||||
scope = "Maintain Pantheon desktop environment and platform.";
|
||||
shortName = "Pantheon";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
perl = {
|
||||
members = [
|
||||
sgo
|
||||
];
|
||||
scope = "Maintain the Perl interpreter and Perl packages.";
|
||||
shortName = "Perl";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
php = {
|
||||
|
@ -254,7 +458,12 @@ with lib.maintainers; {
|
|||
ma27
|
||||
talyz
|
||||
];
|
||||
githubTeams = [
|
||||
"php"
|
||||
];
|
||||
scope = "Maintain PHP related packages and extensions.";
|
||||
shortName = "PHP";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
podman = {
|
||||
|
@ -264,7 +473,54 @@ with lib.maintainers; {
|
|||
vdemeester
|
||||
zowoq
|
||||
];
|
||||
githubTeams = [
|
||||
"podman"
|
||||
];
|
||||
scope = "Maintain Podman and CRI-O related packages and modules.";
|
||||
shortName = "Podman";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
postgres = {
|
||||
members = [
|
||||
thoughtpolice
|
||||
];
|
||||
scope = "Maintain the PostgreSQL package and plugins along with the NixOS module.";
|
||||
shortName = "PostgreSQL";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
python = {
|
||||
members = [
|
||||
fridh
|
||||
hexa
|
||||
jonringer
|
||||
];
|
||||
scope = "Maintain the Python interpreter and related packages.";
|
||||
shortName = "Python";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
qt-kde = {
|
||||
members = [
|
||||
ttuegel
|
||||
];
|
||||
githubTeams = [
|
||||
"qt-kde"
|
||||
];
|
||||
scope = "Maintain the KDE desktop environment and Qt.";
|
||||
shortName = "Qt / KDE";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
r = {
|
||||
members = [
|
||||
bcdarwin
|
||||
jbedo
|
||||
];
|
||||
scope = "Maintain the R programming language and related packages.";
|
||||
shortName = "R";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
redcodelabs = {
|
||||
|
@ -274,6 +530,38 @@ with lib.maintainers; {
|
|||
wintrmvte
|
||||
];
|
||||
scope = "Maintain Red Code Labs related packages and modules.";
|
||||
shortName = "Red Code Labs";
|
||||
};
|
||||
|
||||
release = {
|
||||
members = [ ];
|
||||
githubTeams = [
|
||||
"nixos-release-managers"
|
||||
];
|
||||
scope = "Manage the current nixpkgs/NixOS release.";
|
||||
shortName = "Release";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
ruby = {
|
||||
members = [
|
||||
marsam
|
||||
];
|
||||
scope = "Maintain the Ruby interpreter and related packages.";
|
||||
shortName = "Ruby";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
rust = {
|
||||
members = [
|
||||
andir
|
||||
lnl7
|
||||
mic92
|
||||
zowoq
|
||||
];
|
||||
scope = "Maintain the Rust compiler toolchain and nixpkgs integration.";
|
||||
shortName = "Rust";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
sage = {
|
||||
|
@ -284,6 +572,7 @@ with lib.maintainers; {
|
|||
collares
|
||||
];
|
||||
scope = "Maintain SageMath and the dependencies that are likely to break it.";
|
||||
shortName = "SageMath";
|
||||
};
|
||||
|
||||
sphinx = {
|
||||
|
@ -291,6 +580,7 @@ with lib.maintainers; {
|
|||
SuperSandro2000
|
||||
];
|
||||
scope = "Maintain Sphinx related packages.";
|
||||
shortName = "Sphinx";
|
||||
};
|
||||
|
||||
serokell = {
|
||||
|
@ -300,6 +590,26 @@ with lib.maintainers; {
|
|||
mkaito
|
||||
];
|
||||
scope = "Group registration for Serokell employees who collectively maintain packages.";
|
||||
shortName = "Serokell employees";
|
||||
};
|
||||
|
||||
systemd = {
|
||||
members = [ ];
|
||||
githubTeams = [
|
||||
"systemd"
|
||||
];
|
||||
scope = "Maintain systemd for NixOS.";
|
||||
shortName = "systemd";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
tests = {
|
||||
members = [
|
||||
tfc
|
||||
];
|
||||
scope = "Maintain the NixOS VM test runner.";
|
||||
shortName = "NixOS tests";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
tts = {
|
||||
|
@ -308,6 +618,18 @@ with lib.maintainers; {
|
|||
mic92
|
||||
];
|
||||
scope = "coqui-ai TTS (formerly Mozilla TTS) and leaf packages";
|
||||
shortName = "coqui-ai TTS";
|
||||
};
|
||||
|
||||
vim = {
|
||||
members = [
|
||||
jonringer
|
||||
softinio
|
||||
teto
|
||||
];
|
||||
scope = "Maintain the vim and neovim text editors and related packages.";
|
||||
shortName = "Vim/Neovim";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
xfce = {
|
||||
|
@ -315,5 +637,6 @@ with lib.maintainers; {
|
|||
romildo
|
||||
];
|
||||
scope = "Maintain Xfce desktop environment and related packages.";
|
||||
shortName = "Xfce";
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue