Skip to content

Commit 62c5f76

Browse files
ntaroccoslint
andcommitted
maintainers: add new unlisted maintainers handbook page
Co-authored-by: Alex Ioannidis <[email protected]>
1 parent a2a7650 commit 62c5f76

File tree

3 files changed

+178
-32
lines changed

3 files changed

+178
-32
lines changed

src/assets/css/style.scss

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,6 +1080,20 @@ i.large-icon {
10801080
text-align: center;
10811081
}
10821082

1083+
.maintainers-section h1,
1084+
.maintainers-section h2,
1085+
.maintainers-section h3,
1086+
.maintainers-section h4,
1087+
.maintainers-section h5,
1088+
.maintainers-section h6 {
1089+
color: #0377cd;
1090+
margin-left: 0px;
1091+
}
1092+
.maintainers-section p,
1093+
.maintainers-section ul {
1094+
text-align: justify;
1095+
}
1096+
10831097
h4 {
10841098
border-width: 2px;
10851099
border-radius: 25px;
@@ -1109,7 +1123,7 @@ h2 {
11091123
.showcase-nav-menu {
11101124
margin: 40px 0 50px 0;
11111125
padding: 0 20px;
1112-
1126+
11131127
.nav-buttons {
11141128
display: flex;
11151129
justify-content: center;
@@ -1118,7 +1132,7 @@ h2 {
11181132
max-width: 900px;
11191133
margin: 0 auto;
11201134
}
1121-
1135+
11221136
.nav-button {
11231137
display: flex;
11241138
align-items: center;
@@ -1131,40 +1145,40 @@ h2 {
11311145
transition: all 0.2s ease;
11321146
min-width: 160px;
11331147
position: relative;
1134-
1148+
11351149
&:hover {
11361150
border-color: #0377cd;
11371151
box-shadow: 0 2px 8px rgba(3, 119, 205, 0.15);
1138-
1152+
11391153
.nav-icon {
11401154
color: #0377cd;
11411155
}
1142-
1156+
11431157
.nav-title {
11441158
color: #0377cd;
11451159
}
11461160
}
1147-
1161+
11481162
&.active {
11491163
background: #0377cd;
11501164
border-color: #0377cd;
11511165
color: white;
11521166
box-shadow: 0 2px 8px rgba(3, 119, 205, 0.2);
1153-
1167+
11541168
.nav-icon {
11551169
color: white;
11561170
}
1157-
1171+
11581172
.nav-title {
11591173
color: white;
11601174
font-weight: 600;
11611175
}
1162-
1176+
11631177
.nav-subtitle {
11641178
color: rgba(255, 255, 255, 0.8);
11651179
}
11661180
}
1167-
1181+
11681182
.nav-icon {
11691183
margin-right: 12px;
11701184
font-size: 16px;
@@ -1176,22 +1190,22 @@ h2 {
11761190
width: 18px;
11771191
height: 18px;
11781192
}
1179-
1193+
11801194
.nav-text {
11811195
display: flex;
11821196
flex-direction: column;
11831197
align-items: flex-start;
11841198
flex: 1;
11851199
}
1186-
1200+
11871201
.nav-title {
11881202
font-size: 14px;
11891203
font-weight: 500;
11901204
color: #2c3e50;
11911205
margin-bottom: 2px;
11921206
transition: all 0.2s ease;
11931207
}
1194-
1208+
11951209
.nav-subtitle {
11961210
font-size: 11px;
11971211
color: #6c757d;
@@ -1204,7 +1218,7 @@ h2 {
12041218
/* Section Content Spacing */
12051219
.showcase-section-content {
12061220
margin-bottom: 80px;
1207-
1221+
12081222
&:last-child {
12091223
margin-bottom: 40px;
12101224
}
@@ -1217,22 +1231,22 @@ h2 {
12171231
gap: 6px;
12181232
max-width: 700px;
12191233
}
1220-
1234+
12211235
.nav-button {
12221236
min-width: 140px;
12231237
padding: 10px 16px;
1224-
1238+
12251239
.nav-icon {
12261240
font-size: 14px;
12271241
width: 16px;
12281242
height: 16px;
12291243
margin-right: 10px;
12301244
}
1231-
1245+
12321246
.nav-title {
12331247
font-size: 13px;
12341248
}
1235-
1249+
12361250
.nav-subtitle {
12371251
font-size: 10px;
12381252
}
@@ -1244,30 +1258,30 @@ h2 {
12441258
.showcase-nav-menu {
12451259
margin: 30px 0 40px 0;
12461260
padding: 0 15px;
1247-
1261+
12481262
.nav-buttons {
12491263
flex-direction: column;
12501264
align-items: center;
12511265
gap: 8px;
12521266
max-width: 350px;
12531267
}
1254-
1268+
12551269
.nav-button {
12561270
width: 100%;
12571271
max-width: 280px;
12581272
padding: 12px 16px;
1259-
1273+
12601274
.nav-icon {
12611275
font-size: 14px;
12621276
width: 16px;
12631277
height: 16px;
12641278
margin-right: 10px;
12651279
}
1266-
1280+
12671281
.nav-title {
12681282
font-size: 13px;
12691283
}
1270-
1284+
12711285
.nav-subtitle {
12721286
font-size: 10px;
12731287
}
@@ -1279,18 +1293,18 @@ h2 {
12791293
.showcase-nav-menu {
12801294
.nav-button {
12811295
padding: 10px 14px;
1282-
1296+
12831297
.nav-icon {
12841298
font-size: 13px;
12851299
width: 15px;
12861300
height: 15px;
12871301
margin-right: 8px;
12881302
}
1289-
1303+
12901304
.nav-title {
12911305
font-size: 12px;
12921306
}
1293-
1307+
12941308
.nav-subtitle {
12951309
font-size: 9px;
12961310
}
@@ -1494,25 +1508,25 @@ h2 {
14941508
.showcase-card {
14951509
margin-bottom: 20px;
14961510
}
1497-
1511+
14981512
.showcase-content {
14991513
padding: 20px;
15001514
}
1501-
1515+
15021516
.showcase-content h3 {
15031517
font-size: 18px;
15041518
}
1505-
1519+
15061520
.showcase-description {
15071521
font-size: 14px;
15081522
min-height: auto;
15091523
}
1510-
1524+
15111525
.showcase-section-content .section-title {
15121526
font-size: 28px;
15131527
margin-top: 40px;
15141528
}
1515-
1529+
15161530
.showcase-section-content .section-description {
15171531
font-size: 16px;
15181532
}

src/maintainers.html

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
---
2+
title: Maintainers Handbook
3+
eleventyNavigation:
4+
key: 'Maintainers'
5+
parent: Community
6+
order: 6
7+
---
8+
{% layout 'layouts/page.html' %}
9+
10+
{% block content %}
11+
<section class="maintainers-section section-content-white-bg">
12+
<div class="container">
13+
<h1>Introduction</h1>
14+
<p>
15+
Maintainers are a key part of the Invenio open source community. They help
16+
ensure the health, quality, and sustainability of the codebase while
17+
fostering a welcoming environment for contributors. This document defines
18+
the role of maintainers, their responsibilities, how to become a
19+
maintainer, and related processes.
20+
</p>
21+
22+
<h2>Role of Maintainers</h2>
23+
<p>
24+
Maintainers are individuals who have demonstrated expertise and commitment
25+
to the Invenio project. They maintain at least one Invenio software
26+
repository and are appointed by the Principal Architect, in accordance
27+
with the Product Manager.
28+
</p>
29+
30+
<h2>Responsibilities</h2>
31+
<p>Maintainers have responsibilities across several key areas:</p>
32+
<p>
33+
<strong>Technical Leadership:</strong> Maintainers participate in
34+
architectural discussions, make technical decisions, and evaluate
35+
contributions for community reusability. They help shape the technical
36+
architecture in coordination with the Principal Architect and manage
37+
releases according to the <a href="/governance/">principles</a> and
38+
<a href="https://github.com/orgs/inveniosoftware/projects/80">roadmap</a>.
39+
They may specialize in specific areas of the framework such as
40+
translations, infrastructure, metadata schemas, or UI/UX.
41+
</p>
42+
<p>
43+
<strong>Code Quality and Repository Management</strong>: Maintainers
44+
review pull requests, test new changes, manage issues, prepare releases,
45+
backport changes when necessary, and address security vulnerabilities.
46+
They ensure contributions follow best practices and are aligned with
47+
project goals. A minimum of two maintainers should agree before merging
48+
significant changes.
49+
</p>
50+
<p>
51+
<strong>Community Support</strong>: Maintainers guide newcomers, answer
52+
questions and share their expertise on communication channels (GitHub,
53+
Discord, Discourse), help engage contributors, and ensure adequate
54+
documentation for repositories. They identify testers and reviewers for
55+
complex PRs and participate in merge parties during telecons and events.
56+
</p>
57+
<p>
58+
<strong>Fostering Best Practices:</strong> Maintainers exemplify the Code
59+
of Conduct and maintain a supportive environment for contributors. They
60+
use GitHub boards to organize work, proactively address technical debt,
61+
and seek input from other maintainers when reviewing unfamiliar changes.
62+
Regular participation in community events and an active presence in
63+
communication channels helps maintain project momentum.
64+
</p>
65+
<h2>Becoming a Maintainer</h2>
66+
<h3>Prerequisites</h3>
67+
<ul>
68+
<li>Active contributor to Invenio</li>
69+
<li>Demonstrated understanding of the codebase</li>
70+
<li>Adherence to the Code of Conduct and Maintainers Handbook</li>
71+
<li>Track record of quality contributions</li>
72+
<li>
73+
Association with a participating partner organization is typical but not
74+
required
75+
</li>
76+
</ul>
77+
<h3>Application Process</h3>
78+
<ol>
79+
<li>
80+
Applicant – Contact the Product Manager or Principal Architect to
81+
express interest, <strong>OR</strong> be nominated by current
82+
maintainers
83+
</li>
84+
<li>
85+
Existing maintainers
86+
<ul>
87+
<li>
88+
Review with consideration for diversity, representation and above
89+
prerequisites.
90+
</li>
91+
<li>
92+
Vote through anonymous process – 7-day period, requires ≥70%
93+
positive votes and &lt;20% negative votes with majority
94+
participation
95+
</li>
96+
</ul>
97+
</li>
98+
<li>
99+
Applicant – Onboard with appropriate GitHub access and introduction to
100+
communication channels, tools, and practices
101+
</li>
102+
<li>
103+
Applicant – Formal announcement in official channels and update to
104+
public pages
105+
</li>
106+
</ol>
107+
108+
<h2>Leaving the Maintainer Role</h2>
109+
<ul>
110+
<li>
111+
<strong>Voluntary Departure:</strong> Notify leadership and assist with
112+
transitioning responsibilities when possible.
113+
</li>
114+
<li>
115+
<strong>Involuntary Removal:</strong> Leadership may revoke a maintainer
116+
role for lack of activity, Code of Conduct violations, or repeated
117+
infringements of project guidelines. A warning will be given, except in
118+
severe cases, as revoking roles is considered a last measure.
119+
</li>
120+
</ul>
121+
122+
<h2>Communication and Decision-Making</h2>
123+
<p>
124+
Maintainers communicate through the dedicated "maintainers" Discord
125+
channel, GitHub discussions, monthly maintainer calls, and Invenio events.
126+
They follow Invenio's decision-making principles by striving for
127+
consensus, facilitating open discussions, and ensuring alignment with the
128+
overall project vision.
129+
</p>
130+
</div>
131+
</section>
132+
{% endblock %}

src/people.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
eleventyNavigation:
55
key: 'People'
66
parent: Community
7-
order: 6
7+
order: 7
88
---
99
{% layout 'layouts/page.html' %}
1010

0 commit comments

Comments
 (0)