What's cooking (2024/04 #09)
[alt-git.git] / MaintNotes
blob774ce56c2072dc1fd8d6630deb17a651c7beaec3
1 To: git@vger.kernel.org
2 Subject: A note from the maintainer
4 Welcome to the Git development community.
6 This message is written by the maintainer and talks about how Git
7 project is managed, and how you can work with it.
9 The current maintainer is Junio C Hamano <gitster@pobox.com>.  Spam
10 filters learned that legitimate messages come only from a very few
11 sender addresses that are known to be good to this address, and all
12 other messages are likely to be spam unless they are also sent to the
13 mailing list at the same time (i.e. "Reply-all" to the list message
14 would reach the mailbox, but "Reply" will likely be thrown into the
15 spam folder), so please do not send a message to this address unless
16 it is also sent to the mailing list as well.
19 * Mailing list and the community
21 The development is primarily done on the Git mailing list. Help
22 requests, feature proposals, bug reports and patches should be sent to
23 the list address <git@vger.kernel.org>.  You don't have to be
24 subscribed to send messages.  The convention on the list is to keep
25 everybody involved on Cc:, so it is unnecessary to say "Please Cc: me,
26 I am not subscribed".
28 As an anti-spam measure, the mailing list software rejects messages
29 that are not text/plain and drops them on the floor.  If you are a
30 GMail user, you'd want to make sure "Plain text mode" is checked.
32 Before sending patches, please read Documentation/SubmittingPatches
33 and Documentation/CodingGuidelines to familiarize yourself with the
34 project convention.
36 If you sent a patch and you did not hear any response from anybody for
37 several days, it does not necessarily mean that your patch was totally
38 uninteresting; it may merely mean that it was lost in the noise.  Please
39 do not hesitate to send a reminder message in such a case.  Messages
40 getting lost in the noise may be a sign that those who can evaluate
41 your patch don't have enough mental/time bandwidth to process them
42 right at the moment, and it often helps to wait until the list traffic
43 becomes calmer before sending such a reminder.
45 The list archive is available at a few public sites:
47         https://lore.kernel.org/git/
48         https://marc.info/?l=git
49         https://www.spinics.net/lists/git/
51 For those who prefer to read it over NNTP:
53         nntp://nntp.lore.kernel.org/org.kernel.vger.git
54         nntp://news.public-inbox.org/inbox.comp.version-control.git
56 are available.
58 When you point at a message in a mailing list archive, using its
59 message ID is often the most robust (if not very friendly) way to do
60 so, like this:
62         https://lore.kernel.org/git/Pine.LNX.4.58.0504150753440.7211@ppc970.osdl.org
64 Often these web interfaces accept the message ID with enclosing <>
65 stripped (like the above example to point at one of the most important
66 message in the Git list).
68 Some members of the development community can sometimes be found on
69 the #git and #git-devel IRC channels on Libera Chat.  Their logs are
70 available at:
72         https://colabti.org/ircloggy/git/last
73         https://colabti.org/ircloggy/git-devel/last
75 There is a volunteer-run newsletter to serve our community ("Git Rev
76 News" https://git.github.io/rev_news/).
78 Git is a member project of software freedom conservancy, a non-profit
79 organization (https://sfconservancy.org/).  To reach a committee of
80 liaisons to the conservancy, contact them at <git@sfconservancy.org>.
82 For our expectations on the behaviour of the community participants
83 towards each other, see CODE_OF_CONDUCT.md at the top level of the source
84 tree, or:
86     https://github.com/git/git/blob/master/CODE_OF_CONDUCT.md
89 * Reporting bugs
91 When you think git does not behave as you expect, please do not stop
92 your bug report with just "git does not work".  "I used git in this
93 way, but it did not work" is not much better, neither is "I used git
94 in this way, and X happend, which is broken".  It often is that git is
95 correct to cause X happen in such a case, and it is your expectation
96 that is broken.  People would not know what other result Y you
97 expected to see instead of X, if you left it unsaid.
99 Please remember to always state
101  - what you wanted to achieve;
103  - what you did (the version of git and the command sequence to reproduce
104    the behavior);
106  - what you saw happen (X above);
108  - what you expected to see (Y above); and
110  - how the last two are different.
112 See https://www.chiark.greenend.org.uk/~sgtatham/bugs.html for further
113 hints.  Our `git bugreport` tool gives you a handy way you can use to
114 make sure you do not forget these points when filing a bug report.
116 If you think you found a security-sensitive issue and want to disclose
117 it to us without announcing it to wider public, please contact us at
118 our security mailing list <git-security@googlegroups.com>.  This is
119 a closed list that is limited to people who need to know early about
120 vulnerabilities, including:
122   - people triaging and fixing reported vulnerabilities
123   - people operating major git hosting sites with many users
124   - people packaging and distributing git to large numbers of people
126 where these issues are discussed without risk of the information
127 leaking out before we're ready to make public announcements.
130 * Repositories and documentation.
132 My public git.git repositories are (mirrored) at:
134   https://git.kernel.org/pub/scm/git/git.git/
135   https://kernel.googlesource.com/pub/scm/git/git
136   https://repo.or.cz/alt-git.git/
137   https://github.com/git/git/
138   https://gitlab.com/git-scm/git/
140 This one shows not just the main integration branches, but also
141 individual topics broken out:
143   https://github.com/gitster/git/
145 A few web interfaces are found at:
147   https://git.kernel.org/pub/scm/git/git.git
148   https://kernel.googlesource.com/pub/scm/git/git
149   https://repo.or.cz/w/alt-git.git
151 Preformatted documentation from the tip of the "master" branch can be
152 found in:
154   https://git.kernel.org/pub/scm/git/git-{htmldocs,manpages}.git/
155   https://repo.or.cz/git-{htmldocs,manpages}.git/
156   https://github.com/gitster/git-{htmldocs,manpages}.git/
158 The manual pages formatted in HTML for the tip of 'master' can be
159 viewed online at:
161   https://git.github.io/htmldocs/git.html
164 * How various branches are used.
166 There are four "integration" branches in git.git repository that track
167 the source tree of git: "master", "maint", "next", and "seen".  They
168 however almost never get new commits made directly on them.  Instead,
169 a branch is forked from either "master" or "maint" for each "topic",
170 whether it is a new feature or a fix for a bug, and holds a set of
171 commits that belong to the same theme.  Such a "topic branch" is then
172 merged to these integration branches.
174 The "master" branch is meant to contain what are very well tested and
175 ready to be used in a production setting.  Every now and then, a
176 "feature release" is cut from the tip of this branch.  They used to be
177 named with three dotted decimal digits (e.g., "1.8.5"), but we have
178 switched the versioning scheme and "feature releases" are named with
179 three-dotted decimal digits that ends with ".0" (e.g., "1.9.0").
181 The last such release was 2.44 done on Feb 22nd, 2024.  We aim to keep
182 that the tip of the "master" branch is always more stable than any of
183 the released versions.
185 Whenever a feature release is made, "maint" branch is forked off from
186 "master" at that point.  Obvious and safe fixes after a feature
187 release are merged to this branch and maintenance releases are cut
188 from it.  Usually the topic branches that contain these fixes are
189 merged to the "master" branch first, before getting merged to the
190 "maint" branch, to reduce the chance of last-minute issues, but
191 things like embargoed security fixes may first appear in the "maint"
192 and merged up to "master" at the same time.  The maintenance releases
193 used to be named with four dotted decimal, named after the feature
194 release they are updates to (e.g., "1.8.5.1" was the first maintenance
195 release for "1.8.5" feature release).  These days, maintenance releases
196 are named by incrementing the last digit of three-dotted decimal name
197 (e.g., "2.43.2" was the second maintenance release for the "2.43" series).
199 New features almost never go to the "maint" branch.  It is merged into
200 "master" primarily to propagate the description in the release notes
201 forward.
203 When you send a series of patches, after review discussions on the
204 mailing list, a separate topic branch is forked from the tip of
205 "master" (or somewhere older, especially when the topic is about
206 fixing an earlier bug) and your patches are applied on that topic
207 branch, and kept out of "master" while people test it out.  The
208 quality of topic branches are judged primarily by the mailing list
209 discussions.
211 Topic branches that are in good shape are merged to the "next" branch.
212 The "next" branch is where new and exciting things take place.  In
213 general, the "next" branch always contains the tip of "master".  It
214 might not be quite rock-solid, but is expected to work more or less
215 without major breakage.  A topic that is in "next" is expected to be
216 polished to perfection before it is merged to "master".  Please help
217 this process by building & using the "next" branch for your daily
218 work, and reporting any new bugs you find to the mailing list, before
219 the breakage is merged down to the "master".
221 The "seen" (formerly "pu", proposed updates) branch bundles the
222 remaining topic branches the maintainer happens to have seen to remind
223 the maintainer that the topics in them might become interesting when
224 they are polished.
226 The contributors can use it to anticipate what topics from others
227 may cause conflict with their own work, and find people who are
228 working on these topics to talk to before the potential conflicts
229 get out of control.  It would be a good idea to fork from maint or
230 master to grow a topic and to test (1) it by itself, (2) a temporary
231 merge of it to 'next' and (3) a temporary merge to it to 'seen',
232 before publishing it.
234 Consider that a topic only in "seen" is not part of "git" yet.  When a
235 topic that was in "seen" proves to be in a testable shape, it is
236 merged to "next".
238 You can run "git log --first-parent master..seen" to see what topics
239 are currently in flight.  Sometimes, a topic that looked promising
240 proves to be a bad idea and the topic gets dropped from "seen" in such
241 a case.  The output of the above "git log" talks about a "jch" branch,
242 which is an early part of the "seen" branch; that branch contains all
243 topics that are in "next" and a bit more (but not all of "seen") and
244 is used by the maintainer for his daily work.
246 The two branches "master" and "maint" are never rewound, and "next"
247 usually will not be either.  After a feature release is made from
248 "master", however, "next" will be rebuilt from the tip of "master"
249 using the topics that didn't make the cut in the feature release.
250 Some topics that used to be in "next" during the previous cycle may
251 get ejected from "next" when this happens.
253 A natural consequence of how "next" and "seen" bundles topics together
254 is that until a topic is merged to "next", updates to it is expected
255 by replacing the patch(es) in the topic with an improved version, and
256 once a topic is merged to "next", updates to it needs to come as
257 incremental patches, pointing out what was wrong in the previous
258 patches and how the problem was corrected.  The idea is that if many
259 reviewers thought it has seen enough eyeballs and is good enough for
260 "next", yet we later find that there was something we all missed, that
261 is worth a separate explanation, e.g., "The primary motivation behind
262 the series is still good, but for such and such reasons we missed this
263 case we are fixing.", hence we prefer follow-up incremental patches.
265 Note that being in "next" is not a guarantee to appear in the next
266 release, nor even in any future release.  There were cases that topics
267 needed reverting a few commits in them before graduating to "master",
268 or a topic that already was in "next" was reverted from "next" because
269 fatal flaws were found in it after it was merged to "next".
272 * Other people's trees.
274 Documentation/SubmittingPatches outlines to whom your proposed changes
275 should be sent.  As described in contrib/README, I would delegate fixes
276 and enhancements in contrib/ area to the primary contributors of them.
278 Although the following are included in git.git repository, they have their
279 own authoritative repository and maintainers:
281  - git-gui/ comes from git-gui project, maintained by Pratyush Yadav:
283         https://github.com/prati0100/git-gui.git
285  - gitk-git/ comes from Paul Mackerras's gitk project:
287         git://ozlabs.org/~paulus/gitk
289  - po/ comes from the localization coordinator, Jiang Xin:
291         https://github.com/git-l10n/git-po/
293 When sending proposed updates and fixes to these parts of the system,
294 please base your patches on these trees, not git.git (the former two
295 even have different directory structures).