Skip to content

Commit df64eea

Browse files
migrated existing files (#1)
1 parent 06f431b commit df64eea

File tree

4 files changed

+511
-0
lines changed

4 files changed

+511
-0
lines changed

infrastructure_survey.md

Lines changed: 277 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,277 @@
1+
# Survey of existing project infrastructure
2+
3+
The set of tools used by the LLVM project are it's *infrastructure*. This page
4+
contains an overview of the existing tools, what they are used for and a contact
5+
for each of these. The purpose of this document is to establish an initial survey of what we're working with, not to be exhastive. We hope to document individual pieces and workflows in detail at a later time.
6+
7+
The [Getting Involved](http://llvm.org/docs/GettingInvolved.html) page
8+
explains the intended workflows for using these tools.
9+
10+
<!--
11+
Template for new infrastructure components
12+
13+
### (Name of component)
14+
15+
- Description:
16+
- Most important workflows:
17+
- Admin contact:
18+
- Hosted at:
19+
- Integrations:
20+
-
21+
-->
22+
23+
## Communication
24+
25+
There are several tools used for communication.
26+
27+
### IRC
28+
29+
- see [IRC](https://llvm.org/docs/GettingInvolved.html#irc) on accessing
30+
- no LLVM specific infrastructure required
31+
- no central admin
32+
- use case: interactive chats between community members
33+
- somewhat redundant to Slack and Discord
34+
- integrations:
35+
- see [IRC](https://llvm.org/docs/GettingInvolved.html#irc)
36+
- Ideas:
37+
- Do we have an integration with Discord?
38+
[discord-irc](https://github.com/reactiflux/discord-irc) seems to be useful.
39+
- Current challenges:
40+
- N/A
41+
42+
### Mailing lists
43+
44+
- see [Mailing Lists](https://llvm.org/docs/GettingInvolved.html#mailing-lists>)
45+
- Dedicated [Mailman](http://www.gnu.org/software/mailman/index.html) instance
46+
- hosted at TODO
47+
- administrated by TODO
48+
- use cases: asynchronous communication of the community and code reviews
49+
- somewhat redundant to Discourse
50+
- ideas:
51+
- Maybe integrate with Discourse?
52+
- Current challenges:
53+
- Difficult to realize GDPR deletion requests
54+
55+
### Discourse
56+
57+
- [llvm.discourse.group/](https://llvm.discourse.group/)
58+
- hosted service
59+
- `Admins <https://llvm.discourse.group/about>`_
60+
- use case: asynchronous communication of the community
61+
- somewhat redundant to the mailing lists.
62+
- Integrations:
63+
- Github for single sign on
64+
65+
### Discord
66+
67+
- Join the group with this [invitation](https://discord.gg/xS7Z362)
68+
- use case: interactive chats between community members
69+
- somewhat redundant to Slack and IRC
70+
- Admins: See discord -> Server settings -> Members -> filter for admins
71+
- TODO: do we have an integration with IRC?
72+
here also [discord-irc](https://github.com/reactiflux/discord-irc) seems to be
73+
useful.
74+
- Integrations:
75+
- [BuildBot status](https://discord.com/channels/636084430946959380/646265759823167498/666582633706291200)
76+
- Github commits
77+
- YouTube
78+
- Twitter
79+
80+
### Slack
81+
82+
- [llvm.slack.com](https://llvm.slack.com)
83+
- hosted service, not clear if this is public vs foundation board resource
84+
- administrated by TODO
85+
- use case: interactive chats between board and ops team
86+
- somewhat redundant to IRC and Discord
87+
88+
### Twitter
89+
90+
- [@llvm.org](https://twitter.com/llvmorg)
91+
92+
## Source Code Repository
93+
94+
### Git and Github
95+
96+
- Multiple repositories hosted on [GitHub](http://github.com/llvm/)
97+
- most prominent: the [LLVM Monorepo](https://github.com/llvm/llvm-project)
98+
- Hosted service by GitHub
99+
- administrated by TODO
100+
- use case: storing/versioning of the project source code
101+
- Integrations:
102+
- display BuildBot status
103+
- Email notifications
104+
105+
### Legacy SVN
106+
107+
- Does the legacy SVN repo still exist? If so, what is it being used for?
108+
- Do we want a historical archive, either active or offline?
109+
110+
## Code reviews
111+
112+
We probably need a master list of which sub-projects are using each mechanism.
113+
114+
### On the mailing lists
115+
116+
- Per the [documentation][https://llvm.org/docs/CodeReview.html], we allow code review by email on llvm-commits and cfe-commits.
117+
118+
### Phabricator
119+
120+
- Code reviews for `llvm-project` and some other projects are performed in
121+
[Phabricator](https://reviews.llvm.org/) and on the mailing lists.
122+
- Phabricator is hosted on Google Cloud
123+
- Administrated by TODO
124+
- Integrations:
125+
- Single sign on with Google and Github
126+
- Reading data from Github
127+
- Triggering builds on pre-merge testing
128+
- sending Emails on mailing list
129+
- processing email responses (major enhancement)
130+
131+
### GitHub Pull Requests
132+
133+
- Some projects are using Pull Requests for code reviews.
134+
- Native feature of GitHub, does not need hosting or administration.
135+
136+
## Build infrastructure
137+
138+
The project is using multiple build systems with different scopes and
139+
technologies.
140+
141+
### Build bots
142+
143+
- use case: post-merge testing on various operating systems and platforms
144+
- workers hosted and maintained by the community
145+
- server hosted and maintained by Access Softtek
146+
- [Production server](http://lab.llvm.org:8011/), sending emails
147+
- [Staging server](http://lab.llvm.org:8014/), no email notifications, for
148+
testing purposes.
149+
- We really need an index of active bots, and points of contact for each.
150+
151+
### Green dragon
152+
153+
- [green.lab.llvm.org/green/](http://green.lab.llvm.org/green/)
154+
- use case: post merge testing on Apple's MacOS
155+
- Hosted at Apple
156+
- administrated by TODO
157+
158+
### Pre-merge testing
159+
160+
- use case: pre-merge testing of patches on Phabricator
161+
- Integrations
162+
- Phabricator to get patches and show results
163+
- Github repository to get sources
164+
- Buildkite to run the builds
165+
- Links:
166+
- Github project [google/llvm-premerge-checks](https://github.com/google/llvm-premerge-checks/)
167+
- [Buildkite project](https://buildkite.com/llvm-project)
168+
169+
### LLVM GN buildbot
170+
171+
- [45.33.8.238](http://45.33.8.238/)
172+
- use case: post-merge testing using GN build system
173+
- Hosted at TODO
174+
- Administrated by TODO
175+
176+
### LNT
177+
178+
- [lnt.llvm.org](http://lnt.llvm.org)
179+
- Nightly tests, measuring performance and code size
180+
- Hosted on Google Cloud
181+
- Current challenges:
182+
- is looking for new maintainer
183+
184+
## Bug Tracker
185+
186+
- [bugs.llvm.org](https://bugs.llvm.org/)
187+
- self-hosted Bugzilla on TODO
188+
- Administrated by TODO
189+
- Migration to Github Issues in progress
190+
191+
## Build Systems
192+
193+
- The official build system is *CMake*.
194+
- other, unsupported build systems:
195+
- [gn](https://github.com/llvm/llvm-project/tree/master/llvm/utils/gn)
196+
- Support for Bazel currently in discussion.
197+
198+
## Test tooling
199+
200+
### Unit testing
201+
202+
- using [googletest](https://github.com/google/googletest)
203+
204+
### LIT
205+
206+
- home-grown testing framework [LIT](https://llvm.org/docs/CommandGuide/lit.html)
207+
- included in the
208+
[LLVM monorepo](https://github.com/llvm-mirror/llvm/tree/master/utils/lit)
209+
210+
## Web sites
211+
212+
- llvm.org
213+
- foundation.llvm.org
214+
- community-dot-o.llvm.org
215+
- blog.llvm.org
216+
- mlir.llvm.org
217+
- clang.llvm.org
218+
- lldb.llvm.org
219+
- clangd.llvm.org
220+
- reviews.llvm.org
221+
- bugs.llvm.org
222+
- circt.llvm.org
223+
- releases.llvm.org
224+
225+
## Content Delivery Network (CDN)
226+
227+
Binaries/releases are distributed by [Fastly](https://www.fastly.com/).
228+
229+
## test case reduction
230+
231+
- bugpoint
232+
- llvm-reduce
233+
- c-reduce (external tool, but heavily used)
234+
- delta (external tool, but heavily used)
235+
236+
## practical formal reasoning
237+
238+
(Alive2)[https://github.com/AliveToolkit/alive2] is an external effort to build tooling around formal semenatics for LLVM IR. It is being used extensively validate InstCombine transforms before submission, and (less extensively) to isolate which transform is miscompiling. It's also being used to drive efforts to improve the specification of poison and undef in the LangRef.
239+
240+
## external testing and revert to green
241+
242+
As a project, we rely heavily on external testing of ToT to ensure quality via bisection and revert-to-greeen. A few of particular note:
243+
244+
- Google's weekly build with new ToT compiler finds a lot. The hashes of previously builds are available (where?) and are consumed by others as a defacto "recent stable" series.
245+
- See Green Dragon above.
246+
- https://llvm-compile-time-tracker.com - ongoing effort to track and actively revert changes which impact compile time negatively. Contact: Nikita Popov?
247+
- Nuno Lopes and his team maintains a [dashboard][https://web.ist.utl.pt/nuno.lopes/alive2/] of currently failing LLVM tests related to the ongoing efforts to formalize poison/undef.
248+
- Fuzzing efforts
249+
250+
- Google's OSS Fuzz
251+
- Azul runs a [java fuzzer][https://github.com/AzulSystems/JavaFuzzer] which finds a lot of miscompiles.
252+
- [clang-triage][https://github.com/sliedes/clang-triage] - externally developed, doesn't appear to still be active
253+
- to be continued...
254+
255+
Running these efforts are probably mostly out of scope for the working group, but supporting them w/ e.g. bisection and reduction tooling is not. We should probably also establish point of contacts for each if they're going to be reverting lots of changes upstream.
256+
257+
## code analysis reports
258+
259+
* https://llvm.org/reports/scan-build/
260+
* https://llvm.org/reports/coverage/ (out of date)
261+
* https://scan.coverity.com/projects/llvm (*very* out of date)
262+
263+
It's unclear who owns these, or how they're generated.
264+
265+
## packages and distribution
266+
267+
Various distributions package LLVM, we may want to document tooling and assumptions around that.
268+
269+
https://apt.llvm.org/ provides "nightly" LLVM packages. Unclear how widely this is used. It does appear to be actively maintained. See section on technical details towards end of page.
270+
271+
* Contact: Sylvestre Ledru
272+
* Last time @ChristianKuehnel talked to the Sylvestre, there were no usage metrics available.
273+
274+
# Google Workspace
275+
276+
[Google Workspace](https://workspace.google.com/) is in the LLVM foundation to manage mailing lists
277+
(e.g. [email protected]) and to collaborate on documents. This is not used in the LLVM community.

meeting_minutes/2021-02-11.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# initial meeting IWG workgroup
2+
3+
2020-02-11
4+
5+
## Agenda
6+
7+
see [issue #3](https://github.com/ChristianKuehnel/iwg-workspace/issues/3#issue-785813999)
8+
9+
## Participants
10+
11+
* Christian Kühnel
12+
* Philip Reames
13+
* Zhiqian Xia
14+
* Anja Gerbes
15+
* Cameron McInally
16+
* Anton Korobeynikov
17+
* Mikhail Goncharov
18+
* Mike Edwards
19+
* Tom Stellard
20+
* Mehdi Amini
21+
* Wei Wu
22+
* Shivam Gupta
23+
24+
## Minutes
25+
26+
### Getting to know
27+
28+
common themes on the motivation for joining the working group:
29+
30+
* improving infrastructure
31+
* improving buildbots
32+
* increasing code quality
33+
* improving documentation
34+
* improving testing
35+
36+
### discuss first work items [#5](https://github.com/ChristianKuehnel/iwg-workspace/issues/5)
37+
38+
### Initial work item: Document existing LLVM infrastructure
39+
40+
* unclear what we have
41+
* unclear who is maintaining it
42+
* unclear whom to contact if something is broken
43+
* this will help us define scope of our working group
44+
* Rationale:
45+
* gain trust of community before tackling larger topics
46+
* non-controversial topic
47+
* Focus on completeness of the list than on perfection/quality of documentation
48+
* Christian started a collection of the
49+
[existing infrastructure](infrastructure_survey.md),
50+
cf. [#9](https://github.com/ChristianKuehnel/iwg-workspace/issues/9)
51+
* Action item: agree how we want to review this type of documents (PRs vs.
52+
Phabricator), cf.
53+
[#18](https://github.com/ChristianKuehnel/iwg-workspace/issues/18)
54+
55+
### Discussions
56+
57+
* Other topics we could start working on:
58+
* who handles incoming infrastructure bug reports?
59+
* central point of contact? then route the requests?
60+
* What is our scope?
61+
* Primary mission: Community infrastructure and tooling
62+
* Maybe also: tools used by the foundation (and not the community)
63+
* Example: helping with the refresh of the llvm.org website
64+
* community and foundation might have different requirements (e.g. open vs.
65+
proprietary tools)
66+
* stakeholders are different!
67+
* we should be explicit in our work regarding stakeholders and their
68+
requirements
69+
* This working group should play an active role in defining the scope!
70+
* What is our role? Do we make decisions? Or recommendations?
71+
* We should make the recommendations and have the community decide.
72+
* How do we come to decisions on infrastructure then?
73+
* Follow what the community does already: RFCs,
74+
[decision making process](https://github.com/llvm/llvm-www/blob/main/proposals/LP0001-LLVMDecisionMaking.md)
75+
* If it impacts ths developer workflows: build community consensus
76+
* infrastructure only: this group should be able to decide
77+
* What is our budget? Our time? Money?
78+
* How much time can the working group members dedicate?
79+
* How much money can we spend?
80+
* corporate sponsors might be able to gather some donations for taking over
81+
some infrastructure
82+
* the foundation reserved budget for infrastructure work in 2021
83+
* some vendors donate working hours to the foundation (instead of money)
84+
* Focus of the group should be on organizing/managing and less on running
85+
the infrastructure ourselves.
86+
* Action item: Understand what our current infrastructure costs and how
87+
we can spend our money (and time) wisely, cf.
88+
[#19](https://github.com/ChristianKuehnel/iwg-workspace/issues/19).
89+
* How often do we want to meet?
90+
* long term: once a month
91+
* short term: bi-weekly
92+
* action item: Schedule next meeting in ~2 weeks, cf.
93+
[#20](https://github.com/ChristianKuehnel/iwg-workspace/issues/20).
94+
* How do we communicate
95+
* Slack? Discourse? Discord? IRC? Email?
96+
* Decision:
97+
* start with [email protected] mailing list
98+
* action item: discuss this in a future meeting, cf.
99+
[#21](https://github.com/ChristianKuehnel/iwg-workspace/issues/21).
100+
* action item: formalize this working group, cf.
101+
[#22](https://github.com/ChristianKuehnel/iwg-workspace/issues/22).
102+
* elect chair
103+
* define list of members
104+
* documentation of responsibilities (e.g. how long do people serve?) as
105+
guidelines for future members
106+
107+
### discuss how we want to work #4
108+
109+
postponed to next meeting
110+
111+
### other topics
112+
113+
see "Discussion" above

0 commit comments

Comments
 (0)