1 |
On czw, 2017-07-20 at 10:02 +0200, Michał Górny wrote: |
2 |
> Hi, |
3 |
> |
4 |
> As suggested earlier, here's a new doc&policy for review. Please do not |
5 |
> edit the wiki page. I'm inlining the text in the mail to facilitate |
6 |
> replying with quotations since our crappy wiki lacks any review system. |
7 |
> |
8 |
> https://wiki.gentoo.org/wiki/User:MGorny/Extra_proxy-maint_guide |
9 |
> |
10 |
|
11 |
Here's v2, taking into account suggestions from k_f and wraeth: |
12 |
|
13 |
==Privileges and responsibilities of proxied maintainers== |
14 |
What you get as a proxied maintainer: |
15 |
* ability to maintain ebuilds directly in the Gentoo repository for all |
16 |
our users to use; |
17 |
* coverage from our teams: QA, security; |
18 |
* coverage by package-oriented services: [http://euscan.gentooexperiment |
19 |
al.org euscan], [https://qa-reports.gentoo.org/ qa-reports], |
20 |
[https://repology.org/ repology]; |
21 |
* ability to request keywording on additional architectures (but note |
22 |
that most of arch teams are against proactive keywording) and to request |
23 |
stabilization; |
24 |
* quality reviews from our proxy-maint team and other Gentoo developers, |
25 |
* training and credibility needed to become a Gentoo developer. |
26 |
|
27 |
What you don't get: |
28 |
* ability to commit straight into the repository — all commits need to |
29 |
be reviewed and pushed by us, |
30 |
* full decision power — we reserve the right to reject or override your |
31 |
decisions at the review level, |
32 |
* ability to reject other maintainers — we encourage cooperation, not |
33 |
seclusion. |
34 |
|
35 |
Your responsibility is to maintain the package, that is: |
36 |
* address bugs reported against the package to the best of your skills, |
37 |
* bump the package to new versions in a reasonable time, |
38 |
* ensure that the package complies to the modern ebuild quality |
39 |
standards and follows the best development practices (preferably of your |
40 |
own accord) — i.e. uses the newest EAPI, has no QA issues, |
41 |
* clean old versions of the package up, request stabilization of new |
42 |
versions (if the package is stable), |
43 |
* inform us when you are no longer willing to maintain the package. |
44 |
|
45 |
The proxy-maint team is willing to help you with all those tasks. |
46 |
However, we expect that you at least keep the basic communication with |
47 |
us. |
48 |
|
49 |
==How to become a proxied maintainer== |
50 |
===Adding a new package=== |
51 |
As a proxied maintainer, you can add new packages to Gentoo, as long as |
52 |
you're willing to maintain them afterwards. In order to do so, please |
53 |
submit the initial package files using one of the submission methods. |
54 |
Make sure to include yourself and the proxy-maint project in the |
55 |
{{Path|metadata.xml}} files. |
56 |
|
57 |
Our team will review the submitted files and help you bring them to the |
58 |
top quality. Once the package is ready, we will merge it and close the |
59 |
relevant bugs (if there are any). |
60 |
|
61 |
Please note that we reserve the right to reject new packages, especially |
62 |
if they would otherwise qualify for removal per our quality standards. |
63 |
Example reasons for rejection include: |
64 |
* having known major bugs or security issues that you are unable to fix, |
65 |
* having inactive upstream and maintaining them would require a lot of |
66 |
effort, |
67 |
* requiring specific knowledge which we lack and which makes it |
68 |
inappropriate for us to review them (e.g. core system packages), |
69 |
* having no usefulness for Gentoo users (this only applies to extreme |
70 |
cases). |
71 |
|
72 |
===Taking over an existing package=== |
73 |
As a proxied maintainer, you can also (co-)maintain existing Gentoo |
74 |
packages (both those with no maintainer, maintained by other proxied |
75 |
maintainers and maintained by Gentoo developers/projects). In order to |
76 |
take over the maintenance of a package, submit a commit adding yourself |
77 |
to the {{Path|metadata.xml}} files. Usually, this commit will be |
78 |
included along with other changes to the package. |
79 |
|
80 |
There are a few points to consider first: |
81 |
* If the package has an existing maintainer, it is best to communicate |
82 |
with him prior to submitting anything. When you submit your request, we |
83 |
will ask him to review it and approve your request. Gentoo developers |
84 |
can reject a proxied maintainer if they have a good reason to do so. |
85 |
* If the package has major bugs qualifying it for removal (esp. if |
86 |
you're taking over maintenance in reply to last rites), you will be |
87 |
required to provide a fix at least for the most nagging issues. |
88 |
* If you do not have major prior contributions as a proxied maintainer, |
89 |
you will be required to do some additional changes to the package — for |
90 |
example, fix some bug(s) and/or update the package to the modern coding |
91 |
standards. |
92 |
|
93 |
==How to submit package updates== |
94 |
===GitHub pull requests=== |
95 |
The most efficient way of submitting your contributions is through [http |
96 |
s://github.com/gentoo/gentoo/pulls pull requests on our GitHub |
97 |
repository]. At the moment, it gives the best response time, the widest |
98 |
audience for reviews and some nice scripting (including CI) to help. |
99 |
|
100 |
In order to submit a pull request, fork the repository, create a new |
101 |
branch and commit your changes there. Afterwards, [https://help.github.c |
102 |
om/articles/creating-a-pull-request/ create a pull request]. |
103 |
|
104 |
{{Tip|Once you push your new branch, visit the GitHub page of your fork. |
105 |
GitHub will show you a banner suggesting creating a pull request. Using |
106 |
it, you can avoid the necessity of specifying the fork and branch |
107 |
manually.}} |
108 |
|
109 |
Once the pull request is created, our tooling will automatically CC the |
110 |
relevant people (maintainers and/or proxy-maint team) and perform basic |
111 |
QA checks via [https://github.com/pkgcore/pkgcheck pkgcheck]. If any |
112 |
issues are reported, please fix them or explicitly ask for help. Our |
113 |
reviewers may skip pull requests which are marked as not passing CI. |
114 |
|
115 |
Afterwards, follow the suggestions given by reviewers and push updates |
116 |
until the pull request is fully approved. If you do not receive a reply |
117 |
within a reasonable time, please make sure to ping us on the pull |
118 |
request. When it's ready and approved, we'll merge it. |
119 |
|
120 |
It is recommended that you try to keep the same commit structure as |
121 |
you'd use when committing straight to Gentoo as a developer, and follow |
122 |
the best git practices (atomic changes, proper commit messages). For |
123 |
smaller changes, we can squash and reword the commits for you. However, |
124 |
if you're going to actively maintain multiple packages or submit larger |
125 |
changes, we will require you to squash, split and word your commits |
126 |
appropriately. Please see the git documentation on [https://git-scm.com/ |
127 |
book/en/v2/Git-Tools-Rewriting-History rewriting history]. Once you've |
128 |
got updated commit set, use <code>git push --force</code> to overwrite |
129 |
your previous commits on the pull request branch. |
130 |
|
131 |
===Mailing list patches=== |
132 |
{{Note|This variant has not been tested by anyone yet.}} |
133 |
|
134 |
One of the alternatives to GitHub is to use the [https://archives.gentoo |
135 |
.org/gentoo-proxy-maint/ gentoo-proxy-maint@l.g.o] mailing |
136 |
list. In order to use the list, you need to [mailto:gentoo-proxy- |
137 |
maint+subscribe@l.g.o subscribe] first. Once you've confirmed |
138 |
your subscription, you should be able to send patches for review. |
139 |
|
140 |
Please prepare your commits just like you would for a pull request. |
141 |
Afterwards, use <kbd>git send-email</kbd> to send them to the mailing |
142 |
list. For help on it, please see [https://www.freedesktop.org/wiki/Softw |
143 |
are/PulseAudio/HowToUseGitSendEmail/ how to use git send-email] (a good |
144 |
guide from pulseaudio wiki — please remember to correct the mailing list |
145 |
address). |
146 |
|
147 |
Once your initial patch set is submitted, the proxy-maint team members |
148 |
will reply with their review comments. Once you address a particular set |
149 |
of issues, please update the commits and send another batch of patches |
150 |
'''in reply to the original message''' (using the <kbd>--in-reply- |
151 |
to</kbd> option), using the next version number. It is important that |
152 |
you follow this practice so that everyone can find the newest version of |
153 |
the commits easily. |
154 |
|
155 |
Similar practices as with GitHub pull requests apply — try to keep the |
156 |
commit structure clean and suitable for direct merge. Similarly to pull |
157 |
requests, this method can preserve commit structure and attribution but |
158 |
it does not support automatic assignment or CI. |
159 |
|
160 |
===Bug reports=== |
161 |
The classical method of submitting your changes is to attach them to the |
162 |
bugs. Please make sure that the proxy-maint project is in CC of the bugs |
163 |
related to proxy-maintained packages. |
164 |
|
165 |
Preferably, structure your changes as git commits and attach patches |
166 |
created using <kbd>git format-patch</kbd>. Attaching single files is |
167 |
inconvenient for the developers who have to review and download every |
168 |
file separately. Attaching tarballs is strongly discouraged as it makes |
169 |
review with quotation impossible. |
170 |
|
171 |
When you have attached changes that are ready for review, please make |
172 |
sure to mark the bug with both ''EBUILD'' and ''PATCH'' keywords. |
173 |
|
174 |
|
175 |
==Being a proxied maintainer== |
176 |
===Best git practices=== |
177 |
While preparing your submissions, we strongly encourage you to follow |
178 |
the same git practices that our regular developers are expected to |
179 |
follow. This ensures that we can merge your changes quickly, and with as |
180 |
little modification as necessary. You can find a short set of good git |
181 |
practices in our [[Gentoo GitHub]] article (it is not specific to |
182 |
GitHub). |
183 |
|
184 |
===CI vs repoman=== |
185 |
If you are using the pull request workflow, your submissions are |
186 |
verified by the CI system. Nevertheless, you are still expected to use |
187 |
repoman to commit or verify your ebuilds before/after committing. |
188 |
|
189 |
Note that both CI and repoman do not test experimental (and developer) |
190 |
profiles by default. The skipped profiles at the time of writing |
191 |
include: |
192 |
* all profiles for arm64, m68k, mips, nios2, riscv, s390, sh, |
193 |
* all profiles for FreeBSD and Prefix, |
194 |
* some less common profiles, e.g. no-multilib amd64 or x32 profiles. |
195 |
|
196 |
You need to explicitly use <kbd>repoman full -e y</kbd> to verify the |
197 |
experimental profiles. |
198 |
|
199 |
===Proxied maintainer in metadata.xml=== |
200 |
Proxied maintainers are listed in {{Path|metadata.xml}} like any other |
201 |
maintainers. The only difference is that since they can not commit on |
202 |
their own, the proxy-maint project is listed as well to facilitate |
203 |
committing. The proxy-maint project is always listed ''after'' proxied |
204 |
maintainers since it does not maintain the package on its own. |
205 |
|
206 |
{{FileBox|title=Example metadata.xml for a package that is co-maintained |
207 |
by a proxied maintainer (primary) and Perl project (co- |
208 |
maintainer)|filename=metadata.xml|lang=xml|1=<?xml version="1.0" |
209 |
encoding="UTF-8"?> |
210 |
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">; |
211 |
|
212 |
<pkgmetadata> |
213 |
<maintainer type="person"> |
214 |
<email>author@×××××××.com</email> |
215 |
<name>A. U. Thor</name> |
216 |
</maintainer> |
217 |
<maintainer type="project"> |
218 |
<email>perl@g.o</email> |
219 |
<name>>Gentoo Perl Project</name> |
220 |
</maintainer> |
221 |
<maintainer type="project"> |
222 |
<email>proxy-maint@g.o</email> |
223 |
<name>Proxy Maintainers</name> |
224 |
</maintainer> |
225 |
</pkgmetadata>}} |
226 |
|
227 |
Please note that the e-mail address used in {{Path|metadata.xml}} is |
228 |
used to assign bugs to the proxied maintainer, and therefore must |
229 |
correspond to a registered [https://bugs.gentoo.org Gentoo Bugzilla] |
230 |
account. |
231 |
|
232 |
===Resolving bugs=== |
233 |
As a proxied maintainer, you are expected to handle bugs against your |
234 |
packages yourself. This includes resolving them once your fix is merged |
235 |
by a proxy maintainer or rejecting them based on your own judgment. |
236 |
|
237 |
The Bugzilla permissions for regular users allow them to resolve only |
238 |
bugs that they are either assignee or reporter of. At the same time, it |
239 |
permits only one assignee meaning that the remaining assignees are added |
240 |
to the CC field. If that is the case for you, you will have to ask us to |
241 |
close the bug for you. |
242 |
|
243 |
Once you have a few good contributions, we can vouch for providing the |
244 |
''editbugs'' group membership to you. It will allow you to edit all |
245 |
Gentoo bugs, including resolving and reassigning them. |
246 |
|
247 |
===Keywording & stabilization=== |
248 |
As a proxied maintainer, you can request [https://devmanual.gentoo.org/k |
249 |
eywording/index.html keywording and stabilization] of your packages. |
250 |
However, all those requests need to be approved by proxy-maint team |
251 |
member (or a regular developer co-maintainer) first. |
252 |
|
253 |
===Cleaning up old ebuilds=== |
254 |
To avoid cluttering the repository with old ebuilds, it is recommended |
255 |
that you clean them up either periodically or on version bumps (if you |
256 |
do not expect to stabilize the specific old version). Please remember to |
257 |
remove old patches and other misc files along with the old versions, and |
258 |
to verify that the package has no reverse dependencies that depend on |
259 |
the old version. |
260 |
|
261 |
If you are using the GitHub pull request workflow, then the CI will |
262 |
verify that your commits do not break reverse dependencies on major |
263 |
profiles. However, note that experimental and developer profiles are not |
264 |
tested currently. |
265 |
|
266 |
===The maintainer bug=== |
267 |
Since proxied maintainers do not have full access to the Gentoo |
268 |
developer services, the proxy-maint project is using ''maintainer bugs'' |
269 |
to track status of the proxied maintainers. |
270 |
|
271 |
Once your first contribution is merged, we will create the maintainer |
272 |
bug for you. We will note your name and/or nickname (for communication |
273 |
purposes) and your e-mail address used in metadata.xml. We will |
274 |
afterwards use the bug to track the changes in your e-mail address and |
275 |
your contributor status. |
276 |
|
277 |
If you ever need to change your Bugzilla e-mail address, please remember |
278 |
to submit an update to your package {{Path|metadata.xml}} files first. |
279 |
Preferably, wait till it is merged before updating Bugzilla as otherwise |
280 |
we will temporarily be unable to assign bugs properly. Please also leave |
281 |
a comment with your new address on the maintainer bug. |
282 |
|
283 |
If you go on vacation or otherwise expect to be unavailable for a period |
284 |
of time, please note that on the maintainer bug. You can use the |
285 |
''whiteboard'' field to provide the expected return date and any |
286 |
requests wrt handling the bugs on your packages (i.e. whether other |
287 |
developers should merge fixes in your absence). |
288 |
|
289 |
==How to step down as a proxied maintainer== |
290 |
If you decide that you don't want to maintain some of your packages |
291 |
anymore, please follow the following procedure: |
292 |
# If you are the last maintainer of some of the packages (not counting |
293 |
proxy-maint project), please send an email to [mailto:gentoo-dev@lists.g |
294 |
entoo.org gentoo-dev@l.g.o] mailing list titled 'Packages up |
295 |
for grabs: …' and listing all packages that you are no longer willing to |
296 |
maintain. It is usually a good idea to shortly describe the state of |
297 |
packages, i.e. whether the packages have open bugs, whether they are |
298 |
hard to maintain etc. |
299 |
# Submit a patch removing yourself from the {{Path|metadata.xml}} files |
300 |
of the packages: |
301 |
#* If you are the last proxied maintainer of the package, remove the |
302 |
proxy-maint project along with you. |
303 |
#* If you are the last maintainer of the package, please insert a |
304 |
comment stating exactly: |
305 |
#*:<pre><nowiki><!--maintainer-needed--></nowiki></pre> |
306 |
#*:in the place of maintainers. This will help other developers to grep |
307 |
packages with no maintainers. |
308 |
|
309 |
-- |
310 |
Best regards, |
311 |
Michał Górny |