Skip to content

Commit dc1499b

Browse files
committed
Improve Clang's getting involved document and make it more inclusive in wording.
Summary: Working with Meike and others to improve the wording in this document. Reviewers: klimek Subscribers: mcrosier, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D69351
1 parent bf86968 commit dc1499b

File tree

1 file changed

+49
-22
lines changed

1 file changed

+49
-22
lines changed

clang/www/get_involved.html

+49-22
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ <h2>Follow what's going on</h2>
5050
as well.</p>
5151

5252

53-
<p>The best way to talk with other developers on the project is through the <a
54-
href="http://lists.llvm.org/mailman/listinfo/cfe-dev">cfe-dev mailing
53+
<p>The most common way to talk with other developers on the project is through
54+
the <a href="http://lists.llvm.org/mailman/listinfo/cfe-dev">cfe-dev mailing
5555
list</a>. The clang mailing list is a very friendly place and we welcome
5656
newcomers. In addition to the cfe-dev list, a significant amount of design
5757
discussion takes place on the <a
@@ -69,31 +69,58 @@ <h2>Follow what's going on</h2>
6969

7070
<h2 id="criteria">Contributing Extensions to Clang</h2>
7171

72-
<p>Clang has always been designed as a platform for experimentation,
72+
<p>Clang is designed to support experimentation,
7373
allowing programmers to easily extend the compiler to support great
7474
new language features and tools. At some point, the authors of these
7575
extensions may propose that the extensions become a part of Clang
76-
itself, to benefit the whole Clang community. But not every idea--not
77-
even every great idea--should become part of Clang. Extensions
78-
(particularly language extensions) pose a long-term maintenance burden
79-
on Clang, and therefore the benefits of the extension must outweigh
80-
those costs. Hence, these are the seven criteria used to evaluate the
81-
merits of a proposed extension:</p>
76+
itself, to benefit the whole Clang community. However, extensions
77+
(particularly language extensions) have long-term maintenance costs
78+
for Clang. The benefits of the extension need to be evaluated against
79+
these costs. The Clang project uses the following criteria for this
80+
evaluation:</p>
8281

8382
<ol>
84-
<li>Evidence of a significant user community: This is based on a number of factors, including an actual, existing user community, the perceived likelihood that users would adopt such a feature if it were available, and any "trickle-down" effects that come from, e.g., a library adopting the feature and providing benefits to its users.</li>
85-
86-
<li>A specific need to reside within the Clang tree: There are some extensions that would be better expressed as a separate tool, and should remain as separate tools even if they end up being hosted as part of the LLVM umbrella project.</li>
87-
88-
<li>A complete specification: The specification must be sufficient to understand the design of the feature as well as interpret the meaning of specific examples. The specification should be detailed enough that another compiler vendor could conceivably implement the feature.</li>
89-
90-
<li>Representation within the appropriate governing organization: For extensions to a language governed by a standards committee (C, C++, OpenCL), the extension itself must have an active proposal and proponent within that committee and have a reasonable chance of acceptance. Clang should drive the standard, not diverge from it. This criterion does not apply to all extensions, since some extensions fall outside of the realm of the standards bodies.</li>
91-
92-
<li>A long-term support plan: Contributing a non-trivial extension to Clang implies a commitment to supporting that extension, improving the implementation and specification as Clang evolves. The capacity of the contributor to make that commitment is as important as the commitment itself.</li>
93-
94-
<li>A high-quality implementation: The implementation must fit well into Clang's architecture, follow LLVM's coding conventions, and meet Clang's quality standards, including high-quality diagnostics and rich AST representations. This is particularly important for language extensions, because users will learn how those extensions work through the behavior of the compiler.</li>
95-
96-
<li>A proper test suite: Extensive testing is crucial to ensure that the language extension is not broken by ongoing maintenance in Clang. The test suite should be complete enough that another compiler vendor could conceivably validate their implementation of the feature against it.</li>
83+
<li>Evidence of a significant user community: This is based on a number of
84+
factors, including an existing user community, the perceived likelihood that
85+
users would adopt such a feature if it were available, and any secondary
86+
effects that come from, e.g., a library adopting the feature and providing
87+
benefits to its users.</li>
88+
89+
<li>A specific need to reside within the Clang tree: There are some extensions
90+
that would be better expressed as a separate tool, and should remain as
91+
separate tools even if they end up being hosted as part of the LLVM umbrella
92+
project.</li>
93+
94+
<li>A specification: The specification must be sufficient to understand the
95+
design of the feature as well as interpret the meaning of specific examples.
96+
The specification should be detailed enough that another compiler vendor
97+
could implement the feature.</li>
98+
99+
<li>Representation within the appropriate governing organization: For
100+
extensions to a language governed by a standards committee (C, C++, OpenCL),
101+
the extension itself must have an active proposal and proponent within that
102+
committee and have a reasonable chance of acceptance. Clang should drive the
103+
standard, not diverge from it. This criterion does not apply to all
104+
extensions, since some extensions fall outside of the realm of the standards
105+
bodies.</li>
106+
107+
<li>A long-term support plan: increasingly large or complex extensions to
108+
Clang need matching commitments to supporting them over time, including
109+
improving their implementation and specification as Clang evolves. The
110+
capacity of the contributor to make that commitment is as important as the
111+
commitment itself.</li>
112+
113+
<li>A high-quality implementation: The implementation must fit well into
114+
Clang's architecture, follow LLVM's coding conventions, and meet Clang's
115+
quality standards, including diagnostics and complete AST
116+
representations. This is particularly important for language extensions,
117+
because users will learn how those extensions work through the behavior of the
118+
compiler.</li>
119+
120+
<li>A test suite: Extensive testing is crucial to ensure that the language
121+
extension is not broken by ongoing maintenance in Clang. The test suite
122+
should be complete enough that another compiler vendor could conceivably
123+
validate their implementation of the feature against it.</li>
97124
</ol>
98125

99126
</div>

0 commit comments

Comments
 (0)