Hi gcc-patches mailing list,
Richard Earnshaw via Sourceware Forge 
<[email protected]> has requested that the 
following forgejo pull request
be published on the mailing list.

Created on: 2026-05-29 15:13:48+00:00
Latest update: 2026-06-26 12:03:19+00:00
Changes: 6 changed files, 6855 additions, 11 deletions
Head revision: rearnsha/gcc-TEST ref MAINT-yaml commit 
65fb98fc5dca5221231fc85b6c7cfdfe14686f03
Base revision: gcc/gcc-TEST ref trunk commit 
4c05f6e10358f379a6da28151b832509f0a3f485 r17-1915-g4c05f6e10358f3
Merge base: 4c05f6e10358f379a6da28151b832509f0a3f485
Full diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/163.diff
Discussion:  https://forge.sourceware.org/gcc/gcc-TEST/pulls/163
Requested Reviewers:

RFD: convert MAINTAINERS data to YAML.

For the forge to be able to notify maintainers efficiently when a
merge request is submitted, I need to be able to automate assigning
reviewers as well as just labels.  The information needed for this is
largely in the MAINTAINERS file, but not in a format that is readily
machine readable: it can be scraped, but it's a bit of an ad-hoc
process and not something I'd want to maintain in the long term.

To mitigate that, and to make it possible to augment this information
with additional details, I've been experimenting with converting the
raw data into YAML and then having a script build the official
MAINTAINERS file form that.  The results can be seen in the following
patch.  The results so far are /almost/ identical with only a limited
set of differences, some of which can probably be resolved later on.

- the free-form entries saying All XXX maintainers have been expanded
  into explicit lists; I really don't think it helps much to have yet
  another level of indirection to deal with here and in particular it
  complicates regenerating the MAINTAINERS file as the template rules
  would need to be handled specifically.

- I've found some small sort-order differences; these could be easily
  rectified, but I think the sort order I'm using here
  (case-independent sort) is preferable to a case-dependent one: Lac
  should be sorted before LaD.  It would be better, I think to tweak
  check-MAINTAINERS.py to prefer this new order, but that file becomes
  redundant if this code goes in.

- I might have over-merged the entries for Feng Wang.  That's easily
  fixable in the MAINTAINERS.yml data, but is an example of the kind
  of issue that I've faced with creating the machine-readable data
  from the raw files.

Finally, the name for Naveen Gowda has changed in the DCO list.  The
email address used appears elsewhere in the MAINTAINERS file with a
slightly different name.  This could be fixed with a small extension
to the YAML data (the DCO entry could take an optional name), if it
really matters.

One additional field that I've added is a marker for what I consider
to be inactive accounts.  The forge is likely to be more aggressive in
emailing developers and I don't want it to be forever mailing people
who have long ceased to contribute to the project.  For now I've
scraped the GCC commit logs and posts to [email protected] and
[email protected]; anybody who has not contributed to one of those
sources in the last two years has been marked as inactive.  The
generator script has an option (-a) to build a version of the
MAINTAINERS file with inactive users removed: we have a lot of retired
devs!

Changes since V1:
- Added a schema and additional checks to validate the yaml data
- Added a simple script to create a Write-After entry
- Split the edits to the base conversion of the original
  MAINTAINERS data into separate commits.  This is just to
  make things easier in the case I need to re-run the conversion
  and will be collapsed before the final commit
---

Thanks for taking the time to contribute to GCC!

Please be advised that https://forge.sourceware.org/ is currently a trial
that is being used by the GCC community to experiment with a new workflow
based on pull requests.

Pull requests sent here may be forgotten or ignored. Patches that you want to
propose for inclusion in GCC should use the existing email-based workflow,
see https://gcc.gnu.org/contribute.html


Changed files:
- A: MAINTAINERS.yml
- A: contrib/add-write-after.py
- A: contrib/gen-MAINTAINERS.py
- A: contrib/maintainer_utils.py
- M: .editorconfig
- M: MAINTAINERS


Richard Earnshaw (8):
  editorconfig: Add rules for yaml/yml files.
  MAINTAINERS: scripts to generate the file from yaml data
  MAINTAINERS.yml: Correct Martin Liška's name
  MAINTAINERS.yml: Restore James Norris' email address
  MAINTAINERS.yml: Handle libgrust explicitly
  MAINTAINERS.yml: Add libcpp to all C and C++ maintainer's roles
  MAINTAINERS: generate from MAINTAINERS.yml
  MAINTAINERS: Add a script to create a new entry in the mainainers data

 .editorconfig               |    6 +
 MAINTAINERS                 |   27 +-
 MAINTAINERS.yml             | 6139 +++++++++++++++++++++++++++++++++++
 contrib/add-write-after.py  |  150 +
 contrib/gen-MAINTAINERS.py  |  268 ++
 contrib/maintainer_utils.py |  276 ++
 6 files changed, 6855 insertions(+), 11 deletions(-)
 create mode 100644 MAINTAINERS.yml
 create mode 100755 contrib/add-write-after.py
 create mode 100755 contrib/gen-MAINTAINERS.py
 create mode 100755 contrib/maintainer_utils.py

Range-diff against v1:
-:  ------------ > 1:  44a93c99c840 editorconfig: Add rules for yaml/yml files.
1:  528143f5f8d9 ! 2:  68bc1749d8be MAINTAINERS: convert to a generated file
    @@ Metadata
     Author: Richard Earnshaw <[email protected]>
     
      ## Commit message ##
    -    MAINTAINERS: convert to a generated file
    +    MAINTAINERS: scripts to generate the file from yaml data
     
         Convert the existing MAINTAINERS data to YAML and add a script to
    -    rebuild the MAINTAINERS file from it.
    +    rebuild the MAINTAINERS file from it.  We'll add the regenerated file
    +    shortly.
     
         ChangeLog:
     
    -            * MAINTAINERS: Regenerate from MAINTAINERS.yml
    +            * MAINTAINERS.yml: New file.
     
         contrib/ChangeLog:
     
    -            * MAINTAINERS.yml: New file.
                 * gen-MAINTAINERS.py: New file.
    +            * maintainer_utils.py: New file.
     
    - ## MAINTAINERS ##
    -@@
    - Note
    - ====
    - 
    -+This file is autogenerated.  DO NOT EDIT or your changes will be lost.
    -+Instead, add your details to contrib/MAINTAINERS.yml and run
    -+
    -+        contrib/gen-MAINTAINERS.py -o MAINTAINERS contrib/MAINTAINERS.yml
    -+
    - This file contains information about people who are permitted to make
    - changes to various parts of the compiler and associated libraries.
    - 
    -@@ MAINTAINERS: Note: when adding someone who has commit access to a more 
specific section,
    - please also ensure that there is a corresponding entry in the Write After
    - Approval list, since that list contains the gcc.gnu.org account name.
    - 
    --Note: please verify that sorting is correct with:
    --./contrib/check-MAINTAINERS.py MAINTAINERS
    --
    - Maintainers
    - ===========
    - 
    -@@ MAINTAINERS: jump.cc                 David S. Miller         
<[email protected]>
    - libbacktrace            Ian Lance Taylor        <[email protected]>
    - libcpp                  Per Bothner             <[email protected]>
    - libcpp                  David Malcolm           <[email protected]>
    --libcpp                  All C and C++ front end maintainers
    -+libcpp                  Jason Merrill           <[email protected]>
    -+libcpp                  Joseph Myers            <[email protected]>
    -+libcpp                  Nathan Sidwell          <[email protected]>
    - libga68                 Jose E. Marchesi        <[email protected]>
    - libgcc                  Ian Lance Taylor        <[email protected]>
    - libgo                   Ian Lance Taylor        <[email protected]>
    - libgomp                 Tobias Burnus           <[email protected]>
    - libgomp                 Jakub Jelinek           <[email protected]>
    - libgomp (OpenACC)       Thomas Schwinge         <[email protected]>
    --libgrust                All Rust front end maintainers
    -+libgrust                Arthur Cohen            
<[email protected]>
    -+libgrust                Philip Herron           
<[email protected]>
    - libiberty               Ian Lance Taylor        <[email protected]>
    - libitm                  Torvald Riegel          <[email protected]>
    - libobjc                 Nicola Pero             
<[email protected]>
    -@@ MAINTAINERS: from other maintainers or reviewers.
    - 
    - Name                            BZ account      Email
    - 
    --Soumya AR                       soumyaa         <[email protected]>
    - Spencer Abson                   sabson          
<[email protected]>
    - Mark G. Adams                   mgadams         
<[email protected]>
    - Ajit Kumar Agarwal              aagarwa         <[email protected]>
    - Pedro Alves                     palves          <[email protected]>
    - John David Anglin               danglin         <[email protected]>
    - Harald Anlauf                   anlauf          <[email protected]>
    -+Soumya AR                       soumyaa         <[email protected]>
    - Paul-Antoine Arras              parras          <[email protected]>
    - Arsen Arsenović                 arsen           <[email protected]>
    - Raksit Ashok                    raksit          <[email protected]>
    -@@ MAINTAINERS: Prathamesh Kulkarni             prathamesh3492  
<[email protected]>
    - Venkataramanan Kumar            vekumar         
<[email protected]>
    - Maxim Kuvyrkov                  mkuvyrkov       
<[email protected]>
    - Doug Kwan                       dougkwan        <[email protected]>
    --Aaron W. LaFramboise            -               <[email protected]>
    - Scott Robert Ladd               -               
<[email protected]>
    - Razya Ladelsky                  razya           <[email protected]>
    - Thierry Lafage                  tlafage         <[email protected]>
    -+Aaron W. LaFramboise            -               <[email protected]>
    - Rask Ingemann Lambertsen        rask            
<[email protected]>
    - Jerome Lambourg                 -               <[email protected]>
    - Tim Lange                       tlange          <[email protected]>
    -@@ MAINTAINERS: Renlin Li                       renlin          
<[email protected]>
    - Xinliang David Li               davidxl         <[email protected]>
    - Kewen Lin                       linkw           <[email protected]>
    - Chen Liqin                      liqin           <[email protected]>
    --Martin Liska                    marxin          <[email protected]>
    -+Martin Liška                    marxin          <[email protected]>
    - Hao Liu                         -               
<[email protected]>
    - Hongtao Liu                     liuhongt        <[email protected]>
    - Jiangning Liu                   liujiangning    <[email protected]>
    -@@ MAINTAINERS: Christophe Lyon                 clyon           
<[email protected]>
    - Jin Ma                          majin           <[email protected]>
    - Jun Ma                          junma           <[email protected]>
    - Yuao Ma                         -               <[email protected]>
    --Andrew MacLeod                  -               <[email protected]>
    - Luis Machado                    luisgpm         
<[email protected]>
    -+Andrew MacLeod                  -               <[email protected]>
    - Ziga Mahkovec                   ziga            <[email protected]>
    - Vladimir Makarov                vmakarov        <[email protected]>
    - David Malcolm                   dmalcolm        <[email protected]>
    -@@ MAINTAINERS: Thomas Neumann                  tneumann        
<[email protected]>
    - Dan Nicolaescu                  -               <[email protected]>
    - Kelvin Nilsen                   kelvin          <[email protected]>
    - Hans-Peter Nilsson              hp              <[email protected]>
    --James Norris
    -+James Norris                    -               <[email protected]>
    - Diego Novillo                   dnovillo        <[email protected]>
    - Dorit Nuzman                    dorit           <[email protected]>
    - David O'Brien                   -               <[email protected]>
    -@@ MAINTAINERS: Waffl3x                         waffl3x         
<[email protected]>
    - Jonathan Wakely                 redi            <[email protected]>
    - Krister Walfridsson             kristerw        
<[email protected]>
    - Feng Wang                       fengwang        <[email protected]>
    --Feng Wang                       -               
<[email protected]>
    -+Feng Wang                       fengwang        
<[email protected]>
    - Hongyu Wang                     hongyuw         <[email protected]>
    - Jiong Wang                      jiwang          <[email protected]>
    - Stephen M. Webb                 smw             
<[email protected]>
    -@@ MAINTAINERS: Robin Dapp                                      
<[email protected]>
    - Robin Dapp                                      <[email protected]>
    - Robin Dapp                                      <[email protected]>
    - Prachi Godbole                                  <[email protected]>
    --Naveen Gowda                                    
<[email protected]>
    -+Naveen H.S                                      
<[email protected]>
    - Aldy Hernandez                                  <[email protected]>
    - Michal Jires                                    <[email protected]>
    - Matthias Kretz                                  <[email protected]>
    -
    - ## contrib/MAINTAINERS.yml (new) ##
    + ## MAINTAINERS.yml (new) ##
     @@
     +users:
     +- sn: Abson
    @@ contrib/MAINTAINERS.yml (new)
     +  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: giovannibajo
     +  inactive: true
     +- sn: Baldwin
     +  cn: Simon Baldwin
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Scott Bambrough
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: scottb
     +  inactive: true
     +- sn: Bangerth
     +  cn: Wolfgang Bangerth
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: bangerth
     +  inactive: true
     +- sn: Bantaloukas
     +  cn: Claudio Bantaloukas
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Gergö Barany
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: gergo
     +  inactive: true
     +- sn: Barboza
     +  cn: Daniel Barboza
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Thiago Jung Bauermann
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: bauermann
     +- sn: Baylis
     +  cn: Charles Baylis
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Matthew Beliveau
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: mbelivea
     +  inactive: true
     +- sn: Belyshev
     +  cn: Serge Belyshev
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: ssb
     +  inactive: true
     +- sn: Beniston
     +  cn: Jon Beniston
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Andrew Bennett
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: abennett
     +- sn: Benson
     +  cn: Andrew Benson
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Pat Bernardi
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: pbernardi
     +  inactive: true
     +- sn: Beulich
     +  cn: Jan Beulich
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: jbeulich
     +- sn: Bhagat
     +  cn: Indu Bhagat
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: hboehm
     +  inactive: true
     +- sn: Boessenkool
     +  cn: Segher Boessenkool
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Paolo Bonzini
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: build machinery (*.in)
     +  - Reviewer: dataflow
     +  - WriteAfter
    ++  account: bonzini
     +- sn: Booth
     +  cn: Neil Booth
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Antoni Boucher
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: antoyo
     +- sn: Bourdeauducq
     +  cn: Sebastien Bourdeauducq
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: James Bowman
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: ft32 port
     +  - WriteAfter
    ++  account: jamesbowman
     +  inactive: true
     +- sn: Brobecker
     +  cn: Joel Brobecker
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: brobecke
     +  inactive: true
     +- sn: Brolley
     +  cn: Dave Brolley
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: brolley
     +  inactive: true
     +- sn: Brown
     +  cn: Julian Brown
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Kevin Buettner
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: kevinb
     +- sn: Burgess
     +  cn: Andrew Burgess
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Chandra Chavva
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: cchavva
     +  inactive: true
     +- sn: Chawla
     +  cn: Dhruv Chawla
    @@ contrib/MAINTAINERS.yml (new)
     +  account: dehao
     +  inactive: true
     +- sn: Chen
    -+  cn: Shiva Chen
    -+  email:
    -+  - [email protected]
    -+  roles:
    -+  - Maintainer: nds32 port
    -+  inactive: true
    -+- sn: Chen
     +  cn: Zhongyao Chen
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  - [email protected]
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
     +  - DCO: [email protected]
    ++  account: zhongyao
     +  aliases:
     +  - zhongyao
    ++- sn: Chêne
    ++  cn: Fabien Chêne
    ++  email:
    ++  - [email protected]
    ++  roles:
    ++  - WriteAfter
    ++  account: fabien
    ++  inactive: true
     +- sn: Cheng
     +  cn: Bin Cheng
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Lulu Cheng
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: LoongArch port
     +  - WriteAfter
    ++  account: chenglulu
     +  aliases:
     +  - ChengLulu
     +- sn: Chertykov
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Monk Chiang
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: monkc
     +- sn: Chigot
     +  cn: Clément Chigot
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: helflym
     +- sn: Chopra
     +  cn: Harshit Chopra
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Juergen Christ
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
    ++  account: jchrist
     +- sn: Christina
     +  cn: Tamar Christina
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  - WriteAfter
     +  account: echristo
     +  inactive: true
    -+- sn: Chêne
    -+  cn: Fabien Chêne
    -+  email:
    -+  - [email protected]
    -+  roles:
    -+  - WriteAfter
    -+  account: fabien
    -+  inactive: true
     +- sn: Clarke
     +  cn: Paul Clarke
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  - [email protected]
     +  roles:
     +  - Maintainer: Rust
    -+  - Maintainer: libgrust
     +  - WriteAfter
     +  account: cohenarthur
     +- sn: Cohen
     +  cn: William Cohen
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: wcohen
     +  inactive: true
     +- sn: Collison
     +  cn: Michael Collison
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Alejandro Colomar
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
    ++  account: alx
     +- sn: Conner
     +  cn: Josh Conner
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Cary Coutant
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: dwarf debugging code
     +  - Reviewer: LTO plugin
     +  - WriteAfter
    ++  account: ccoutant
     +  inactive: true
     +- sn: Crowl
     +  cn: Lawrence Crowl
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Lili Cui
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: cuilili
     +  aliases:
     +  - Cui, Lili
     +- sn: D'Angelo
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Lehua Ding
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: lhtin
     +- sn: Drepper
     +  cn: Ulrich Drepper
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Robert Dubner
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: COBOL front end
    ++  - WriteAfter
    ++  account: rdubner
     +  aliases:
     +  - Bob Dubner
     +- sn: Dumont
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Jason Eckhardt
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: jle
     +  inactive: true
     +- sn: Edelmann
     +  cn: Erik Edelmann
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Marc Espie
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: espie
     +  inactive: true
     +- sn: Esztermann
     +  cn: Ansgar Esztermann
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: ansgar
     +  inactive: true
     +- sn: Evans
     +  cn: Doug Evans
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Sam Feifer
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: sfeifer
     +  inactive: true
     +- sn: Feng
     +  cn: Eric Feng
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Brian Ford
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: ford
     +  inactive: true
     +- sn: Fortune
     +  cn: Matthew Fortune
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: John Freeman
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: jfreeman
     +  inactive: true
     +- sn: Froyd
     +  cn: Nathan Froyd
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Chao-ying Fu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: chaoyingfu
     +- sn: Funck
     +  cn: Gary Funck
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Gopalasubramanian Ganesh
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: gganesh
     +  inactive: true
     +- sn: Gao
     +  cn: Fei Gao
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: feigao
     +- sn: Ghazi
     +  cn: Kaveh Ghazi
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Matthew Gingell
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: gingell
     +  inactive: true
     +- sn: Gingold
     +  cn: Tristan Gingold
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Jivan Hakobyan
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: jivan
     +- sn: Haley
     +  cn: Andrew Haley
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Fergus Henderson
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: fjh
     +  inactive: true
     +- sn: Henderson
     +  cn: Richard Henderson
    @@ contrib/MAINTAINERS.yml (new)
     +  - [email protected]
     +  roles:
     +  - Maintainer: Rust
    -+  - Maintainer: libgrust
     +  - WriteAfter
     +  account: redbrain
     +- sn: Hillenbrand
     +  cn: Marius Hillenbrand
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: mhillen
     +  inactive: true
     +- sn: Hiller
     +  cn: Matthew Hiller
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: hiller
     +  inactive: true
     +- sn: Hirata
     +  cn: Kazu Hirata
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Manfred Hollstein
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: manfred
     +  inactive: true
     +- sn: Horne
     +  cn: Stafford Horne
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Levy Hsu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: xlwxlw7969
     +- sn: Hu
     +  cn: Lin Hu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: hulin
     +  aliases:
     +  - Hu, Lin1
     +- sn: Huber
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Paul Iannetta
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: piannetta
     +- sn: Illig
     +  cn: Roland Illig
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: rillig
     +  inactive: true
     +- sn: Inge
     +  cn: Meador Inge
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Bernardo Innocenti
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: bernie
     +  inactive: true
     +- sn: Ionescu
     +  cn: Mihail Ionescu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: mionescu
     +  inactive: true
     +- sn: Ivanishin
     +  cn: Vladislav Ivanishin
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: vlad
     +  inactive: true
     +- sn: Ivchenko
     +  cn: Alexander Ivchenko
    @@ contrib/MAINTAINERS.yml (new)
     +  - WriteAfter
     +  account: bviyer
     +  inactive: true
    ++- sn: Jääskeläinen
    ++  cn: Pekka Jääskeläinen
    ++  email:
    ++  - [email protected]
    ++  - [email protected]
    ++  roles:
    ++  - WriteAfter
    ++  account: visit0r
    ++  inactive: true
     +- sn: Jacobowitz
     +  cn: Daniel Jacobowitz
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Fariborz Jahanian
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: fjahanian
     +  inactive: true
     +- sn: Jambor
     +  cn: Martin Jambor
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Haochen Jiang
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: jianghc
     +- sn: Jianhua
     +  cn: Qian Jianhua
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: qianjh
     +  inactive: true
     +- sn: Jires
     +  cn: Michal Jires
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Kean Johnston
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: jkj
     +  inactive: true
     +- sn: Jordan
     +  cn: Phillip Jordan
    @@ contrib/MAINTAINERS.yml (new)
     +  - WriteAfter
     +  account: timjosling
     +  inactive: true
    -+- sn: Jääskeläinen
    -+  cn: Pekka Jääskeläinen
    -+  email:
    -+  - [email protected]
    -+  - [email protected]
    -+  roles:
    -+  - WriteAfter
    -+  account: visit0r
    -+  inactive: true
     +- sn: Kamiński
     +  cn: Tomasz Kamiński
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Evgeny Karpov
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: eukarpov
     +- sn: Kastl
     +  cn: Filip Kastl
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Brendan Kehoe
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: brendan
     +  inactive: true
     +- sn: Kenner
     +  cn: Richard Kenner
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Jeff Knaggs
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: jknaggs
     +  inactive: true
     +- sn: Koch
     +  cn: Michael Koch
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: mkoch
     +  inactive: true
     +- sn: Koenig
     +  cn: Nicolas Koenig
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Lingling Kong
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: konglin1
    ++- sn: König
    ++  cn: Thomas König
    ++  email:
    ++  - [email protected]
    ++  roles:
    ++  - Reviewer: Fortran
    ++  - WriteAfter
    ++  account: tkoenig
    ++  aliases:
    ++  - Thomas Koenig
     +- sn: Koning
     +  cn: Paul Koning
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Benjamin De Kosnik
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: c++ runtime libs
    ++  - WriteAfter
    ++  account: bkoz
     +  inactive: true
     +- sn: Koval
     +  cn: Julia Koval
    @@ contrib/MAINTAINERS.yml (new)
     +  - WriteAfter
     +  account: dougkwan
     +  inactive: true
    -+- sn: König
    -+  cn: Thomas König
    -+  email:
    -+  - [email protected]
    -+  roles:
    -+  - Reviewer: Fortran
    -+  - WriteAfter
    -+  account: tkoenig
    -+  aliases:
    -+  - Thomas Koenig
     +- sn: Ladd
     +  cn: Scott Robert Ladd
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: srladd
     +  inactive: true
     +- sn: Ladelsky
     +  cn: Razya Ladelsky
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Aaron W. LaFramboise
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: aaronwl
     +  inactive: true
     +- sn: Lambertsen
     +  cn: Rask Ingemann Lambertsen
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Jerome Lambourg
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: lambourg
     +  inactive: true
     +- sn: Lange
     +  cn: Tim Lange
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Alan Lawrence
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: alalaw01
     +  inactive: true
     +- sn: Lawrynowicz
     +  cn: Jozef Lawrynowicz
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Marc Lehmann
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: pcg
     +  inactive: true
     +- sn: Lei
     +  cn: Bohan Lei
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Pan Li
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: panli
     +- sn: Li
     +  cn: Pengfei Li
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Kewen Lin
     +  email:
     +  - [email protected]
    -+  - [email protected]
     +  roles:
     +  - Maintainer: rs6000/powerpc port
     +  - WriteAfter
    @@ contrib/MAINTAINERS.yml (new)
     +  account: liqin
     +  inactive: true
     +- sn: Liska
    -+  cn: Martin Liška
    ++  cn: Martin Liska
     +  email:
     +  - [email protected]
     +  - [email protected]
     +  - [email protected]
    -+  aliases:
    -+    - Martin Liska
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Hao Liu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: hliu
     +- sn: Liu
     +  cn: Hongtao Liu
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  - Maintainer: docs co-maintainer
     +  - WriteAfter
     +  account: sandra
    ++- sn: López-Ibáñez
    ++  cn: Manuel López-Ibáñez
    ++  email:
    ++  - [email protected]
    ++  roles:
    ++  - WriteAfter
    ++  account: manu
    ++  inactive: true
     +- sn: Love
     +  cn: Carl Love
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: James K. Lowden
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: COBOL front end
    ++  - WriteAfter
    ++  account: jklowden
    ++- sn: Löwis
    ++  cn: Martin v. Löwis
    ++  email:
    ++  - [email protected]
    ++  - [email protected]
    ++  roles:
    ++  - WriteAfter
    ++  account: loewis
    ++  inactive: true
     +- sn: Lu
     +  cn: Edwin Lu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: ewlu
     +- sn: Lu
     +  cn: H.J. Lu
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: luoxhu
     +  inactive: true
     +- sn: Lv
     +  cn: Bin Bin Lv
    @@ contrib/MAINTAINERS.yml (new)
     +  - Reviewer: arm port (MVE)
     +  - WriteAfter
     +  account: clyon
    -+- sn: López-Ibáñez
    -+  cn: Manuel López-Ibáñez
    -+  email:
    -+  - [email protected]
    -+  roles:
    -+  - WriteAfter
    -+  account: manu
    -+  inactive: true
    -+- sn: Löwis
    -+  cn: Martin v. Löwis
    -+  email:
    -+  - [email protected]
    -+  - [email protected]
    -+  roles:
    -+  - WriteAfter
    -+  account: loewis
    -+  inactive: true
     +- sn: Ma
     +  cn: Jin Ma
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
    ++  account: yuao
     +- sn: Machado
     +  cn: Luis Machado
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Andrew MacLeod
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: '*vrp, ranger'
     +  - Maintainer: tree-ssa
     +  - WriteAfter
    ++  account: amacleod
     +- sn: Mahkovec
     +  cn: Ziga Mahkovec
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Greg McGary
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: gkm
     +  inactive: true
     +- sn: McGrath
     +  cn: Roland McGrath
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Karl Meakin
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: karmea01
     +- sn: Megacz
     +  cn: Adam Megacz
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: megacz
     +  inactive: true
     +- sn: Mei
     +  cn: Bingfeng Mei
    @@ contrib/MAINTAINERS.yml (new)
     +  roles:
     +  - Global
     +  - Maintainer: c++
    -+  - Maintainer: libcpp
     +  - Maintainer: '*gimpl*'
     +  - Maintainer: dwarf debugging code
     +  - WriteAfter
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Jim Meyering
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: meyering
     +  inactive: true
     +- sn: Michlmayr
     +  cn: Martin Michlmayr
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Cupertino Miranda
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: cupermir
     +- sn: Mladjenovic
     +  cn: Dragan Mladjenovic
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  - WriteAfter
     +  - DCO: [email protected]
     +  account: gaius
    ++- sn: Müllner
    ++  cn: Christoph Müllner
    ++  email:
    ++  - [email protected]
    ++  - [email protected]
    ++  roles:
    ++  - WriteAfter
    ++  account: cmuellner
     +- sn: Munnangi
     +  cn: Shreya Munnangi
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Philippe De Muyter
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: m68k-motorola-sysv port
     +  - WriteAfter
    ++  account: phdm
     +  inactive: true
     +- sn: Myers
     +  cn: Joseph Myers
    @@ contrib/MAINTAINERS.yml (new)
     +  roles:
     +  - Global
     +  - Maintainer: C front end/ISO C99
    -+  - Maintainer: libcpp
     +  - Maintainer: docs co-maintainer
     +  - Maintainer: docstring relicensing
     +  - Maintainer: i18n
    @@ contrib/MAINTAINERS.yml (new)
     +  roles:
     +  - WriteAfter
     +  account: ncm
    -+- sn: Müllner
    -+  cn: Christoph Müllner
    -+  email:
    -+  - [email protected]
    -+  - [email protected]
    -+  roles:
    -+  - WriteAfter
    -+  account: cmuellner
     +- sn: Nagy
     +  cn: Szabolcs Nagy
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Dan Nicolaescu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: dann
     +  inactive: true
     +- sn: Nilsen
     +  cn: Kelvin Nilsen
    @@ contrib/MAINTAINERS.yml (new)
     +- sn: Norris
     +  cn: James Norris
     +  email:
    -+  - [email protected]
    ++  - ''
     +  roles:
     +  - WriteAfter
     +  inactive: true
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: David O'Brien
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: obrien
     +  inactive: true
     +- sn: O'Donell
     +  cn: Carlos O'Donell
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Patrick O'Neill
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: poneill
     +- sn: Obrzut
     +  cn: Braden Obrzut
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Tsukasa Oi
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: a4lg
     +- sn: Oliva
     +  cn: Alexandre Oliva
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  - WriteAfter
     +  account: dpatel
     +  inactive: true
    ++- sn: Patry
    ++  cn: Pierre-Emmanuel Patry
    ++  email:
    ++  - [email protected]
    ++  - [email protected]
    ++  roles:
    ++  - WriteAfter
    ++  - DCO: [email protected]
    ++  account: pep
     +- sn: Pavenis
     +  cn: Andris Pavenis
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Sebastian Perta
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: sebastianperta
     +  inactive: true
     +- sn: Peryt
     +  cn: Sebastian Peryt
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Thomas Preud'homme
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: thopre01
     +  inactive: true
     +- sn: Priour
     +  cn: Benjamin Priour
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Xianmiao Qu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: c-sky port
     +  - WriteAfter
    ++  account: xianmiao
     +- sn: Quinn
     +  cn: Jerry Quinn
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Rishi Raj
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
    ++  account: rshraj45035
     +  inactive: true
     +- sn: Raman
     +  cn: Easwaran Raman
    @@ contrib/MAINTAINERS.yml (new)
     +  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: rolfwr
     +  inactive: true
     +- sn: Reese
     +  cn: Fritz Reese
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Alfie Richards
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: alfierichards
     +- sn: Riegel
     +  cn: Torvald Riegel
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Tom Rix
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: trix
     +  inactive: true
     +- sn: Rodat
     +  cn: Pierre-Marie de Rodat
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Eugene Rozenfeld
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: AutoFDO
     +  - WriteAfter
    ++  account: erozen
     +- sn: Rozycki
     +  cn: Maciej W. Rozycki
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: vax port
     +  - WriteAfter
    ++  account: macro
     +- sn: Rupp
     +  cn: Douglas Rupp
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: VMS
     +  - WriteAfter
    ++  account: rupp
     +  inactive: true
     +- sn: Rus
     +  cn: Silvius Rus
    @@ contrib/MAINTAINERS.yml (new)
     +  email:
     +  - [email protected]
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: m68k port
     +  - WriteAfter
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Svein Seldal
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: sveinse
     +  inactive: true
     +- sn: Selvaraj
     +  cn: Senthil Kumar Selvaraj
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Thiemo Seufer
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: ths
     +  inactive: true
     +- sn: Seurer
     +  cn: Bill Seurer
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Yunhai Shang
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: c-sky port
    ++  - WriteAfter
    ++  account: shangyunhai
     +  inactive: true
     +- sn: Shead
     +  cn: Nathaniel Shead
    @@ contrib/MAINTAINERS.yml (new)
     +  - [email protected]
     +  roles:
     +  - Maintainer: c++
    -+  - Maintainer: libcpp
     +  - Maintainer: gcov
     +  - WriteAfter
     +  - DCO: [email protected]
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Michael Sokolov
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: msokolov
     +  inactive: true
     +- sn: Sonar
     +  cn: Jayant Sonar
    @@ contrib/MAINTAINERS.yml (new)
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
    ++  account: maskray
     +- sn: Stallman
     +  cn: Richard Stallman
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: rms
     +  inactive: true
     +- sn: Starynkevitch
     +  cn: Basile Starynkevitch
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Omar Tahir
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: omatah
     +  inactive: true
     +- sn: Tallam
     +  cn: Sriraman Tallam
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Philipp Thomas
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: i18n
     +  - WriteAfter
    ++  account: pthomas
     +  inactive: true
     +- sn: Thorpe
     +  cn: Jason Thorpe
    @@ contrib/MAINTAINERS.yml (new)
     +  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: krab
     +  inactive: true
     +- sn: Tice
     +  cn: Caroline Tice
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Petter Tomner
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
    ++  account: tomner
     +  inactive: true
     +- sn: Tomsich
     +  cn: Philipp Tomsich
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Daniel Towner
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: dwtowner
     +  inactive: true
     +- sn: Trifunovic
     +  cn: Konrad Trifunovic
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Martin Uecker
     +  email:
     +  - [email protected]
    -+  - [email protected]
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Kris Van Hees
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: kvanhees
     +  inactive: true
     +- sn: VandeVondele
     +  cn: Joost VandeVondele
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Rasmus Villemoes
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: villemoes
     +- sn: Vivekanandarajah
     +  cn: Kugan Vivekanandarajah
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Marcel Vollweiler
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: marcel
     +  inactive: true
     +- sn: Voutilainen
     +  cn: Ville Voutilainen
    @@ contrib/MAINTAINERS.yml (new)
     +  email:
     +  - [email protected]
     +  - [email protected]
    -+  - [email protected]
     +  roles:
     +  - WriteAfter
    -+  - WriteAfter: [email protected]
     +  account: fengwang
    ++  inactive: true
    ++- sn: Wang
    ++  cn: Feng Wang
    ++  email:
    ++  - [email protected]
    ++  - [email protected]
    ++  roles:
    ++  - WriteAfter
    ++  account: fengwang1792
     +- sn: Wang
     +  cn: Hongyu Wang
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Andrew Waterman
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Maintainer: riscv port
    ++  - WriteAfter
    ++  account: aswaterman
     +- sn: Webb
     +  cn: Stephen M. Webb
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: John Wehle
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: wehle
     +  inactive: true
     +- sn: Weigand
     +  cn: Ulrich Weigand
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Zack Weinberg
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: zack
     +  inactive: true
     +- sn: Westbrooks
     +  cn: Alexander Westbrooks
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Ollie Wild
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: aaw
     +  inactive: true
     +- sn: Wildenhues
     +  cn: Ralf Wildenhues
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Jonathan Wright
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: jonwri01
     +  inactive: true
     +- sn: Wu
     +  cn: Chung-Ju Wu
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Li Xu
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: xuli
     +  aliases:
     +  - xuli
     +- sn: Xue
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Adhemerval Zanella
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: azanella
     +  inactive: true
     +- sn: Zeng
     +  cn: Xiao Zeng
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: zeng
     +- sn: Zhang
     +  cn: Dennis Zhang
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
    ++  account: xczhang
     +  inactive: true
     +- sn: Zhang
     +  cn: Jie Zhang
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Juzhe Zhong
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - Reviewer: riscv port
     +  - WriteAfter
    ++  account: juzhe
     +- sn: Zhuykov
     +  cn: Roman Zhuykov
     +  email:
    @@ contrib/MAINTAINERS.yml (new)
     +  cn: Raphael Zinsly
     +  email:
     +  - [email protected]
    ++  - [email protected]
     +  - [email protected]
    ++  - [email protected]
     +  roles:
     +  - WriteAfter
     +  - DCO: [email protected]
     +  - DCO: [email protected]
    ++  account: rzinsly
     +  aliases:
     +  - Raphael Moreira Zinsly
     +- sn: Zippel
    @@ contrib/MAINTAINERS.yml (new)
     +- name: Rust
     +  class: Lang
     +  labels: []
    -+- name: libgrust
    -+  class: Subsystem
    -+  labels: []
     +- name: VMS
     +  class: OS
     +  labels: []
    @@ contrib/gen-MAINTAINERS.py (new)
     @@
     +#!/usr/bin/env python3
     +
    ++# Regenerate the MAINTAINERS file from the YAML data.
    ++
     +# Copyright (C) 2026 Free Software Foundation, Inc.
     +#
     +# This file is part of GCC.
    @@ contrib/gen-MAINTAINERS.py (new)
     +# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
     +# Boston, MA 02110-1301, USA.
     +
    -+# Regenerate the MAINTAINERS file from the YAML data.
     +
     +import locale
     +import sys
    @@ contrib/gen-MAINTAINERS.py (new)
     +from optparse import OptionParser
     +
     +import unidecode
    -+import yaml
    -+# Prefer the libYAML implementations if available.  Fall back to the
    -+# pure python versions as a backup.
    -+try:
    -+    from yaml import CLoader as Loader, CDumper as Dumper
    -+except:
    -+    from yaml import Loader, Dumper
    ++
    ++import maintainer_utils as maintutils
     +
     +opts = None
     +verbose = False
    @@ contrib/gen-MAINTAINERS.py (new)
     +This file is autogenerated.  DO NOT EDIT or your changes will be lost.
     +Instead, add your details to contrib/MAINTAINERS.yml and run
     +
    -+        contrib/gen-MAINTAINERS.py -o MAINTAINERS contrib/MAINTAINERS.yml
    ++        contrib/gen-MAINTAINERS.py -o MAINTAINERS MAINTAINERS.yml
     +
     +This file contains information about people who are permitted to make
     +changes to various parts of the compiler and associated libraries.
    @@ contrib/gen-MAINTAINERS.py (new)
     +def mylower(txt):
     +    return unidecode.unidecode(txt).lower()
     +
    -+def check_schema(data):
    -+    return
    -+
    -+def validate(data):
    -+    """Check the data against the schema and our own consistency checks"""
    -+    check_schema(data)
    -+    # The data conforms to the expected schema, so now run some data
    -+    # validation checks.
    -+    return
    -+
     +def format_output(outfile, data):
     +    global active_only
     +    all_users = data['users']
    @@ contrib/gen-MAINTAINERS.py (new)
     +        sys.exit(1)
     +    verbose = opts.verbose
     +    active_only = opts.active_only
    -+    with open(args[0], "r", encoding="utf-8") as f:
    -+        data = yaml.load (f, Loader=Loader)
    -+    validate(data)
    ++    data = maintutils.load(args[0])
    ++    maintutils.validate(data)
     +    if opts.outfilename:
     +        out_file = open(opts.outfilename, "w", encoding="utf-8")
     +    else:
    @@ contrib/gen-MAINTAINERS.py (new)
     +
     +if __name__ == "__main__":
     +    sys.exit (main())
    +
    + ## contrib/maintainer_utils.py (new) ##
    +@@
    ++#!/usr/bin/env python3
    ++
    ++# Utilities for manipulating/testing the MAINTAINERS.yml data.
    ++
    ++# Copyright (C) 2026 Free Software Foundation, Inc.
    ++#
    ++# This file is part of GCC.
    ++#
    ++# GCC is free software; you can redistribute it and/or modify
    ++# it under the terms of the GNU General Public License as published by
    ++# the Free Software Foundation; either version 3, or (at your option)
    ++# any later version.
    ++#
    ++# GCC is distributed in the hope that it will be useful,
    ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
    ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ++# GNU General Public License for more details.
    ++#
    ++# You should have received a copy of the GNU General Public License
    ++# along with GCC; see the file COPYING.  If not, write to
    ++# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
    ++# Boston, MA 02110-1301, USA.
    ++
    ++import json
    ++import jsonschema
    ++import sys
    ++import unidecode
    ++import yaml
    ++# Prefer the libYAML implementations if available.  Fall back to the
    ++# pure python versions as a backup.
    ++try:
    ++    from yaml import CLoader as Loader, CDumper as Dumper
    ++except:
    ++    from yaml import Loader, Dumper
    ++
    ++maintainer_schema = {
    ++    '$schema': 'https://json-schema.org/draft/2020-12/schema',
    ++    'type': 'object',
    ++    'properties': {
    ++        'users': {
    ++            'type': 'array',
    ++            'items': {
    ++                'type': 'object',
    ++                'properties': {
    ++                    'sn': {
    ++                        'type': 'string',
    ++                        'minlength': 1,
    ++                    },
    ++                    'cn': {
    ++                        'type': 'string',
    ++                        'minlength': 1,
    ++                    },
    ++                    'email': {
    ++                        'type': 'array',
    ++                        'items': {
    ++                            'type': 'string',
    ++                            'format': 'email',
    ++                        },
    ++                    },
    ++                    'roles': {
    ++                        'type': 'array',
    ++                        'items': {
    ++                            'oneOf': [
    ++                                {
    ++                                    'type': 'string',
    ++                                    'enum': ['Global', 'WriteAfter', 
'BZ'],
    ++                                },
    ++                                {
    ++                                    'type': 'object',
    ++                                    'properties': {
    ++                                        'WriteAfter': {
    ++                                            'type': 'string',
    ++                                            'format': 'email',
    ++                                        },
    ++                                        'DCO': {
    ++                                            'type': 'string',
    ++                                            'format': 'email',
    ++                                        },
    ++                                    },
    ++                                    'additionalProperties': False,
    ++                                },
    ++                                {
    ++                                    'type': 'object',
    ++                                    'properties': {
    ++                                        'Maintainer': {
    ++                                            'type': 'string',
    ++                                        },
    ++                                        'Reviewer': {
    ++                                            'type': 'string',
    ++                                        },
    ++                                        'email': {
    ++                                            'type': 'string',
    ++                                            'format': 'email',
    ++                                        },
    ++                                    },
    ++                                    'additionalProperties': False,
    ++                                    'oneOf': [
    ++                                        {'required': ["Maintainer"] },
    ++                                        {'required': ["Reviewer"] },
    ++                                    ],
    ++                                },
    ++                            ],
    ++                        },
    ++                        'minlength': 1,
    ++                    },
    ++                    'account': {
    ++                        'type': 'string',
    ++                        'minlength': 1,
    ++                        'pattern': '[a-zA-Z][a-zA-Z0-9]*',
    ++                    },
    ++                    'aliases': {
    ++                        'type': 'array',
    ++                        'minlength': 1,
    ++                        'items': {
    ++                            'type': 'string',
    ++                            'minlength': 1,
    ++                        },
    ++                    },
    ++                    'inactive': {
    ++                        'type': 'boolean',
    ++                    }
    ++                },
    ++                'additionalProperties': False,
    ++                'required': ['sn', 'cn', 'email', 'roles'],
    ++            },
    ++        },
    ++        'subsystems': {
    ++            'type': 'array',
    ++            'items': {
    ++                'type': 'object',
    ++                'properties': {
    ++                    'name': {
    ++                        'type': 'string',
    ++                        'minlength': 1,
    ++                    },
    ++                    'class': {
    ++                        'type': 'string',
    ++                        'minlength': 1,
    ++                    },
    ++                    'labels': {
    ++                        'type': 'array',
    ++                        # Disabled until we populate the labels
    ++                        # 'minlength': 1,
    ++                        'items': {
    ++                            'type': 'string',
    ++                            'minlength': 3,
    ++                            'pattern': 
'[a-zA-Z][-+a-zA-Z0-9]*(/[a-zA-Z][-+a-zA-Z0-9]*)+',
    ++                        },
    ++                    },
    ++                },
    ++                'additionalProperties': False,
    ++                'required': ['name', 'labels'],
    ++            },
    ++        },
    ++    },
    ++}
    ++
    ++error_count = 0
    ++warning_count = 0
    ++
    ++def _fatal (msg):
    ++    print (f"fatal: {msg}", file=sys.stderr)
    ++    sys.exit (1)
    ++
    ++def _error (msg):
    ++    global error_count
    ++    print (f"error: {msg}", file=sys.stderr)
    ++    error_count += 1
    ++
    ++def _warning (msg):
    ++    global warning_count
    ++    print (f"warning: {msg}", file=sys.stderr)
    ++    warning_count += 1
    ++
    ++def _format_path (path, data):
    ++    """Try to turn a validation error path into something more readable"""
    ++    elts = [""]
    ++    cur = data
    ++    try:
    ++        for elt in path:
    ++            if isinstance (cur, list) and isinstance (elt, int):
    ++                item = cur[elt]
    ++                if isinstance (item, dict) and 'cn' in item:
    ++                    elts[-1] += f"[cn = {item['cn']}]"
    ++                elif isinstance (item, dict) and 'name' in item:
    ++                    elts[-1] += f"[name = {item['name']}]"
    ++                else:
    ++                    elts[-1] += f"[(anon index): {elt}]"
    ++                cur = item
    ++            else:
    ++                cur = cur[elt]
    ++                elts.append (str (elt))
    ++    except Exception as e:
    ++        print ('/'.join(elts))
    ++        raise e
    ++    if elts[0] == "":
    ++        elts = elts[1:]
    ++    return '/'.join(elts)
    ++
    ++def _check_schema(data):
    ++    try:
    ++        schema = 
jsonschema.validators.Draft202012Validator(maintainer_schema)
    ++        errors = sorted(schema.iter_errors(data), key=lambda e: e.path)
    ++        for err in errors:
    ++            _error (f"{_format_path (err.path, data)}: {err.message}")
    ++    except jsonschema.exceptions.SchemaError as e:
    ++        _fatal (str (e))
    ++    return
    ++
    ++def validate(data):
    ++    """Check the data against the schema and our own consistency checks"""
    ++    _check_schema(data)
    ++    # The data conforms to the expected schema, so now run some data
    ++    # validation checks.
    ++
    ++    # Maintainer and Reviewer roles need to match entries in the
    ++    # subsystems list; Maintainer entires must also have a class entry, 
though
    ++    # that is optional for Reviewers.
    ++    for u in data['users']:
    ++        # Users with the 'BZ' role should not have any other roles; we
    ++        # can quickly skip the additional checks if that is the case.
    ++        if (len(u['roles']) == 1
    ++            and u['roles'][0] == 'BZ'):
    ++            continue
    ++        seen_writeafter = False
    ++        only_dco = True
    ++        for r in u['roles']:
    ++            if isinstance (r, str):
    ++                if r == 'BZ':
    ++                    _error(
    ++                        f"User '{u['cn']}' has 'BZ' role as well as 
others.")
    ++                if r == 'WriteAfter':
    ++                    seen_writeafter = True
    ++                only_dco = False
    ++                continue
    ++            if 'WriteAfter' in r:
    ++                seen_writeafter = True
    ++            need_class = True
    ++            if 'DCO' in r:
    ++                continue
    ++            only_dco = False
    ++            n = r.get('Maintainer')
    ++            if not n:
    ++                need_class = False
    ++                n = r.get('Reviewer')
    ++            if n:
    ++                subsystems = list(filter (lambda s: s['name'] == n,
    ++                                          data['subsystems']))
    ++                if len(subsystems) == 1:
    ++                    if (need_class
    ++                        and not 'class' in subsystems[0]):
    ++                        _error (f"subsystem '{n}' missing a class.")
    ++                elif len(subsystems) == 0:
    ++                    _error (f"No subsystem entry for '{n}'.")
    ++                else:
    ++                    _error (f"Multiple subsystem entries for '{n}'.")
    ++        if not seen_writeafter and not only_dco:
    ++            _error(f"User '{u['cn']}' lacks WriteAfter role.")
    ++    if error_count:
    ++        sys.exit(1)
    ++    return
    ++
    ++def load(file):
    ++    with open(file, "r", encoding="utf-8") as f:
    ++        data = yaml.load (f, Loader=Loader)
    ++    return data
    ++
    ++def main():
    ++    if len(sys.argv) != 2:
    ++        print(f"Usage: {sys.argv[0]} path-to-MAINTAINERS.yml")
    ++        return 1
    ++    validate (load (sys.argv[1]))
    ++    return 0
    ++
    ++if __name__ == "__main__":
    ++    sys.exit(main())
-:  ------------ > 3:  c859279b9ca2 MAINTAINERS.yml: Correct Martin Liška's name
-:  ------------ > 4:  0d6e37c81933 MAINTAINERS.yml: Restore James Norris' 
email address
-:  ------------ > 5:  051566a8c9b5 MAINTAINERS.yml: Handle libgrust explicitly
-:  ------------ > 6:  7db00e1ea371 MAINTAINERS.yml: Add libcpp to all C and 
C++ maintainer's roles
-:  ------------ > 7:  67cda742b456 MAINTAINERS: generate from MAINTAINERS.yml
-:  ------------ > 8:  65fb98fc5dca MAINTAINERS: Add a script to create a new 
entry in the mainainers data
-- 
2.54.0

Reply via email to