1Getting Involved
2================
3
4LLVM welcomes contributions of all kinds. To get started, please review the following topics:
5
6.. contents::
7   :local:
8
9.. toctree::
10   :hidden:
11
12   Contributing
13   DeveloperPolicy
14   CodeReview
15   SupportPolicy
16   SphinxQuickstartTemplate
17   Phabricator
18   HowToSubmitABug
19   BugLifeCycle
20   CodingStandards
21   GitBisecting
22   GitRepositoryPolicy
23
24:doc:`Contributing`
25   An overview on how to contribute to LLVM.
26
27:doc:`DeveloperPolicy`
28   The LLVM project's policy towards developers and their contributions.
29
30:doc:`CodeReview`
31   The LLVM project's code-review process.
32
33:doc:`SupportPolicy`
34   The LLVM support policy for core and non-core components.
35
36:doc:`SphinxQuickstartTemplate`
37  A template + tutorial for writing new Sphinx documentation. It is meant
38  to be read in source form.
39
40:doc:`Phabricator`
41   Describes how to use the Phabricator code review tool hosted on
42   http://reviews.llvm.org/ and its command line interface, Arcanist.
43
44:doc:`HowToSubmitABug`
45   Instructions for properly submitting information about any bugs you run into
46   in the LLVM system.
47
48:doc:`BugLifeCycle`
49   Describes how bugs are reported, triaged and closed.
50
51:doc:`CodingStandards`
52  Details the LLVM coding standards and provides useful information on writing
53  efficient C++ code.
54
55:doc:`GitBisecting`
56  Describes how to use ``git bisect`` on LLVM's repository.
57
58:doc:`GitRepositoryPolicy`
59   Collection of policies around the git repositories.
60
61.. _development-process:
62
63Development Process
64-------------------
65
66Information about LLVM's development process.
67
68.. toctree::
69   :hidden:
70
71   Projects
72   HowToReleaseLLVM
73   Packaging
74   ReleaseProcess
75   HowToAddABuilder
76   ReleaseNotes
77
78:doc:`Projects`
79  How-to guide and templates for new projects that *use* the LLVM
80  infrastructure.  The templates (directory organization, Makefiles, and test
81  tree) allow the project code to be located outside (or inside) the ``llvm/``
82  tree, while using LLVM header files and libraries.
83
84:doc:`HowToReleaseLLVM`
85  This is a guide to preparing LLVM releases. Most developers can ignore it.
86
87:doc:`ReleaseProcess`
88  This is a guide to validate a new release, during the release process. Most developers can ignore it.
89
90:doc:`HowToAddABuilder`
91   Instructions for adding new builder to LLVM buildbot master.
92
93:doc:`Packaging`
94   Advice on packaging LLVM into a distribution.
95
96:doc:`Release notes for the current release <ReleaseNotes>`
97   This describes new features, known bugs, and other limitations.
98
99.. _lists-forums:
100
101Forums & Mailing Lists
102----------------------
103
104If you can't find what you need in these docs, try consulting the
105Discourse forums. There are also commit mailing lists for all commits to the LLVM Project.
106
107`LLVM Discourse`__
108  The forums for all things LLVM and related sub-projects. There are categories and subcategories for a wide variety of areas within LLVM. You can also view tags or search for a specific topic.
109
110  .. __: https://discourse.llvm.org/
111
112`Commits Archive (llvm-commits)`__
113  This list contains all commit messages that are made when LLVM developers
114  commit code changes to the repository. It also serves as a forum for
115  patch review (i.e. send patches here). It is useful for those who want to
116  stay on the bleeding edge of LLVM development. This list is very high
117  volume.
118
119  .. __: http://lists.llvm.org/pipermail/llvm-commits/
120
121`Bugs & Patches Archive (llvm-bugs)`__
122  This list gets emailed every time a bug is opened and closed. It is
123  higher volume than the LLVM-dev list.
124
125  .. __: http://lists.llvm.org/pipermail/llvm-bugs/
126
127`LLVM Announcements`__
128  If you just want project wide announcements such as releases, developers meetings, or blog posts, then you should check out the Announcement category on LLVM Discourse.
129
130  .. __: https://discourse.llvm.org/c/announce/46
131
132.. _online-sync-ups:
133
134Online Sync-Ups
135---------------
136
137A number of regular calls are organized on specific topics. It should be
138expected that the range of topics will change over time. At the time of
139writing, the following sync-ups are organized:
140
141.. list-table:: LLVM regular sync-up calls
142   :widths: 25 25 25 25
143   :header-rows: 1
144
145   * - Topic
146     - Frequency
147     - Calendar link
148     - Minutes/docs link
149   * - Loop Optimization Working Group
150     - Every 2 weeks on Wednesday
151     -
152     - `Minutes/docs <https://docs.google.com/document/d/1sdzoyB11s0ccTZ3fobqctDpgJmRoFcz0sviKxqczs4g/edit>`__
153   * - RISC-V
154     - Every 2 weeks on Thursday
155     - `ics <https://calendar.google.com/calendar/ical/lowrisc.org_0n5pkesfjcnp0bh5hps1p0bd80%40group.calendar.google.com/public/basic.ics>`__
156       `gcal <https://calendar.google.com/calendar/b/1?cid=bG93cmlzYy5vcmdfMG41cGtlc2ZqY25wMGJoNWhwczFwMGJkODBAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>`__
157     -
158   * - Scalable Vectors and Arm SVE
159     - Monthly, every 3rd Tuesday
160     - `ics <https://calendar.google.com/calendar/ical/bjms39pe6k6bo5egtsp7don414%40group.calendar.google.com/public/basic.ics>`__
161       `gcal <https://calendar.google.com/calendar/u/0/[email protected]>`__
162     - `Minutes/docs <https://docs.google.com/document/d/1UPH2Hzou5RgGT8XfO39OmVXKEibWPfdYLELSaHr3xzo/edit>`__
163   * - ML Guided Compiler Optimizations
164     - Monthly
165     -
166     - `Minutes/docs <https://docs.google.com/document/d/1JecbplF09l3swTjze-UVeLh4L48svJxGVy4mz_e9Rhs/edit?usp=gmail#heading=h.ts9cmcjbir1j>`__
167   * - `LLVM security group <https://llvm.org/docs/Security.html>`__
168     - Monthly, every 3rd Tuesday
169     - `ics <https://calendar.google.com/calendar/ical/eoh3m9k1l6vqbd1fkp94fv5q74%40group.calendar.google.com/public/basic.ics>`__
170       `gcal <https://calendar.google.com/calendar/embed?src=eoh3m9k1l6vqbd1fkp94fv5q74%40group.calendar.google.com>`__
171     - `Minutes/docs <https://docs.google.com/document/d/1GLCE8cl7goCaLSiM9j1eIq5IqeXt6_YTY2UEcC4jmsg/edit?usp=sharing>`__
172   * - `CIRCT <https://github.com/llvm/circt>`__
173     - Weekly, on Wednesday
174     -
175     - `Minutes/docs <https://docs.google.com/document/d/1fOSRdyZR2w75D87yU2Ma9h2-_lEPL4NxvhJGJd-s5pk/edit#heading=h.mulvhjtr8dk9>`__
176   * - `MLIR <https://mlir.llvm.org>`__ design meetings
177     - Weekly, on Thursdays
178     -
179     - `Minutes/docs <https://docs.google.com/document/d/1y_9f1AbfgcoVdJh4_aM6-BaSHvrHl8zuA5G4jv_94K8/edit#heading=h.cite1kolful9>`__
180   * - flang
181     - Multiple meeting series, `documented here <https://github.com/llvm/llvm-project/blob/main/flang/docs/GettingInvolved.md#calls>`__
182     -
183     -
184   * - OpenMP
185     - Multiple meeting series, `documented here <https://openmp.llvm.org/docs/SupportAndFAQ.html>`__
186     -
187     -
188   * - LLVM Alias Analysis
189     - Every 4 weeks on Tuesdays
190     - `ics <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201103/a3499a67/attachment-0001.ics>`__
191     - `Minutes/docs <https://docs.google.com/document/d/17U-WvX8qyKc3S36YUKr3xfF-GHunWyYowXbxEdpHscw>`__
192   * - Windows/COFF related developments
193     - Every 2 months on Thursday
194     -
195     - `Minutes/docs <https://docs.google.com/document/d/1A-W0Sas_oHWTEl_x_djZYoRtzAdTONMW_6l1BH9G6Bo/edit?usp=sharing>`__
196   * - Vector Predication
197     - Every 2 weeks on Tuesdays, 3pm UTC
198     -
199     - `Minutes/docs <https://docs.google.com/document/d/1q26ToudQjnqN5x31zk8zgq_s0lem1-BF8pQmciLa4k8/edit?usp=sharing>`__
200   * - LLVM Pointer Authentication
201     - Every month on Mondays
202     - `ics <https://calendar.google.com/calendar/ical/fr1qtmrmt2s9odufjvurkb6j70%40group.calendar.google.com/public/basic.ics>`__
203     - `Minutes/docs <https://docs.google.com/document/d/14IDnh3YY9m6Ej_PaRKOz8tTTZlObgtLl8mYeRbytAec/edit?usp=sharing>`__
204   * - MemorySSA in LLVM
205     - Every 8 weeks on Mondays
206     - `ics <https://calendar.google.com/calendar/ical/c_1mincouiltpa24ac14of14lhi4%40group.calendar.google.com/public/basic.ics>`__
207       `gcal <https://calendar.google.com/calendar/embed?src=c_1mincouiltpa24ac14of14lhi4%40group.calendar.google.com>`__
208     - `Minutes/docs <https://docs.google.com/document/d/1-uEEZfmRdPThZlctOq9eXlmUaSSAAi8oKxhrPY_lpjk/edit#>`__
209   * - LLVM Embedded Toolchains
210     - Every 4 weeks on Thursdays
211     - `ics <https://drive.google.com/file/d/1uNa-PFYkhAfT83kR2Nc4Fi706TAQFBEL/view?usp=sharing>`__
212       `gcal <https://calendar.google.com/calendar/u/0?cid=ZDQyc3ZlajJmbjIzNG1jaTUybjFsdjA2dWNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>`__
213     - `Minutes/docs <https://docs.google.com/document/d/1GahxppHJ7o1O_fn1Mbidu1DHEg7V2aOr92LXCtNV1_o/edit?usp=sharing>`__
214
215
216Office hours
217------------
218
219A number of experienced LLVM contributors make themselves available for a chat
220on a regular schedule, to anyone who is looking for some guidance. Please find
221the list of who is available when, through which medium, and what their area of
222expertise is. Don't be too shy to dial in!
223
224Of course, people take time off from time to time, so if you dial in and you
225don't find anyone present, chances are they happen to be off that day.
226
227.. list-table:: LLVM office hours
228  :widths: 15 40 15 15 15
229  :header-rows: 1
230
231  * - Name
232    - In-scope topics
233    - When?
234    - Where?
235    - Languages
236  * - Kristof Beyls
237    - General questions on how to contribute to LLVM; organizing meetups;
238      submitting talks; and other general LLVM-related topics. Arm/AArch64
239      codegen.
240    - Every 2nd and 4th Wednesday of the month at 9.30am CET, for 30 minutes.
241      `ics <https://calendar.google.com/calendar/ical/co0h4ndpvtfe64opn7eraiq3ac%40group.calendar.google.com/public/basic.ics>`__
242    - `Jitsi <https://meet.jit.si/KristofBeylsLLVMOfficeHour>`__
243    - English, Flemish, Dutch
244  * - Alina Sbirlea
245    - General questions on how to contribute to LLVM; women in compilers;
246      MemorySSA, BatchAA, various loop passes, new pass manager.
247    - Monthly, 2nd Tuesdays, 10.00am PT/7:00pm CET, for 30 minutes.
248      `ics <https://calendar.google.com/calendar/ical/c_pm6e7160iq7n5fcm1s6m3rjhh4%40group.calendar.google.com/public/basic.ics>`__
249      `gcal <https://calendar.google.com/calendar/embed?src=c_pm6e7160iq7n5fcm1s6m3rjhh4%40group.calendar.google.com>`__
250    - `GoogleMeet <https://meet.google.com/hhk-xpdj-gvx>`__
251    - English, Romanian
252  * - Aaron Ballman
253    - Clang internals; clang-tidy; clang-query; AST matchers
254    - Monthly, 2nd Monday of the month at 10:00am Eastern/14:00 UTC, for 30 minutes.
255      `ics <https://calendar.google.com/calendar/ical/npgke5dug0uliud0qapptmps58%40group.calendar.google.com/public/basic.ics>`__
256      `gcal <https://calendar.google.com/calendar/embed?src=npgke5dug0uliud0qapptmps58%40group.calendar.google.com>`__
257    - `GoogleMeet <https://meet.google.com/xok-iqne-gmi>`__
258    - English, Norwegian (not fluently)
259
260
261IRC
262---
263
264Users and developers of the LLVM project (including subprojects such as Clang)
265can be found in #llvm on `irc.oftc.net <irc://irc.oftc.net/llvm>`_.
266
267This channel has several bots.
268
269* Buildbot reporters
270
271  * llvmbb - Bot for the main LLVM buildbot master.
272    http://lab.llvm.org/buildbot/#/console
273
274* robot - Bugzilla linker. %bug <number>
275
276* clang-bot - A `geordi <http://www.eelis.net/geordi/>`_ instance running
277  near-trunk clang instead of gcc.
278
279In addition to the traditional IRC there is a
280`Discord <https://discord.com/channels/636084430946959380/636725486533345280>`_
281chat server available. To sign up, please use this
282`invitation link <https://discord.com/invite/xS7Z362>`_.
283
284
285.. _meetups-social-events:
286
287Meetups and social events
288-------------------------
289
290.. toctree::
291   :hidden:
292
293   MeetupGuidelines
294
295Besides developer `meetings and conferences <https://llvm.org/devmtg/>`_,
296there are several user groups called
297`LLVM Socials <https://www.meetup.com/pro/llvm/>`_. We greatly encourage you to
298join one in your city. Or start a new one if there is none:
299
300:doc:`MeetupGuidelines`
301
302.. _community-proposals:
303
304Community wide proposals
305------------------------
306
307Proposals for massive changes in how the community behaves and how the work flow
308can be better.
309
310.. toctree::
311   :hidden:
312
313   CodeOfConduct
314   Proposals/GitHubMove
315   BugpointRedesign
316   Proposals/TestSuite
317   Proposals/VariableNames
318   Proposals/VectorizationPlan
319   Proposals/VectorPredication
320
321:doc:`CodeOfConduct`
322   Proposal to adopt a code of conduct on the LLVM social spaces (lists, events,
323   IRC, etc).
324
325:doc:`Proposals/GitHubMove`
326   Proposal to move from SVN/Git to GitHub.
327
328:doc:`BugpointRedesign`
329   Design doc for a redesign of the Bugpoint tool.
330
331:doc:`Proposals/TestSuite`
332   Proposals for additional benchmarks/programs for llvm's test-suite.
333
334:doc:`Proposals/VariableNames`
335   Proposal to change the variable names coding standard.
336
337:doc:`Proposals/VectorizationPlan`
338   Proposal to model the process and upgrade the infrastructure of LLVM's Loop Vectorizer.
339
340:doc:`Proposals/VectorPredication`
341   Proposal for predicated vector instructions in LLVM.
342