What's cooking (2023/11) #03
[alt-git.git] / MaintNotes
blob793b56864d3df1d7cfde33e086c2848bcda8c946
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>; please
10 do not send any message to this address unless it also goes to the
11 mailing list, because it is likely that such a message will not be
12 seen by any human being.  Spam filters learned that legitimate
13 messages to the address come only from a very few sender addresses
14 that are known to be good, and messages from all others are likely to
15 be spam unless they are also sent to the mailing list at the same time
16 (i.e. "Reply-all" to the list message would reach the mailbox, but
17 "Reply" will likely be thrown into the spam folder).
20 * Mailing list and the community
22 The development is primarily done on the Git mailing list. Help
23 requests, feature proposals, bug reports and patches should be sent to
24 the list address <git@vger.kernel.org>.  You don't have to be
25 subscribed to send messages.  The convention on the list is to keep
26 everybody involved on Cc:, so it is unnecessary to say "Please Cc: me,
27 I am not subscribed".
29 As an anti-spam measure, the mailing list software rejects messages
30 that are not text/plain and drops them on the floor.  If you are a
31 GMail user, you'd want to make sure "Plain text mode" is checked.
33 Before sending patches, please read Documentation/SubmittingPatches
34 and Documentation/CodingGuidelines to familiarize yourself with the
35 project convention.
37 If you sent a patch and you did not hear any response from anybody for
38 several days, it could be that your patch was totally uninteresting,
39 but it also is possible that it was simply lost in the noise.  Please
40 do not hesitate to send a reminder message in such a case.  Messages
41 getting lost in the noise may be a sign that those who can evaluate
42 your patch don't have enough mental/time bandwidth to process them
43 right at the moment, and it often helps to wait until the list traffic
44 becomes calmer before sending such a reminder.
46 The list archive is available at a few public sites:
48         http://lore.kernel.org/git/
49         http://marc.info/?l=git
50         http://www.spinics.net/lists/git/
52 For those who prefer to read it over NNTP:
54         nntp://nntp.lore.kernel.org/org.kernel.vger.git
55         nntp://news.public-inbox.org/inbox.comp.version-control.git
57 are available.
59 When you point at a message in a mailing list archive, using its
60 message ID is often the most robust (if not very friendly) way to do
61 so, like this:
63         http://lore.kernel.org/git/Pine.LNX.4.58.0504150753440.7211@ppc970.osdl.org
65 Often these web interfaces accept the message ID with enclosing <>
66 stripped (like the above example to point at one of the most important
67 message in the Git list).
69 Some members of the development community can sometimes be found on
70 the #git and #git-devel IRC channels on Libera Chat.  Their logs are
71 available at:
73         http://colabti.org/irclogger/irclogger_log/git
74         http://colabti.org/irclogger/irclogger_log/git-devel
76 There is a volunteer-run newsletter to serve our community ("Git Rev
77 News" http://git.github.io/rev_news/).
79 Git is a member project of software freedom conservancy, a non-profit
80 organization (https://sfconservancy.org/).  To reach a committee of
81 liaisons to the conservancy, contact them at <git@sfconservancy.org>.
83 For our expectations on the behaviour of the community participants
84 towards each other, see CODE_OF_CONDUCT.md at the top level of the source
85 tree, or:
87     https://github.com/git/git/blob/master/CODE_OF_CONDUCT.md
90 * Reporting bugs
92 When you think git does not behave as you expect, please do not stop
93 your bug report with just "git does not work".  "I used git in this
94 way, but it did not work" is not much better, neither is "I used git
95 in this way, and X happend, which is broken".  It often is that git is
96 correct to cause X happen in such a case, and it is your expectation
97 that is broken. People would not know what other result Y you expected
98 to see instead of X, if you left it unsaid.
100 Please remember to always state
102  - what you wanted to achieve;
104  - what you did (the version of git and the command sequence to reproduce
105    the behavior);
107  - what you saw happen (X above);
109  - what you expected to see (Y above); and
111  - how the last two are different.
113 See http://www.chiark.greenend.org.uk/~sgtatham/bugs.html for further
114 hints.  Our `git bugreport` tool gives you a handy way you can use to
115 make sure you do not forget these points when filing a bug report.
117 If you think you found a security-sensitive issue and want to disclose
118 it to us without announcing it to wider public, please contact us at
119 our security mailing list <git-security@googlegroups.com>.  This is
120 a closed list that is limited to people who need to know early about
121 vulnerabilities, including:
123   - people triaging and fixing reported vulnerabilities
124   - people operating major git hosting sites with many users
125   - people packaging and distributing git to large numbers of people
127 where these issues are discussed without risk of the information
128 leaking out before we're ready to make public announcements.
131 * Repositories and documentation.
133 My public git.git repositories are (mirrored) at:
135   https://git.kernel.org/pub/scm/git/git.git/
136   https://kernel.googlesource.com/pub/scm/git/git
137   https://repo.or.cz/alt-git.git/
138   https://github.com/git/git/
139   https://gitlab.com/git-vcs/git/
141 This one shows not just the main integration branches, but also
142 individual topics broken out:
144   https://github.com/gitster/git/
146 A few web interfaces are found at:
148   http://git.kernel.org/pub/scm/git/git.git
149   https://kernel.googlesource.com/pub/scm/git/git
150   http://repo.or.cz/w/alt-git.git
152 Preformatted documentation from the tip of the "master" branch can be
153 found in:
155   https://git.kernel.org/pub/scm/git/git-{htmldocs,manpages}.git/
156   https://repo.or.cz/git-{htmldocs,manpages}.git/
157   https://github.com/gitster/git-{htmldocs,manpages}.git/
159 The manual pages formatted in HTML for the tip of 'master' can be
160 viewed online at:
162   https://git.github.io/htmldocs/git.html
165 * How various branches are used.
167 There are four "integration" branches in git.git repository that track
168 the source tree of git: "master", "maint", "next", and "seen".  They
169 however almost never get new commits made directly on them.  Instead,
170 a branch is forked from either "master" or "maint" for each "topic",
171 whether it is a new feature or fix for a bug, and holds a set of
172 commits that belong to the same theme, and then such a "topic branch"
173 is merged to these integration branches.
175 The "master" branch is meant to contain what are very well tested and
176 ready to be used in a production setting.  Every now and then, a
177 "feature release" is cut from the tip of this branch.  They used to be
178 named with three dotted decimal digits (e.g. "1.8.5"), but we have
179 switched the versioning scheme and "feature releases" are named with
180 three-dotted decimal digits that ends with ".0" (e.g. "1.9.0").
182 The last such release was 2.40 done on Mar 13rd, 2023.  You can expect
183 that the tip of the "master" branch is always more stable than any of
184 the released versions.
186 Whenever a feature release is made, "maint" branch is forked off from
187 "master" at that point.  Obvious and safe fixes after a feature
188 release are merged to this branch and maintenance releases are cut
189 from it.  Usually these fixes are merged to the "master" branch first,
190 several days before merged to the "maint" branch, to reduce the chance
191 of last-minute issues, but things like embargoed security fixes may
192 first appear in the maintenance tracks and merged up to "master" at
193 the same time.  The maintenance releases used to be named with
194 four dotted decimal, named after the feature release they are updates
195 to (e.g. "1.8.5.1" was the first maintenance release for "1.8.5"
196 feature release).  These days, maintenance releases are named by
197 incrementing the last digit of three-dotted decimal name (e.g.
198 "2.29.2" was the second maintenance release for the "2.29" series).
200 New features never go to the "maint" branch.  It is merged into
201 "master" primarily to propagate the description in the release notes
202 forward.
204 A new development does not usually happen on "master". When you send a
205 series of patches, after review on the mailing list, a separate topic
206 branch is forked from the tip of "master" (or somewhere older, especially
207 when the topic is about fixing an earlier bug) and your patches are queued
208 there, and kept out of "master" while people test it out. The quality of
209 topic branches are judged primarily by the mailing list discussions.
211 Topic branches that are in good shape are merged to the "next" branch. In
212 general, the "next" branch always contains the tip of "master".  It might
213 not be quite rock-solid, but is expected to work more or less without major
214 breakage. The "next" branch is where new and exciting things take place. A
215 topic that is in "next" is expected to be polished to perfection before it
216 is merged to "master".  Please help this process by building & using the
217 "next" branch for your daily work, and reporting any new bugs you find to
218 the mailing list, before the breakage is merged down to the "master".
220 The "seen" (formerly "pu", proposed updates) branch bundles all the
221 remaining topic branches the maintainer happens to have seen.  There
222 is no guarantee that the maintainer has enough bandwidth to pick up any
223 and all topics that are remotely promising from the list traffic, so
224 please do not read too much into a topic being on (or not on) the "seen"
225 branch.  This branch is mainly to remind the maintainer that the topics
226 in them may turn out to be interesting when they are polished, nothing
227 more, but can be used by contributors to anticipate what topics from
228 others may cause conflict with your work, and find people who are working.
229 on these topics to talk to before the potential conflicts get out of
230 control. The topics on this branch aren't usually complete, well tested,
231 or well documented and they often need further work.  When a topic that
232 was in "seen" proves to be in a testable shape, it is merged to "next".
234 You can run "git log --first-parent master..seen" to see what topics are
235 currently in flight.  Sometimes, an idea that looked promising turns out
236 to be not so good and the topic can be dropped from "seen" in such a case.
237 The output of the above "git log" talks about a "jch" branch, which is an
238 early part of the "seen" branch; that branch contains all topics that
239 are in "next" and a bit more (but not all of "seen") and is used by the
240 maintainer for his daily work.  Using the tip of this branch, instead of
241 'next', as your daily driver is also recommended.
243 The two branches "master" and "maint" are never rewound, and "next"
244 usually will not be either.  After a feature release is made from
245 "master", however, "next" will be rebuilt from the tip of "master"
246 using the topics that didn't make the cut in the feature release.
247 Some topics that used to be in "next" during the previous cycle may
248 get ejected from "next" when this happens.
250 A natural consequence of how "next" and "seen" bundles topics together
251 is that until a topic is merged to "next", updates to it is expected
252 by replacing the patch(es) in the topic with an improved version,
253 and once a topic is merged to "next", updates to it needs to come as
254 incremental patches, pointing out what was wrong in the previous
255 patches and how the problem was corrected.
257 Note that being in "next" is not a guarantee to appear in the next
258 release, nor even in any future release.  There were cases that topics
259 needed reverting a few commits in them before graduating to "master",
260 or a topic that already was in "next" was reverted from "next" because
261 fatal flaws were found in it after it was merged to "next".
264 * Other people's trees.
266 Documentation/SubmittingPatches outlines to whom your proposed changes
267 should be sent.  As described in contrib/README, I would delegate fixes
268 and enhancements in contrib/ area to the primary contributors of them.
270 Although the following are included in git.git repository, they have their
271 own authoritative repository and maintainers:
273  - git-gui/ comes from git-gui project, maintained by Pratyush Yadav:
275         https://github.com/prati0100/git-gui.git
277  - gitk-git/ comes from Paul Mackerras's gitk project:
279         git://ozlabs.org/~paulus/gitk
281  - po/ comes from the localization coordinator, Jiang Xin:
283         https://github.com/git-l10n/git-po/
285 When sending proposed updates and fixes to these parts of the system,
286 please base your patches on these trees, not git.git (the former two
287 even have different directory structures).