~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/maintainer/feature-and-driver-maintainers.rst

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .. SPDX-License-Identifier: GPL-2.0
  2 
  3 ==============================
  4 Feature and driver maintainers
  5 ==============================
  6 
  7 The term "maintainer" spans a very wide range of levels of engagement
  8 from people handling patches and pull requests as almost a full time job
  9 to people responsible for a small feature or a driver.
 10 
 11 Unlike most of the chapter, this section is meant for the latter (more
 12 populous) group. It provides tips and describes the expectations and
 13 responsibilities of maintainers of a small(ish) section of the code.
 14 
 15 Drivers and alike most often do not have their own mailing lists and
 16 git trees but instead send and review patches on the list of a larger
 17 subsystem.
 18 
 19 Responsibilities
 20 ================
 21 
 22 The amount of maintenance work is usually proportional to the size
 23 and popularity of the code base. Small features and drivers should
 24 require relatively small amount of care and feeding. Nonetheless
 25 when the work does arrive (in form of patches which need review,
 26 user bug reports etc.) it has to be acted upon promptly.
 27 Even when a particular driver only sees one patch a month, or a quarter,
 28 a subsystem could well have a hundred such drivers. Subsystem
 29 maintainers cannot afford to wait a long time to hear from reviewers.
 30 
 31 The exact expectations on the response time will vary by subsystem.
 32 The patch review SLA the subsystem had set for itself can sometimes
 33 be found in the subsystem documentation. Failing that as a rule of thumb
 34 reviewers should try to respond quicker than what is the usual patch
 35 review delay of the subsystem maintainer. The resulting expectations
 36 may range from two working days for fast-paced subsystems (e.g. networking)
 37 to as long as a few weeks in slower moving parts of the kernel.
 38 
 39 Mailing list participation
 40 --------------------------
 41 
 42 Linux kernel uses mailing lists as the primary form of communication.
 43 Maintainers must be subscribed and follow the appropriate subsystem-wide
 44 mailing list. Either by subscribing to the whole list or using more
 45 modern, selective setup like
 46 `lei <https://people.kernel.org/monsieuricon/lore-lei-part-1-getting-started>`_.
 47 
 48 Maintainers must know how to communicate on the list (plain text, no invasive
 49 legal footers, no top posting, etc.)
 50 
 51 Reviews
 52 -------
 53 
 54 Maintainers must review *all* patches touching exclusively their drivers,
 55 no matter how trivial. If the patch is a tree wide change and modifies
 56 multiple drivers - whether to provide a review is left to the maintainer.
 57 
 58 When there are multiple maintainers for a piece of code an ``Acked-by``
 59 or ``Reviewed-by`` tag (or review comments) from a single maintainer is
 60 enough to satisfy this requirement.
 61 
 62 If the review process or validation for a particular change will take longer
 63 than the expected review timeline for the subsystem, maintainer should
 64 reply to the submission indicating that the work is being done, and when
 65 to expect full results.
 66 
 67 Refactoring and core changes
 68 ----------------------------
 69 
 70 Occasionally core code needs to be changed to improve the maintainability
 71 of the kernel as a whole. Maintainers are expected to be present and
 72 help guide and test changes to their code to fit the new infrastructure.
 73 
 74 Bug reports
 75 -----------
 76 
 77 Maintainers must ensure severe problems in their code reported to them
 78 are resolved in a timely manner: regressions, kernel crashes, kernel warnings,
 79 compilation errors, lockups, data loss, and other bugs of similar scope.
 80 
 81 Maintainers furthermore should respond to reports about other kinds of
 82 bugs as well, if the report is of reasonable quality or indicates a
 83 problem that might be severe -- especially if they have *Supported*
 84 status of the codebase in the MAINTAINERS file.
 85 
 86 Open development
 87 ----------------
 88 
 89 Discussions about user reported issues, and development of new code
 90 should be conducted in a manner typical for the larger subsystem.
 91 It is common for development within a single company to be conducted
 92 behind closed doors. However, development and discussions initiated
 93 by community members must not be redirected from public to closed forums
 94 or to private email conversations. Reasonable exceptions to this guidance
 95 include discussions about security related issues.
 96 
 97 Selecting the maintainer
 98 ========================
 99 
100 The previous section described the expectations of the maintainer,
101 this section provides guidance on selecting one and describes common
102 misconceptions.
103 
104 The author
105 ----------
106 
107 Most natural and common choice of a maintainer is the author of the code.
108 The author is intimately familiar with the code, so it is the best person
109 to take care of it on an ongoing basis.
110 
111 That said, being a maintainer is an active role. The MAINTAINERS file
112 is not a list of credits (in fact a separate CREDITS file exists),
113 it is a list of those who will actively help with the code.
114 If the author does not have the time, interest or ability to maintain
115 the code, a different maintainer must be selected.
116 
117 Multiple maintainers
118 --------------------
119 
120 Modern best practices dictate that there should be at least two maintainers
121 for any piece of code, no matter how trivial. It spreads the burden, helps
122 people take vacations and prevents burnout, trains new members of
123 the community etc. etc. Even when there is clearly one perfect candidate,
124 another maintainer should be found.
125 
126 Maintainers must be human, therefore, it is not acceptable to add a mailing
127 list or a group email as a maintainer. Trust and understanding are the
128 foundation of kernel maintenance and one cannot build trust with a mailing
129 list. Having a mailing list *in addition* to humans is perfectly fine.
130 
131 Corporate structures
132 --------------------
133 
134 To an outsider the Linux kernel may resemble a hierarchical organization
135 with Linus as the CEO. While the code flows in a hierarchical fashion,
136 the corporate template does not apply here. Linux is an anarchy held
137 together by (rarely expressed) mutual respect, trust and convenience.
138 
139 All that is to say that managers almost never make good maintainers.
140 The maintainer position more closely matches an on-call rotation
141 than a position of power.
142 
143 The following characteristics of a person selected as a maintainer
144 are clear red flags:
145 
146  - unknown to the community, never sent an email to the list before
147  - did not author any of the code
148  - (when development is contracted) works for a company which paid
149    for the development rather than the company which did the work
150 
151 Non compliance
152 ==============
153 
154 Subsystem maintainers may remove inactive maintainers from the MAINTAINERS
155 file. If the maintainer was a significant author or played an important
156 role in the development of the code, they should be moved to the CREDITS file.
157 
158 Removing an inactive maintainer should not be seen as a punitive action.
159 Having an inactive maintainer has a real cost as all developers have
160 to remember to include the maintainers in discussions and subsystem
161 maintainers spend brain power figuring out how to solicit feedback.
162 
163 Subsystem maintainers may remove code for lacking maintenance.
164 
165 Subsystem maintainers may refuse accepting code from companies
166 which repeatedly neglected their maintainership duties.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php