1 |
On Thu, Jan 19, 2023 at 01:25:19PM +0200, Cedric Sodhi wrote: |
2 |
> I would like to continue https://bugs.gentoo.org/890589 here and also increase the audience. The original policy was voted upon by 6 seniors and approved with no documented opposition or discussion. I think it's possible that it went under the radar a bit. It says: |
3 |
> |
4 |
> > Packages must not disable installing manpages via USE flags (e.g. USE=man or USE=doc). If upstream does not ship prebuilt manpages and building them requires additional dependencies, the maintainer should build them and ship along with the package. |
5 |
> |
6 |
> https://projects.gentoo.org/qa/policy-guide/installed-files.html#pg0305 |
7 |
> |
8 |
> While I acknowledge Gentoo's responsibility to steer things towards the better, I am also a vivid defender of freedom-of-choice (part of the reason why I use Gentoo) and am sceptical of "protect the user from their own decisions" kind-of approaches. |
9 |
|
10 |
To me, this is an issue about where Gentoo should be on the spectrum |
11 |
between a package's documentation completeness and flexibility. Both |
12 |
ends are justifiable, though I second that they may conflict with each |
13 |
other. |
14 |
|
15 |
I know two other distributions that are perfect examples on both ends of |
16 |
the spectrum: |
17 |
- Fedora strives for man page completeness. If a package comes with man |
18 |
pages, they should definitely be installed. If not, package |
19 |
maintainers are encouraged to bring them into existence by reaching |
20 |
out to the package upstream or even using 'help2man'. [1] |
21 |
- OpenWrt, a distribution mainly for Wi-Fi routers, does not ship man |
22 |
pages with its packages. In fact, OpenWrt does not install man-db at |
23 |
all by default. |
24 |
|
25 |
Fedora has been mainly targeting full-fledged desktop/laptop computers |
26 |
and servers, where storage space is not constrained, and users might |
27 |
actively consult documentation as they use and learn about their system |
28 |
every day. (Certainly, Fedora is expanding its scope to IoT, embedded |
29 |
systems, and containers, but its Workstation and Server editions carry |
30 |
the most heritage.) |
31 |
|
32 |
OpenWrt, on the other hand, specifically targets embedded systems (i.e. |
33 |
Wi-Fi routers) where every byte of storage space counts. Also, OpenWrt |
34 |
users are not expected to read manual pages on their Wi-Fi router; they |
35 |
typically have another device that they can use to read documentation. |
36 |
|
37 |
Which side should Gentoo lean toward? I would say the Fedora side, but |
38 |
I am not confident to rule out any possible use case of Gentoo on |
39 |
smaller systems like embedded systems either. Some users might be |
40 |
running Gentoo on resource-constrained machines. |
41 |
|
42 |
Gentoo also has one special thing rarely seen on other distributions: in |
43 |
general, users are responsible for compiling distribution packages on |
44 |
their own. As a result, unique challenges for Gentoo exist for adopting |
45 |
policies akin to Fedora's man page guidelines. On binary distributions, |
46 |
dependencies required to build man pages might not hit end users at all |
47 |
-- they would translate to BDEPEND on Gentoo and thus are only needed on |
48 |
the build system. On Gentoo, this has a more significant impact on end |
49 |
users, and those on a resource-constrained system are affected the most. |
50 |
|
51 |
> In this case, the expectation to compile manpages does not come free of cost and protects noone. By the above formulation, the cost "should" not come in the form of additional (heavy! dev-python/sphinx and deps are 75M) dependencies, but instead in the form of additional work for the maintainer. One way to annoy less-enthusiastic (proxy-) maintainers, in my opinion. |
52 |
|
53 |
This is exactly an example of the point in my previous paragraph. |
54 |
However, I am not sure what "maintainer" exactly refers to here. |
55 |
- If it means a maintainer of a package that has extra dependencies for |
56 |
building man pages per se, then I think the maintainer should still |
57 |
refrain from being lazy and skipping invocation of the man page build |
58 |
in the ebuilds they write. The extra work to support building man |
59 |
pages benefits users who need them. |
60 |
- If it means a maintainer of another package that depends on a package |
61 |
of this type (e.g. someone who maintains a package that depends on |
62 |
app-text/zathura), then I do acknowledge that it could be a burden for |
63 |
some maintainers -- they would have to install extra transitive |
64 |
dependencies to continue maintaining their package. |
65 |
|
66 |
> On the other hand - and I pick up the discussion from the tracker here - there is no documented benefit. We actively deny the user a choice which they were supposed to have from Upstream and gain nothing practical from it. |
67 |
> |
68 |
> In response to Comment #12, we could keep the spirit of "ensure documentation [if it exists in the first place]" and say "should install manpages", which would at least leave the maintainer the chance for an easy way out, if it comes with dependencies. I'm not a fan of this approach either, because it still denies the user their rightful choice, but at least it wouldn't negatively impact either the maintainer or the user. |
69 |
|
70 |
Comment #12 proposes FEATURES="noman", and I think one might suggest |
71 |
INSTALL_MASK too. But as per my understanding of make.conf(5) (oops, |
72 |
one example of man pages' usefulness), these do not prevent dependencies |
73 |
for building man pages from being pulled, meaning that they are probably |
74 |
non-solutions to additional dependencies being required. |
75 |
|
76 |
I hope my proposal is not too crazy: we could enable USE="doc man" in |
77 |
the base profile so man pages come by default, and IUSE="{doc,man}" are |
78 |
still permitted for packages so users still have a choice to disable |
79 |
them if they want to reduce the system's footprint. |
80 |
|
81 |
Leo3418 |
82 |
|
83 |
[1]: |
84 |
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_manpages |