Commit 445e6f9
committed
Add Library Registry access control system
Background
----------
The Arduino Library Registry repository receives thousands of pull requests from a large number of community
contributors. The great majority of these contributors behave in a responsible manner. Unfortunately this repository is
regularly the subject of irresponsible behavior. The small number of people who behave irresponsibly consume a
significant amount of the finite maintenance resources available for maintenance of Arduino's repositories.
Communication is always the first measure taken in these cases. This is done automatically by the bot, and then by the
registry maintainer when it becomes clear that the user has disregarded the comments from the bot. Unfortunately it is
regularly the case that the user simply disregards all communication and continues their pattern of irresponsible
behavior unchecked.
Alternatives
------------
GitHub provides tools for dealing with harmful behavior:
- Report user
- Block user
Reporting a user is the appropriate measure in cases of malicious behavior, and the account is usually banned from the
site relatively quickly after a legitimate report is made. However, the irresponsible behavior in the registry
repository is not overtly malicious and so reporting the user in these cases would not be appropriate or effective.
At first glance, the block feature seems ideal. However, it can only be done at an organization-wide level, and by an
organization administrator. The repository maintainer is not an organization administrator, so this makes the feature
inconvenient to use. There is no sign of these users interacting with other repositories in the `arduino` organization,
and so there is no benefit to blocking them at organization scope. In addition, in order to make it more difficult to
circumvent the access restriction, we need the ability to block requests for libraries owned by an entity who has
established a pattern of irresponsible behavior, regardless of which user submits the request.
So the tools provided by GitHub are not suitable and a bespoke system must be implemented.
Access Levels
-------------
Allow: the user may submit requests for any library, even if registry privileges have been revoked for the owner of the
library's repository. This access level will only be granted to registry maintainers, in order to allow them to make
exceptions for specific libraries owned by an entity whose privileges have been revoked.
Default: the user may submit requests for any library, unless registry privileges have been revoked for the owner of the
library's repository.
Deny: the user may not submit requests. Requests from users with "default" access level for any library repository owned
by the entity (user or organization) are denied.1 parent 77e2d18 commit 445e6f9
File tree
34 files changed
+305
-24
lines changed- tests
- testdata
- all-owner-access-deny
- .github/workflows/assets
- already-in-library-manager/.github/workflows/assets
- duplicates-in-submission/.github/workflows/assets
- list-deleted-diff/.github/workflows/assets
- list-rename-diff/.github/workflows/assets
- modification/.github/workflows/assets
- multi-file-diff/.github/workflows/assets
- no-final-newline-diff/.github/workflows/assets
- no-library-properties/.github/workflows/assets
- no-tags/.github/workflows/assets
- non-list-diff/.github/workflows/assets
- not-git-clone-url/.github/workflows/assets
- not-supported-git-host/.github/workflows/assets
- removal/.github/workflows/assets
- some-owner-access-deny
- .github/workflows/assets
- submitter-access-allow
- .github/workflows/assets
- submitter-access-deny
- .github/workflows/assets
- type-arduino/.github/workflows/assets
- type-contributed/.github/workflows/assets
- type-partner/.github/workflows/assets
- type-recommended/.github/workflows/assets
- url-404/.github/workflows/assets
- url-error/.github/workflows/assets
34 files changed
+305
-24
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
15 | | - | |
16 | 16 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
67 | 68 | | |
68 | 69 | | |
69 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
70 | 94 | | |
71 | 95 | | |
72 | 96 | | |
| |||
89 | 113 | | |
90 | 114 | | |
91 | 115 | | |
| 116 | + | |
| 117 | + | |
92 | 118 | | |
93 | 119 | | |
94 | 120 | | |
95 | 121 | | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
96 | 125 | | |
97 | 126 | | |
98 | 127 | | |
99 | 128 | | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
100 | 133 | | |
101 | 134 | | |
102 | 135 | | |
| |||
109 | 142 | | |
110 | 143 | | |
111 | 144 | | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
112 | 155 | | |
113 | | - | |
| 156 | + | |
114 | 157 | | |
115 | 158 | | |
116 | 159 | | |
| |||
121 | 164 | | |
122 | 165 | | |
123 | 166 | | |
124 | | - | |
125 | | - | |
| 167 | + | |
126 | 168 | | |
127 | 169 | | |
128 | 170 | | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
129 | 179 | | |
130 | 180 | | |
131 | | - | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
132 | 203 | | |
133 | 204 | | |
134 | 205 | | |
135 | 206 | | |
| 207 | + | |
136 | 208 | | |
137 | | - | |
| 209 | + | |
138 | 210 | | |
139 | 211 | | |
140 | 212 | | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
141 | 220 | | |
142 | 221 | | |
143 | 222 | | |
| |||
240 | 319 | | |
241 | 320 | | |
242 | 321 | | |
243 | | - | |
| 322 | + | |
244 | 323 | | |
245 | 324 | | |
246 | 325 | | |
| |||
250 | 329 | | |
251 | 330 | | |
252 | 331 | | |
253 | | - | |
| 332 | + | |
254 | 333 | | |
255 | 334 | | |
256 | 335 | | |
257 | 336 | | |
258 | 337 | | |
259 | 338 | | |
260 | | - | |
| 339 | + | |
261 | 340 | | |
262 | 341 | | |
263 | 342 | | |
264 | | - | |
| 343 | + | |
265 | 344 | | |
266 | 345 | | |
267 | 346 | | |
268 | 347 | | |
269 | 348 | | |
270 | 349 | | |
271 | 350 | | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
272 | 362 | | |
273 | 363 | | |
274 | 364 | | |
275 | | - | |
| 365 | + | |
276 | 366 | | |
277 | 367 | | |
278 | 368 | | |
279 | 369 | | |
280 | 370 | | |
281 | 371 | | |
282 | 372 | | |
283 | | - | |
| 373 | + | |
284 | 374 | | |
285 | 375 | | |
286 | 376 | | |
| |||
299 | 389 | | |
300 | 390 | | |
301 | 391 | | |
302 | | - | |
| 392 | + | |
303 | 393 | | |
304 | 394 | | |
305 | 395 | | |
| |||
344 | 434 | | |
345 | 435 | | |
346 | 436 | | |
347 | | - | |
| 437 | + | |
348 | 438 | | |
349 | 439 | | |
350 | 440 | | |
| |||
362 | 452 | | |
363 | 453 | | |
364 | 454 | | |
365 | | - | |
| 455 | + | |
366 | 456 | | |
367 | 457 | | |
368 | 458 | | |
369 | 459 | | |
370 | | - | |
| 460 | + | |
371 | 461 | | |
372 | 462 | | |
373 | 463 | | |
374 | 464 | | |
375 | 465 | | |
376 | | - | |
| 466 | + | |
377 | 467 | | |
378 | 468 | | |
379 | 469 | | |
| |||
386 | 476 | | |
387 | 477 | | |
388 | 478 | | |
389 | | - | |
| 479 | + | |
390 | 480 | | |
391 | 481 | | |
392 | 482 | | |
| |||
0 commit comments