|
| 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. |
0 commit comments